qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-block] [PATCH 3/8] raw: Reflect read-only protocol layer


From: Eric Blake
Subject: [Qemu-block] [PATCH 3/8] raw: Reflect read-only protocol layer
Date: Mon, 6 Nov 2017 21:02:31 -0600

We forbid operations like a zero-length write zero or a discard
at the protocol layer when it is marked read-only, but those
same operations were succeeding at the format layer because the
raw format was not reflecting the underlying read-only status
to the block layer, which then took short circuit paths on
zero-length operations.

Signed-off-by: Eric Blake <address@hidden>
---
 block/raw-format.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/block/raw-format.c b/block/raw-format.c
index 830243a8e4..717b8eff65 100644
--- a/block/raw-format.c
+++ b/block/raw-format.c
@@ -418,6 +418,12 @@ static int raw_open(BlockDriverState *bs, QDict *options, 
int flags,
         bs->file->bs->supported_write_flags;
     bs->supported_zero_flags = (BDRV_REQ_FUA | BDRV_REQ_MAY_UNMAP) &
         bs->file->bs->supported_zero_flags;
+    if (bdrv_is_read_only(bs->file->bs)) {
+        ret = bdrv_set_read_only(bs, true, errp);
+        if (ret < 0) {
+            return ret;
+        }
+    }

     if (bs->probed && !bdrv_is_read_only(bs)) {
         fprintf(stderr,
-- 
2.13.6




reply via email to

[Prev in Thread] Current Thread [Next in Thread]