[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH v7 1/5] block: check for existing device IDs in
From: |
Jeff Cody |
Subject: |
Re: [Qemu-block] [PATCH v7 1/5] block: check for existing device IDs in external_snapshot_prepare() |
Date: |
Tue, 13 Oct 2015 18:45:24 -0400 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Mon, Oct 12, 2015 at 12:16:13PM +0300, Alberto Garcia wrote:
> The 'snapshot-node-name' parameter of blockdev-snapshot-sync allows
> setting the node name of the image that is going to be created.
>
> Before creating the image, external_snapshot_prepare() checks that the
> name is not already being used. The check is however incomplete since
> it only considers existing node names, but node names must not clash
> with device IDs either because they share the same namespace.
>
> If the user attempts to create a snapshot using the name of an
> existing device for the 'snapshot-node-name' parameter the operation
> will eventually fail, but only after the new image has been created.
>
> This patch replaces bdrv_find_node() with bdrv_lookup_bs() to extend
> the check to existing device IDs, and thus detect possible name
> clashes before the new image is created.
>
> Signed-off-by: Alberto Garcia <address@hidden>
> ---
> blockdev.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/blockdev.c b/blockdev.c
> index 4731843..0898d1f 100644
> --- a/blockdev.c
> +++ b/blockdev.c
> @@ -1570,8 +1570,9 @@ static void
> external_snapshot_prepare(BlkTransactionState *common,
> return;
> }
>
> - if (has_snapshot_node_name && bdrv_find_node(snapshot_node_name)) {
> - error_setg(errp, "New snapshot node name already existing");
> + if (has_snapshot_node_name &&
> + bdrv_lookup_bs(snapshot_node_name, snapshot_node_name, NULL)) {
> + error_setg(errp, "New snapshot node name already in use");
> return;
> }
>
> --
> 2.6.1
>
>
A downfall is we don't communicate back if the collision is with a
device name or a node name, but I guess that is relatively minor (and
probably not worth splitting this into two different calls to
bdrv_lookup_bs() to differentiate).
Reviewed-by: Jeff Cody <address@hidden>
- [Qemu-block] [PATCH v7 0/5] Add 'blockdev-snapshot' command, Alberto Garcia, 2015/10/12
- [Qemu-block] [PATCH v7 3/5] block: support passing 'backing': '' to 'blockdev-add', Alberto Garcia, 2015/10/12
- [Qemu-block] [PATCH v7 1/5] block: check for existing device IDs in external_snapshot_prepare(), Alberto Garcia, 2015/10/12
- [Qemu-block] [PATCH v7 4/5] block: add a 'blockdev-snapshot' QMP command, Alberto Garcia, 2015/10/12
- [Qemu-block] [PATCH v7 5/5] block: add tests for the 'blockdev-snapshot' command, Alberto Garcia, 2015/10/12
- [Qemu-block] [PATCH v7 2/5] block: rename BlockdevSnapshot to BlockdevSnapshotSync, Alberto Garcia, 2015/10/15