|
Luís Henriques |
a68882 |
From: Xiubo Li <xiubli@redhat.com>
|
|
Luís Henriques |
a68882 |
Date: Thu, 18 May 2023 09:47:23 +0800
|
|
Luís Henriques |
a68882 |
Subject: ceph: force updating the msg pointer in non-split case
|
|
Luís Henriques |
a68882 |
Git-commit: 4cafd0400bcb6187c0d4ab4d4b0229a89ac4f8c2
|
|
Luís Henriques |
a68882 |
Patch-mainline: v6.4-rc3
|
|
Luís Henriques |
a68882 |
References: bsc#1211804
|
|
Luís Henriques |
a68882 |
|
|
Luís Henriques |
a68882 |
When the MClientSnap reqeust's op is not CEPH_SNAP_OP_SPLIT the
|
|
Luís Henriques |
a68882 |
request may still contain a list of 'split_realms', and we need
|
|
Luís Henriques |
a68882 |
to skip it anyway. Or it will be parsed as a corrupt snaptrace.
|
|
Luís Henriques |
a68882 |
|
|
Luís Henriques |
a68882 |
Cc: stable@vger.kernel.org
|
|
Luís Henriques |
a68882 |
Link: https://tracker.ceph.com/issues/61200
|
|
Luís Henriques |
a68882 |
Reported-by: Frank Schilder <frans@dtu.dk>
|
|
Luís Henriques |
a68882 |
Signed-off-by: Xiubo Li <xiubli@redhat.com>
|
|
Luís Henriques |
a68882 |
Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
|
|
Luís Henriques |
a68882 |
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
|
|
Luís Henriques |
a68882 |
Acked-by: Luís Henriques <lhenriques@suse.de>
|
|
Luís Henriques |
a68882 |
|
|
Luís Henriques |
a68882 |
---
|
|
Luís Henriques |
a68882 |
fs/ceph/snap.c | 13 +++++++++++++
|
|
Luís Henriques |
a68882 |
1 file changed, 13 insertions(+)
|
|
Luís Henriques |
a68882 |
|
|
Luís Henriques |
a68882 |
diff --git a/fs/ceph/snap.c b/fs/ceph/snap.c
|
|
Luís Henriques |
a68882 |
index 87007203f130..0b236ebd989f 100644
|
|
Luís Henriques |
a68882 |
--- a/fs/ceph/snap.c
|
|
Luís Henriques |
a68882 |
+++ b/fs/ceph/snap.c
|
|
Luís Henriques |
a68882 |
@@ -1111,6 +1111,19 @@ void ceph_handle_snap(struct ceph_mds_client *mdsc,
|
|
Luís Henriques |
a68882 |
continue;
|
|
Luís Henriques |
a68882 |
adjust_snap_realm_parent(mdsc, child, realm->ino);
|
|
Luís Henriques |
a68882 |
}
|
|
Luís Henriques |
a68882 |
+ } else {
|
|
Luís Henriques |
a68882 |
+ /*
|
|
Luís Henriques |
a68882 |
+ * In the non-split case both 'num_split_inos' and
|
|
Luís Henriques |
a68882 |
+ * 'num_split_realms' should be 0, making this a no-op.
|
|
Luís Henriques |
a68882 |
+ * However the MDS happens to populate 'split_realms' list
|
|
Luís Henriques |
a68882 |
+ * in one of the UPDATE op cases by mistake.
|
|
Luís Henriques |
a68882 |
+ *
|
|
Luís Henriques |
a68882 |
+ * Skip both lists just in case to ensure that 'p' is
|
|
Luís Henriques |
a68882 |
+ * positioned at the start of realm info, as expected by
|
|
Luís Henriques |
a68882 |
+ * ceph_update_snap_trace().
|
|
Luís Henriques |
a68882 |
+ */
|
|
Luís Henriques |
a68882 |
+ p += sizeof(u64) * num_split_inos;
|
|
Luís Henriques |
a68882 |
+ p += sizeof(u64) * num_split_realms;
|
|
Luís Henriques |
a68882 |
}
|
|
Luís Henriques |
a68882 |
|
|
Luís Henriques |
a68882 |
/*
|
|
Luís Henriques |
a68882 |
|