[pve-devel] rbd: don't assert on writes to snapshots

Thomas Lamprecht t.lamprecht at proxmox.com
Wed Jul 17 07:26:48 CEST 2019


Hi,

On 7/16/19 10:50 PM, Kitt wrote:
> Hello.
> 
> Would it be possible to add this patch to the bionic and dingo kernels and
> fix the ceph snapshot hang issue?

Yes, it would. The commit[0] from the diff you linked, looks OK.

[0]: https://git.kernel.org/torvalds/c/b91a7bdca4439e286f26cdd6c15ed338e6a9fda2

> 
> Diff:
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/diff/drivers/block/rbd.c?id=b91a7bdca4439e286f26cdd6c15ed338e6a9fda2
> 
> diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
> index 99de7166bf89..e5009a34f9c2 100644
> --- a/drivers/block/rbd.c
> <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/block/rbd.c?id=a32e414325c2f0d430436e4708a33c756b082fd8>
> +++ b/drivers/block/rbd.c
> <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/block/rbd.c?id=b91a7bdca4439e286f26cdd6c15ed338e6a9fda2>
> @@ -3842,8 +3842,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
> 
> 5.2 kernel commit:
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b91a7bdca4439e286f26cdd6c15ed338e6a9fda2
> 
> Ceph bug notes: https://tracker.ceph.com/issues/39010
> 
> Proxmox bugzilla: https://bugzilla.proxmox.com/show_bug.cgi?id=1911
> 
> 
> Thank you.
> 

Much thanks for the hint here, and the detailed information you posted!

I'll queue this patch up for the next kernel release (probably early
next week).

cheers,
Thomas




More information about the pve-devel mailing list