qemu-img: Fix qemu-img can't create qcow image based on read-only image
PATCH v2 1/1 qemu-img: Fix qemu-img can't create qcow image based on read-only image
Commit 03cbdac7 "Disable fall-back to read-only when cannot open drive's file for read-write" result in read-only image can't be used as backed image in qemu-img.
--- qemu-img.c | 15 ++++++++++----- 1 files changed, 10 insertions(+), 5 deletions(-)
qemu-img.c +10 -5
@@ -188,11 +188,13 @@ static int read_password(char *buf, int buf_size)#endif static BlockDriverState *bdrv_new_open (const char *filename, -const char *fmt) +const char *fmt, +int readonly) {BlockDriverState *bs;BlockDriver *drv;char password[256 ]; +int flags =BRDV_O_FLAGS ; bs =bdrv_new ("" );if (!bs)
@@ -204,7 +206,10 @@ static BlockDriverState *bdrv_new_open(const char *filename, }else { drv =NULL ; } -if (bdrv_open2 (bs, filename,BRDV_O_FLAGS |BDRV_O_RDWR , drv) <0 ) { +if (!readonly) { + flags |=BDRV_O_RDWR ; + } +if (bdrv_open2 (bs, filename, flags, drv) <0 ) {error ("Could not open '%s'" , filename); }if (bdrv_is_encrypted (bs)) {
@@ -343,7 +348,7 @@ static int img_create(int argc, char **argv) } } - bs =bdrv_new_open (backing_file->value.s, fmt); + bs =bdrv_new_open (backing_file->value.s, fmt,1 );bdrv_get_geometry (bs, &size); size *=512 ;bdrv_delete (bs);
@@ -627,7 +632,7 @@ static int img_convert(int argc, char **argv) total_sectors =0 ;for (bs_i =0 ; bs_i < bs_n; bs_i++) { - bs[bs_i] =bdrv_new_open (argv[optind + bs_i], fmt); + bs[bs_i] =bdrv_new_open (argv[optind + bs_i], fmt,1 );if (!bs[bs_i])error ("Could not open '%s'" , argv[optind + bs_i]);bdrv_get_geometry (bs[bs_i], &bs_sectors);
@@ -685,7 +690,7 @@ static int img_convert(int argc, char **argv) } } - out_bs =bdrv_new_open (out_filename, out_fmt); + out_bs =bdrv_new_open (out_filename, out_fmt,0 ); bs_i =0 ; bs_offset =0 ;
Signature · 1 line
1.5.4.5
Am 29.01.2010 03:15, schrieb Sheng Yang:
Quoted 6 lines
Commit
03cbdac7"Disable fall-back to read-only when cannot open drive's file for read-write" result in read-only image can't be used as backed image in qemu-img.Cc Naphtali Sprei <[email protected]>Signed-off-by Sheng Yang <[email protected]>
Quoted 6 lines · Sheng Yang
Commit
03cbdac7"Disable fall-back to read-only when cannot open drive's file for read-write" result in read-only image can't be used as backed image in qemu-img.Cc Naphtali Sprei <[email protected]>Signed-off-by Sheng Yang <[email protected]>
Unfortunately, I see there are still problems with using the resulting images. Investigating it, will send patches.
Naphtali
Anthony Liguori
AppliedQuoted 7 lines · Sheng Yang
Commit
03cbdac7"Disable fall-back to read-only when cannot open drive's file for read-write" result in read-only image can't be used as backed image in qemu-img.Cc Naphtali Sprei<[email protected]>Signed-off-by Sheng Yang<[email protected]>
Applied. Thanks.
Regards,
Anthony Liguori
Quoted 63 lines
--- qemu-img.c | 15 ++++++++++----- 1 files changed, 10 insertions(+), 5 deletions(-)qemu-img.c +10
-5@@ -188,11 +188,13 @@ static int read_password(char *buf, int buf_size)#endif static BlockDriverState *bdrv_new_open (const char *filename, -const char *fmt) +const char *fmt, +int readonly) {BlockDriverState *bs;BlockDriver *drv;char password[256 ]; +int flags =BRDV_O_FLAGS ; bs =bdrv_new ("" );if (!bs)@@ -204,7 +206,10 @@ static BlockDriverState *bdrv_new_open(const char *filename, }else { drv =NULL ; } -if (bdrv_open2 (bs, filename,BRDV_O_FLAGS |BDRV_O_RDWR , drv)<0 ) { +if (!readonly) { + flags |=BDRV_O_RDWR ; + } +if (bdrv_open2 (bs, filename, flags, drv)<0 ) {error ("Could not open '%s'" , filename); }if (bdrv_is_encrypted (bs)) {@@ -343,7 +348,7 @@ static int img_create(int argc, char **argv) } } - bs =bdrv_new_open (backing_file->value.s, fmt); + bs =bdrv_new_open (backing_file->value.s, fmt,1 );bdrv_get_geometry (bs,&size); size *=512 ;bdrv_delete (bs);@@ -627,7 +632,7 @@ static int img_convert(int argc, char **argv) total_sectors =0 ;for (bs_i =0 ; bs_i< bs_n; bs_i++) { - bs[bs_i] =bdrv_new_open (argv[optind + bs_i], fmt); + bs[bs_i] =bdrv_new_open (argv[optind + bs_i], fmt,1 );if (!bs[bs_i])error ("Could not open '%s'" , argv[optind + bs_i]);bdrv_get_geometry (bs[bs_i],&bs_sectors);@@ -685,7 +690,7 @@ static int img_convert(int argc, char **argv) } } - out_bs =bdrv_new_open (out_filename, out_fmt); + out_bs =bdrv_new_open (out_filename, out_fmt,0 ); bs_i =0 ; bs_offset =0 ;
Quoted 10 lines · Anthony Liguori
Quoted 7 lines · Sheng Yang
Commit
03cbdac7"Disable fall-back to read-only when cannot open drive's file for read-write" result in read-only image can't be used as backed image in qemu-img.Cc Naphtali Sprei<[email protected]>Signed-off-by Sheng Yang<[email protected]>Applied. Thanks.
I've sent a patch that includes this patch, too ( http://lists.gnu.org/archive/html/qemu-devel/2010-02/msg00578.html ) Should I rebase my patch ?
Naphtali
Quoted 4 lines
Regards,
Anthony Liguori
Quoted 8 lines · Naphtali Sprei
Quoted 6 lines · Anthony Liguori
Quoted 4 lines · Sheng Yang
Commit
03cbdac7"Disable fall-back to read-only when cannot open drive's file for read-write" result in read-only image can't be used as backed image in qemu-img.
Quoted 9 lines
Quoted 6 lines
Quoted 4 lines
Cc Naphtali Sprei<[email protected]>Signed-off-by Sheng Yang<[email protected]>Applied. Thanks.
I've sent a patch that includes this patch, too ( http://lists.gnu.org/archive/html/qemu-devel/2010-02/msg00578.html ) Should I rebase my patch ?
Yes.
Regards,
Anthony Liguori
Quoted 10 lines
Naphtali
Quoted 4 lines
Regards,
Anthony Liguori