On Tue, 2023-02-28 at 20:55 +0800, xiubli@xxxxxxxxxx wrote: > From: Xiubo Li <xiubli@xxxxxxxxxx> > > If the xattr's value size is long enough the kernel will warn and > then will fail the xfstests test case. > > Just print part of the value string if it's too long. > > Cc: stable@xxxxxxxxxxxxxxx > URL: https://tracker.ceph.com/issues/58404 > Signed-off-by: Xiubo Li <xiubli@xxxxxxxxxx> > --- > fs/ceph/xattr.c | 13 +++++++++---- > 1 file changed, 9 insertions(+), 4 deletions(-) > > diff --git a/fs/ceph/xattr.c b/fs/ceph/xattr.c > index b10d459c2326..6638bb0ec10f 100644 > --- a/fs/ceph/xattr.c > +++ b/fs/ceph/xattr.c > @@ -561,6 +561,7 @@ static struct ceph_vxattr *ceph_match_vxattr(struct inode *inode, > return NULL; > } > > +#define XATTR_MAX_VAL 256 > static int __set_xattr(struct ceph_inode_info *ci, > const char *name, int name_len, > const char *val, int val_len, > @@ -654,8 +655,10 @@ static int __set_xattr(struct ceph_inode_info *ci, > dout("__set_xattr_val p=%p\n", p); > } > > - dout("__set_xattr_val added %llx.%llx xattr %p %.*s=%.*s\n", > - ceph_vinop(&ci->netfs.inode), xattr, name_len, name, val_len, val); > + dout("__set_xattr_val added %llx.%llx xattr %p %.*s=%.*s%s\n", > + ceph_vinop(&ci->netfs.inode), xattr, name_len, name, > + val_len > XATTR_MAX_VAL ? XATTR_MAX_VAL : val_len, val, min(val_len, XATTR_MAX_VAL), val,... > + val_len > XATTR_MAX_VAL ? "..." : ""); > > return 0; > } > @@ -681,8 +684,10 @@ static struct ceph_inode_xattr *__get_xattr(struct ceph_inode_info *ci, > else if (c > 0) > p = &(*p)->rb_right; > else { > - dout("__get_xattr %s: found %.*s\n", name, > - xattr->val_len, xattr->val); > + int len = xattr->val_len; > + dout("__get_xattr %s: found %.*s%s\n", name, > + len > XATTR_MAX_VAL ? XATTR_MAX_VAL : len, min(len, XATTR_MAX_VAL) > + xattr->val, len > XATTR_MAX_VAL ? "..." : ""); > return xattr; > } > } -- Jeff Layton <jlayton@xxxxxxxxxx>