Re: [PATCH] ceph: do not print the whole xattr value if it's too long

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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>




[Index of Archives]     [CEPH Users]     [Ceph Large]     [Ceph Dev]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux