All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v5 0/7] Drop in_use from BlockDriverState and enable point-in-time snapshot exporting over NBD
@ 2013-11-26  4:05 Fam Zheng
  2013-11-26  4:05 ` [Qemu-devel] [PATCH v5 1/7] qapi: Add BlockOperationType enum Fam Zheng
                   ` (6 more replies)
  0 siblings, 7 replies; 13+ messages in thread
From: Fam Zheng @ 2013-11-26  4:05 UTC (permalink / raw)
  To: qemu-devel; +Cc: kwolf, hbrock, rjones, imain, stefanha, pbonzini

This series adds for point-in-time snapshot NBD exporting based on
blockdev-backup (variant of drive-backup with existing device as target).

We get a thin point-in-time snapshot by COW mechanism of drive-backup, and
export it through built in NBD server. The steps are as below:

 1. (SHELL) qemu-img create -f qcow2 BACKUP.qcow2 <source size here>

    (Alternatively we can use -o backing_file=RUNNING-VM.img to omit explicitly
    providing the size by ourselves, but it's risky because RUNNING-VM.qcow2 is
    used r/w by guest. Whether or not setting backing file in the image file
    doesn't matter, as we are going to override the backing hd in the next
    step)

 2. (QMP) blockdev-add backing=source-drive file.driver=file file.filename=BACKUP.qcow2 id=target0 if=none driver=qcow2

    (where ide0-hd0 is the running BlockDriverState name for
    RUNNING-VM.img. This patch implements "backing=" option to override
    backing_hd for added drive)

 3. (QMP) blockdev-backup device=source-drive sync=none target=target0

    (this is the QMP command introduced by this series, which use a named
    device as target of drive-backup)

 4. (QMP) nbd-server-add device=target0

When image fleecing done:

 1. (QMP) block-job-complete device=ide0-hd0

 2. (HMP) drive_del target0

 3. (SHELL) rm BACKUP.qcow2

v5: Address reviewer comments:
    [01/07] qapi: Add BlockOperationType enum
            Add comments for types. (Eric)
            Remove "nbd-server-add", "passwd" and "set-io-throttle".
            
    [02/07] block: Introduce op_blockers to BlockDriverState
            Fix wording of commit message. (Kevin)
            Fix spacing and compiler error for assertion. (Kevin)
            Allow NULL errp in bdrv_op_is_blocked. (Stefan)
            
    [03/07] block: Replace in_use with operation blocker
            Separate "source" and "target" for backup operation check. (Kevin)
            
    [04/07] block: Add checks of blocker in block operations
            Removed checks for nbd, passwd and throttle. (Paolo)
            
    [05/07] block: Parse "backing" option to reference existing BDS
            Moved backing reference code to bdrv_open_backing_file. (Kevin)
            Unblock and free blocker in bdrv_close unconditionally. (Kevin)
            
    [06/07] qmp: add command 'blockdev-backup'
            Check op blocker before creating target in qmp_drive_backup.
            Fix "." in EOL. (Eric)
            Fix (Since 1.8). (Eric)
            Fix comment indent, remove "mode" in hmp-commands.hx. (Kevin)

    [07/07] block: Allow backup on referenced named BlockDriverState
            Only allow "source" on backing referenced BDS. (Kevin)

    Experimental for reviewers: the side by side diff against previous series:

        http://goo.gl/x6s2cI

v4: Dropping RFC, this series tries to address the crashing cases with an added
    safety mechanics.
    
    In the first half of series, replace the in_use flag with an operation
    blocker list, and block all operations on named backing hd:

    [01/07] qapi: Add BlockOperationType enum
    [02/07] block: Introduce op_blockers to BlockDriverState
    [03/07] block: Replace in_use with operation blocker
    [04/07] block: Add checks of blocker in block operations

    The second half enables point in time snapshot over NBD, with fixes from
    last revision:

    [05/07] block: Parse "backing" option to reference existing BDS
            Fix NULL dereference if device not found.
    [06/07] qmp: add command 'blockdev-backup'
            Moved some checks into backup_run. (Paolo)
    [07/07] block: Allow backup on referenced named BlockDriverState
            New. Removes one specific blocker on backing referenced BDS, so we
            can start a backup job on it.

Fam Zheng (7):
  qapi: Add BlockOperationType enum
  block: Introduce op_blockers to BlockDriverState
  block: Replace in_use with operation blocker
  block: Add checks of blocker in block operations
  block: Parse "backing" option to reference existing BDS
  qmp: add command 'blockdev-backup'
  block: Allow backup on referenced named BlockDriverState

 block-migration.c               |   8 ++-
 block.c                         | 120 +++++++++++++++++++++++++++++++++++-----
 block/backup.c                  |  21 +++++++
 block/mirror.c                  |   2 +-
 blockdev.c                      |  93 +++++++++++++++++++++++++++----
 blockjob.c                      |  12 ++--
 hw/block/dataplane/virtio-blk.c |  16 ++++--
 include/block/block.h           |  11 +++-
 include/block/block_int.h       |   9 ++-
 include/block/blockjob.h        |   3 +
 qapi-schema.json                |  98 ++++++++++++++++++++++++++++++++
 qmp-commands.hx                 |  44 +++++++++++++++
 12 files changed, 395 insertions(+), 42 deletions(-)

-- 
1.8.4.2

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2013-11-28  3:39 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-26  4:05 [Qemu-devel] [PATCH v5 0/7] Drop in_use from BlockDriverState and enable point-in-time snapshot exporting over NBD Fam Zheng
2013-11-26  4:05 ` [Qemu-devel] [PATCH v5 1/7] qapi: Add BlockOperationType enum Fam Zheng
2013-11-26 16:21   ` Paolo Bonzini
2013-11-26  4:05 ` [Qemu-devel] [PATCH v5 2/7] block: Introduce op_blockers to BlockDriverState Fam Zheng
2013-11-26  4:05 ` [Qemu-devel] [PATCH v5 3/7] block: Replace in_use with operation blocker Fam Zheng
2013-11-26  4:05 ` [Qemu-devel] [PATCH v5 4/7] block: Add checks of blocker in block operations Fam Zheng
2013-11-26 16:13   ` Paolo Bonzini
2013-11-28  3:39     ` Fam Zheng
2013-11-26  4:05 ` [Qemu-devel] [PATCH v5 5/7] block: Parse "backing" option to reference existing BDS Fam Zheng
2013-11-26 16:18   ` Paolo Bonzini
2013-11-27  0:56     ` Fam Zheng
2013-11-26  4:05 ` [Qemu-devel] [PATCH v5 6/7] qmp: add command 'blockdev-backup' Fam Zheng
2013-11-26  4:05 ` [Qemu-devel] [PATCH v5 7/7] block: Allow backup on referenced named BlockDriverState Fam Zheng

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.