Messages in this thread | | | Subject | Re: [PATCH] ceph: fix mdsmap decode for v >= 17 | From | Xiubo Li <> | Date | Fri, 28 Oct 2022 09:28:37 +0800 |
| |
On 27/10/2022 23:28, Luís Henriques wrote: > Commit d93231a6bc8a ("ceph: prevent a client from exceeding the MDS > maximum xattr size") was merged before the corresponding MDS-side changes > have been merged. With the introduction of 'bal_rank_mask' in the mdsmap, > the decoding of maps with v>=17 is now incorrect. Fix this by skipping > the 'bal_rank_mask' string decoding. > > Fixes: d93231a6bc8a ("ceph: prevent a client from exceeding the MDS maximum xattr size") > Signed-off-by: Luís Henriques <lhenriques@suse.de> > --- > Hi! > > This inconsistency was introduced by ceph PR #43284; I think that, before > picking this patch, we need to get PR #46357 merged to avoid new > problems. > > Cheers, > -- > Luís > > fs/ceph/mdsmap.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/fs/ceph/mdsmap.c b/fs/ceph/mdsmap.c > index 3fbabc98e1f7..fe4f1a6c3465 100644 > --- a/fs/ceph/mdsmap.c > +++ b/fs/ceph/mdsmap.c > @@ -379,6 +379,8 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end, bool msgr2) > ceph_decode_skip_8(p, end, bad_ext); > /* required_client_features */ > ceph_decode_skip_set(p, end, 64, bad_ext); > + /* bal_rank_mask */ > + ceph_decode_skip_string(p, end, bad_ext); > ceph_decode_64_safe(p, end, m->m_max_xattr_size, bad_ext); > } else { > /* This forces the usage of the (sync) SETXATTR Op */ > Luis,
Because the ceph PR #43284 will break kclient here and your xattr size patch got merged long time ago, we should fix it in ceph. More detail please see my comments in:
https://github.com/ceph/ceph/pull/46357#issuecomment-1294290492
Thanks!
- Xiubo
| |