backport: rbd: don't assert on writes to snapshots
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
parent
6c6eb8b0dd
commit
225d38f866
@ -0,0 +1,41 @@
|
||||
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
|
Loading…
Reference in New Issue
Block a user