diff --git a/block.c b/block.c
index fa11e3a..6734e66 100644
--- a/block.c
+++ b/block.c
@@ -612,8 +612,9 @@ static int bdrv_open_common(BlockDriverState *bs, const char *filename,
         ret = drv->bdrv_file_open(bs, filename, open_flags);
     } else {
         ret = bdrv_file_open(&bs->file, filename, open_flags);
+        bs->open_flags = bs->file->open_flags;
         if (ret >= 0) {
-            ret = drv->bdrv_open(bs, open_flags);
+            ret = drv->bdrv_open(bs, bs->file->open_flags);
         }
     }
 
