diff --git a/block.c b/block.c
index a1d2433..5055975 100644
--- a/block.c
+++ b/block.c
@@ -616,6 +616,7 @@ static int bdrv_open_common(BlockDriverState *bs, const char *filename,
     } else {
         ret = bdrv_file_open(&bs->file, filename, bs->open_flags);
         if (ret >= 0) {
+            bs->open_flags = bs->file->open_flags;
             ret = drv->bdrv_open(bs, bs->open_flags);
         }
     }
