225d38f866
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
42 lines
1.5 KiB
Diff
42 lines
1.5 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Ilya Dryomov <idryomov@gmail.com>
|
|
Date: Fri, 3 May 2019 17:27:03 +0200
|
|
Subject: [PATCH] rbd: don't assert on writes to snapshots
|
|
|
|
The check added in commit 721c7fc701c7 ("block: fail op_is_write()
|
|
requests to read-only partitions") was lifted in commit a32e236eb93e
|
|
("Partially revert "block: fail op_is_write() requests to read-only
|
|
partitions""). Basic things like user triggered writes and discards
|
|
are still caught, but internal kernel users can submit anything. In
|
|
particular, ext4 will attempt to write to the superblock if it detects
|
|
errors in the filesystem, even if the filesystem is mounted read-only
|
|
on a read-only partition.
|
|
|
|
The assert is overkill regardless.
|
|
|
|
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
|
|
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
|
---
|
|
drivers/block/rbd.c | 8 ++++++--
|
|
1 file changed, 6 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
|
|
index 1e92b61d0bd5..339cdd4062bb 100644
|
|
--- a/drivers/block/rbd.c
|
|
+++ b/drivers/block/rbd.c
|
|
@@ -3664,8 +3664,12 @@ static void rbd_queue_workfn(struct work_struct *work)
|
|
goto err_rq;
|
|
}
|
|
|
|
- rbd_assert(op_type == OBJ_OP_READ ||
|
|
- rbd_dev->spec->snap_id == CEPH_NOSNAP);
|
|
+ if (op_type != OBJ_OP_READ && rbd_dev->spec->snap_id != CEPH_NOSNAP) {
|
|
+ rbd_warn(rbd_dev, "%s on read-only snapshot",
|
|
+ obj_op_name(op_type));
|
|
+ result = -EIO;
|
|
+ goto err;
|
|
+ }
|
|
|
|
/*
|
|
* Quit early if the mapped snapshot no longer exists. It's
|