block: Fix bdrv_commit

When reopening the image, don't guess the driver, but use the same driver as
was used before. This is important if the format=... option was used for that
image.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Kevin Wolf 2010-05-06 16:34:56 +02:00
parent 209930818b
commit c33491978c
1 changed files with 3 additions and 3 deletions

View File

@ -701,12 +701,12 @@ int bdrv_commit(BlockDriverState *bs)
bdrv_delete(bs->backing_hd); bdrv_delete(bs->backing_hd);
bs->backing_hd = NULL; bs->backing_hd = NULL;
bs_rw = bdrv_new(""); bs_rw = bdrv_new("");
rw_ret = bdrv_open(bs_rw, filename, open_flags | BDRV_O_RDWR, NULL); rw_ret = bdrv_open(bs_rw, filename, open_flags | BDRV_O_RDWR, drv);
if (rw_ret < 0) { if (rw_ret < 0) {
bdrv_delete(bs_rw); bdrv_delete(bs_rw);
/* try to re-open read-only */ /* try to re-open read-only */
bs_ro = bdrv_new(""); bs_ro = bdrv_new("");
ret = bdrv_open(bs_ro, filename, open_flags & ~BDRV_O_RDWR, NULL); ret = bdrv_open(bs_ro, filename, open_flags & ~BDRV_O_RDWR, drv);
if (ret < 0) { if (ret < 0) {
bdrv_delete(bs_ro); bdrv_delete(bs_ro);
/* drive not functional anymore */ /* drive not functional anymore */
@ -758,7 +758,7 @@ ro_cleanup:
bdrv_delete(bs->backing_hd); bdrv_delete(bs->backing_hd);
bs->backing_hd = NULL; bs->backing_hd = NULL;
bs_ro = bdrv_new(""); bs_ro = bdrv_new("");
ret = bdrv_open(bs_ro, filename, open_flags & ~BDRV_O_RDWR, NULL); ret = bdrv_open(bs_ro, filename, open_flags & ~BDRV_O_RDWR, drv);
if (ret < 0) { if (ret < 0) {
bdrv_delete(bs_ro); bdrv_delete(bs_ro);
/* drive not functional anymore */ /* drive not functional anymore */