This following series implements cloning for LVM and disk backends. Most
of the functionality is already here, it just needed some reorganization
to be accessible for every backend.
I verified the following scenarios produced a bootable image:
- Clone within a disk pool
- Clone within a logical pool
- Clone a raw file to a disk pool
- Clone a disk pool to a logical pool
Cole Robinson (9):
storage: Refactor FS backend 'create' function choosing.
storage: Always assume we are tracking alloc progress in FS backend
storage: Move most of the FS creation functions to common backend.
storage: cleanup: do away with 'createFile'
storage: Break out actual raw cloning to separate function.
storage: Implement 'CreateBlockFrom' helper.
storage: Don't try sparse detection if writing to block device.
storage: Implement CreateVolFrom for logical and disk backend.
storage: Fix deadlock when cloning across pools.
src/storage_backend.c | 471 +++++++++++++++++++++++++++++++++++++++++
src/storage_backend.h | 15 ++
src/storage_backend_disk.c | 15 ++
src/storage_backend_fs.c | 378 ++-------------------------------
src/storage_backend_logical.c | 17 ++
src/storage_driver.c | 6 +-
6 files changed, 540 insertions(+), 362 deletions(-)