Skip to content

Commit

Permalink
block: Create proper size file for disk mirror
Browse files Browse the repository at this point in the history
The qmp monitor command to mirror a disk was passing -1 for size
along with the disk's backing file. This size of the resulting disk
is the size of the backing file, which is incorrect if the disk
has been resized. Therefore we should always pass in the size of
the current disk.

Signed-off-by: Vishvananda Ishaya <vishvananda@gmail.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  • Loading branch information
vishvananda authored and kevmw committed Jan 25, 2013
1 parent a262302 commit 8689907
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions blockdev.c
Expand Up @@ -1282,11 +1282,11 @@ void qmp_drive_mirror(const char *device, const char *target,
return;
}

bdrv_get_geometry(bs, &size);
size *= 512;
if (sync == MIRROR_SYNC_MODE_FULL && mode != NEW_IMAGE_MODE_EXISTING) {
/* create new image w/o backing file */
assert(format && drv);
bdrv_get_geometry(bs, &size);
size *= 512;
bdrv_img_create(target, format,
NULL, NULL, NULL, size, flags, &local_err);
} else {
Expand All @@ -1299,7 +1299,7 @@ void qmp_drive_mirror(const char *device, const char *target,
bdrv_img_create(target, format,
source->filename,
source->drv->format_name,
NULL, -1, flags, &local_err);
NULL, size, flags, &local_err);
break;
default:
abort();
Expand Down

0 comments on commit 8689907

Please sign in to comment.