* [PATCH v2 0/1] ceph: add getvxattr op support @ 2022-01-17 3:47 Milind Changire 2022-01-17 3:47 ` [PATCH v2 1/1] ceph: add getvxattr op Milind Changire 0 siblings, 1 reply; 5+ messages in thread From: Milind Changire @ 2022-01-17 3:47 UTC (permalink / raw) To: Jeff Layton, Ilya Dryomov, ceph-devel; +Cc: Milind Changire Adds support for the new getvxattr op to fetch ceph virtual xattrs. Milind Changire (1): ceph: add getvxattr op fs/ceph/inode.c | 51 ++++++++++++++++++++++++++++++++++++ fs/ceph/mds_client.c | 27 ++++++++++++++++++- fs/ceph/mds_client.h | 12 ++++++++- fs/ceph/strings.c | 1 + fs/ceph/super.h | 1 + fs/ceph/xattr.c | 33 +++++++++++++++++++++++ include/linux/ceph/ceph_fs.h | 1 + 7 files changed, 124 insertions(+), 2 deletions(-) -- 2.31.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2 1/1] ceph: add getvxattr op 2022-01-17 3:47 [PATCH v2 0/1] ceph: add getvxattr op support Milind Changire @ 2022-01-17 3:47 ` Milind Changire 2022-01-17 13:58 ` kernel test robot 0 siblings, 1 reply; 5+ messages in thread From: Milind Changire @ 2022-01-17 3:47 UTC (permalink / raw) To: Jeff Layton, Ilya Dryomov, ceph-devel; +Cc: Milind Changire Problem: Directory vxattrs like ceph.dir.pin* and ceph.dir.layout* may not be propagated to the client as frequently to keep them updated. This creates vxattr availability problems. Solution: Adds new getvxattr op to fetch ceph.dir.pin*, ceph.dir.layout* and ceph.file.layout* vxattrs. If the entire layout for a dir or a file is being set, then it is expected that the layout be set in standard JSON format. Individual field value retrieval is not wrapped in JSON. The JSON format also applies while setting the vxattr if the entire layout is being set in one go. As a temporary measure, setting a vxattr can also be done in the old format. The old format will be deprecated in the future. URL: https://tracker.ceph.com/issues/51062 Signed-off-by: Milind Changire <mchangir@redhat.com> --- fs/ceph/inode.c | 51 ++++++++++++++++++++++++++++++++++++ fs/ceph/mds_client.c | 27 ++++++++++++++++++- fs/ceph/mds_client.h | 12 ++++++++- fs/ceph/strings.c | 1 + fs/ceph/super.h | 1 + fs/ceph/xattr.c | 33 +++++++++++++++++++++++ include/linux/ceph/ceph_fs.h | 1 + 7 files changed, 124 insertions(+), 2 deletions(-) diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index e3322fcb2e8d..b63746a7a0e0 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -2291,6 +2291,57 @@ int __ceph_do_getattr(struct inode *inode, struct page *locked_page, return err; } +int ceph_do_getvxattr(struct inode *inode, const char *name, void *value, + size_t size) +{ + struct ceph_fs_client *fsc = ceph_sb_to_client(inode->i_sb); + struct ceph_mds_client *mdsc = fsc->mdsc; + struct ceph_mds_request *req; + int mode = USE_AUTH_MDS; + int err; + char *xattr_value; + size_t xattr_value_len; + + req = ceph_mdsc_create_request(mdsc, CEPH_MDS_OP_GETVXATTR, mode); + if (IS_ERR(req)) { + err = -ENOMEM; + goto out; + } + + req->r_path2 = kstrdup(name, GFP_NOFS); + if (!req->r_path2) { + err = -ENOMEM; + goto put; + } + + ihold(inode); + req->r_inode = inode; + err = ceph_mdsc_do_request(mdsc, NULL, req); + if (err < 0) + goto put; + + xattr_value = req->r_reply_info.xattr_info.xattr_value; + xattr_value_len = req->r_reply_info.xattr_info.xattr_value_len; + + dout("do_getvxattr xattr_value_len:%u, size:%u\n", xattr_value_len, size); + + err = xattr_value_len; + if (size == 0) + goto put; + + if (xattr_value_len > size) { + err = -ERANGE; + goto put; + } + + memcpy(value, xattr_value, xattr_value_len); +put: + ceph_mdsc_put_request(req); +out: + dout("do_getvxattr result=%d\n", err); + return err; +} + /* * Check inode permissions. We verify we have a valid value for diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index c30eefc0ac19..a5eafc71d976 100644 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c @@ -555,6 +555,29 @@ static int parse_reply_info_create(void **p, void *end, return -EIO; } +static int parse_reply_info_getvxattr(void **p, void *end, + struct ceph_mds_reply_info_parsed *info, + u64 features) +{ + u8 struct_v, struct_compat; + u32 struct_len; + u32 value_len; + + ceph_decode_8_safe(p, end, struct_v, bad); + ceph_decode_8_safe(p, end, struct_compat, bad); + ceph_decode_32_safe(p, end, struct_len, bad); + ceph_decode_32_safe(p, end, value_len, bad); + + if (value_len == end - *p) { + info->xattr_info.xattr_value = *p; + info->xattr_info.xattr_value_len = end - *p; + *p = end; + return info->xattr_info.xattr_value_len; + } +bad: + return -EIO; +} + /* * parse extra results */ @@ -570,6 +593,8 @@ static int parse_reply_info_extra(void **p, void *end, return parse_reply_info_readdir(p, end, info, features); else if (op == CEPH_MDS_OP_CREATE) return parse_reply_info_create(p, end, info, features, s); + else if (op == CEPH_MDS_OP_GETVXATTR) + return parse_reply_info_getvxattr(p, end, info, features); else return -EIO; } @@ -615,7 +640,7 @@ static int parse_reply_info(struct ceph_mds_session *s, struct ceph_msg *msg, if (p != end) goto bad; - return 0; + return err; bad: err = -EIO; diff --git a/fs/ceph/mds_client.h b/fs/ceph/mds_client.h index 97c7f7bfa55f..f2a8e5af3c2e 100644 --- a/fs/ceph/mds_client.h +++ b/fs/ceph/mds_client.h @@ -29,8 +29,10 @@ enum ceph_feature_type { CEPHFS_FEATURE_MULTI_RECONNECT, CEPHFS_FEATURE_DELEG_INO, CEPHFS_FEATURE_METRIC_COLLECT, + CEPHFS_FEATURE_ALTERNATE_NAME, + CEPHFS_FEATURE_GETVXATTR, - CEPHFS_FEATURE_MAX = CEPHFS_FEATURE_METRIC_COLLECT, + CEPHFS_FEATURE_MAX = CEPHFS_FEATURE_GETVXATTR, }; /* @@ -45,6 +47,8 @@ enum ceph_feature_type { CEPHFS_FEATURE_MULTI_RECONNECT, \ CEPHFS_FEATURE_DELEG_INO, \ CEPHFS_FEATURE_METRIC_COLLECT, \ + CEPHFS_FEATURE_ALTERNATE_NAME, \ + CEPHFS_FEATURE_GETVXATTR, \ \ CEPHFS_FEATURE_MAX, \ } @@ -100,6 +104,11 @@ struct ceph_mds_reply_dir_entry { loff_t offset; }; +struct ceph_mds_reply_xattr { + char *xattr_value; + size_t xattr_value_len; +}; + /* * parsed info about an mds reply, including information about * either: 1) the target inode and/or its parent directory and dentry, @@ -115,6 +124,7 @@ struct ceph_mds_reply_info_parsed { char *dname; u32 dname_len; struct ceph_mds_reply_lease *dlease; + struct ceph_mds_reply_xattr xattr_info; /* extra */ union { diff --git a/fs/ceph/strings.c b/fs/ceph/strings.c index 573bb9556fb5..e36e8948e728 100644 --- a/fs/ceph/strings.c +++ b/fs/ceph/strings.c @@ -60,6 +60,7 @@ const char *ceph_mds_op_name(int op) case CEPH_MDS_OP_LOOKUPINO: return "lookupino"; case CEPH_MDS_OP_LOOKUPNAME: return "lookupname"; case CEPH_MDS_OP_GETATTR: return "getattr"; + case CEPH_MDS_OP_GETVXATTR: return "getvxattr"; case CEPH_MDS_OP_SETXATTR: return "setxattr"; case CEPH_MDS_OP_SETATTR: return "setattr"; case CEPH_MDS_OP_RMXATTR: return "rmxattr"; diff --git a/fs/ceph/super.h b/fs/ceph/super.h index ac331aa07cfa..a627fa69668e 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -1043,6 +1043,7 @@ static inline bool ceph_inode_is_shutdown(struct inode *inode) /* xattr.c */ int __ceph_setxattr(struct inode *, const char *, const void *, size_t, int); +int ceph_do_getvxattr(struct inode *inode, const char *name, void *value, size_t size); ssize_t __ceph_getxattr(struct inode *, const char *, void *, size_t); extern ssize_t ceph_listxattr(struct dentry *, char *, size_t); extern struct ceph_buffer *__ceph_build_xattrs_blob(struct ceph_inode_info *ci); diff --git a/fs/ceph/xattr.c b/fs/ceph/xattr.c index fcf7dfdecf96..da26331ea3df 100644 --- a/fs/ceph/xattr.c +++ b/fs/ceph/xattr.c @@ -918,6 +918,30 @@ static inline int __get_request_mask(struct inode *in) { return mask; } +/* check if the entire cluster supports the given feature */ +static inline bool ceph_cluster_has_feature(struct inode *inode, int feature_bit) +{ + int64_t i; + struct ceph_fs_client *fsc = ceph_inode_to_client(inode); + struct ceph_mds_session **sessions = fsc->mdsc->sessions; + int64_t num_sessions = atomic_read(&fsc->mdsc->num_sessions); + + if (fsc->mdsc->stopping) + return false; + + if (!sessions) + return false; + + for (i = 0; i < num_sessions; i++) { + struct ceph_mds_session *session = sessions[i]; + if (!session) + return false; + if (!test_bit(feature_bit, &session->s_features)) + return false; + } + return true; +} + ssize_t __ceph_getxattr(struct inode *inode, const char *name, void *value, size_t size) { @@ -927,6 +951,15 @@ ssize_t __ceph_getxattr(struct inode *inode, const char *name, void *value, int req_mask; ssize_t err; + if (ceph_cluster_has_feature(inode, CEPHFS_FEATURE_GETVXATTR)) { + err = ceph_do_getvxattr(inode, name, value, size); + /* if cluster doesn't support attribute, we try to service it + * locally + */ + if (err != -ENODATA) + return err; + } + /* let's see if a virtual xattr was requested */ vxattr = ceph_match_vxattr(inode, name); if (vxattr) { diff --git a/include/linux/ceph/ceph_fs.h b/include/linux/ceph/ceph_fs.h index 7ad6c3d0db7d..66db21ac5f0c 100644 --- a/include/linux/ceph/ceph_fs.h +++ b/include/linux/ceph/ceph_fs.h @@ -328,6 +328,7 @@ enum { CEPH_MDS_OP_LOOKUPPARENT = 0x00103, CEPH_MDS_OP_LOOKUPINO = 0x00104, CEPH_MDS_OP_LOOKUPNAME = 0x00105, + CEPH_MDS_OP_GETVXATTR = 0x00106, CEPH_MDS_OP_SETXATTR = 0x01105, CEPH_MDS_OP_RMXATTR = 0x01106, -- 2.31.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2 1/1] ceph: add getvxattr op 2022-01-17 3:47 ` [PATCH v2 1/1] ceph: add getvxattr op Milind Changire @ 2022-01-17 13:58 ` kernel test robot 0 siblings, 0 replies; 5+ messages in thread From: kernel test robot @ 2022-01-17 13:58 UTC (permalink / raw) To: Milind Changire; +Cc: llvm, kbuild-all Hi Milind, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on ceph-client/for-linus] [also build test WARNING on v5.16 next-20220117] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Milind-Changire/ceph-add-getvxattr-op-support/20220117-114947 base: https://github.com/ceph/ceph-client.git for-linus config: x86_64-randconfig-a006-20220117 (https://download.01.org/0day-ci/archive/20220117/202201171943.GKWl1yqQ-lkp@intel.com/config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 5f782d25a742302d25ef3c8b84b54f7483c2deb9) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/0day-ci/linux/commit/ed42f71060fc0c0c0c43a582f0bb817713836ddb git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Milind-Changire/ceph-add-getvxattr-op-support/20220117-114947 git checkout ed42f71060fc0c0c0c43a582f0bb817713836ddb # save the config file to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash fs/ceph/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All warnings (new ones prefixed by >>): >> fs/ceph/inode.c:2326:53: warning: format specifies type 'unsigned int' but the argument has type 'size_t' (aka 'unsigned long') [-Wformat] dout("do_getvxattr xattr_value_len:%u, size:%u\n", xattr_value_len, size); ~~ ^~~~~~~~~~~~~~~ %lu include/linux/ceph/ceph_debug.h:35:45: note: expanded from macro 'dout' # define dout(fmt, ...) pr_debug(" " fmt, ##__VA_ARGS__) ~~~ ^~~~~~~~~~~ include/linux/printk.h:580:38: note: expanded from macro 'pr_debug' no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__) ~~~ ^~~~~~~~~~~ include/linux/printk.h:132:17: note: expanded from macro 'no_printk' printk(fmt, ##__VA_ARGS__); \ ~~~ ^~~~~~~~~~~ include/linux/printk.h:450:60: note: expanded from macro 'printk' #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__) ~~~ ^~~~~~~~~~~ include/linux/printk.h:422:19: note: expanded from macro 'printk_index_wrap' _p_func(_fmt, ##__VA_ARGS__); \ ~~~~ ^~~~~~~~~~~ fs/ceph/inode.c:2326:70: warning: format specifies type 'unsigned int' but the argument has type 'size_t' (aka 'unsigned long') [-Wformat] dout("do_getvxattr xattr_value_len:%u, size:%u\n", xattr_value_len, size); ~~ ^~~~ %lu include/linux/ceph/ceph_debug.h:35:45: note: expanded from macro 'dout' # define dout(fmt, ...) pr_debug(" " fmt, ##__VA_ARGS__) ~~~ ^~~~~~~~~~~ include/linux/printk.h:580:38: note: expanded from macro 'pr_debug' no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__) ~~~ ^~~~~~~~~~~ include/linux/printk.h:132:17: note: expanded from macro 'no_printk' printk(fmt, ##__VA_ARGS__); \ ~~~ ^~~~~~~~~~~ include/linux/printk.h:450:60: note: expanded from macro 'printk' #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__) ~~~ ^~~~~~~~~~~ include/linux/printk.h:422:19: note: expanded from macro 'printk_index_wrap' _p_func(_fmt, ##__VA_ARGS__); \ ~~~~ ^~~~~~~~~~~ 2 warnings generated. vim +2326 fs/ceph/inode.c 2293 2294 int ceph_do_getvxattr(struct inode *inode, const char *name, void *value, 2295 size_t size) 2296 { 2297 struct ceph_fs_client *fsc = ceph_sb_to_client(inode->i_sb); 2298 struct ceph_mds_client *mdsc = fsc->mdsc; 2299 struct ceph_mds_request *req; 2300 int mode = USE_AUTH_MDS; 2301 int err; 2302 char *xattr_value; 2303 size_t xattr_value_len; 2304 2305 req = ceph_mdsc_create_request(mdsc, CEPH_MDS_OP_GETVXATTR, mode); 2306 if (IS_ERR(req)) { 2307 err = -ENOMEM; 2308 goto out; 2309 } 2310 2311 req->r_path2 = kstrdup(name, GFP_NOFS); 2312 if (!req->r_path2) { 2313 err = -ENOMEM; 2314 goto put; 2315 } 2316 2317 ihold(inode); 2318 req->r_inode = inode; 2319 err = ceph_mdsc_do_request(mdsc, NULL, req); 2320 if (err < 0) 2321 goto put; 2322 2323 xattr_value = req->r_reply_info.xattr_info.xattr_value; 2324 xattr_value_len = req->r_reply_info.xattr_info.xattr_value_len; 2325 > 2326 dout("do_getvxattr xattr_value_len:%u, size:%u\n", xattr_value_len, size); 2327 2328 err = xattr_value_len; 2329 if (size == 0) 2330 goto put; 2331 2332 if (xattr_value_len > size) { 2333 err = -ERANGE; 2334 goto put; 2335 } 2336 2337 memcpy(value, xattr_value, xattr_value_len); 2338 put: 2339 ceph_mdsc_put_request(req); 2340 out: 2341 dout("do_getvxattr result=%d\n", err); 2342 return err; 2343 } 2344 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2 1/1] ceph: add getvxattr op @ 2022-01-17 13:58 ` kernel test robot 0 siblings, 0 replies; 5+ messages in thread From: kernel test robot @ 2022-01-17 13:58 UTC (permalink / raw) To: kbuild-all [-- Attachment #1: Type: text/plain, Size: 6074 bytes --] Hi Milind, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on ceph-client/for-linus] [also build test WARNING on v5.16 next-20220117] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Milind-Changire/ceph-add-getvxattr-op-support/20220117-114947 base: https://github.com/ceph/ceph-client.git for-linus config: x86_64-randconfig-a006-20220117 (https://download.01.org/0day-ci/archive/20220117/202201171943.GKWl1yqQ-lkp(a)intel.com/config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 5f782d25a742302d25ef3c8b84b54f7483c2deb9) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/0day-ci/linux/commit/ed42f71060fc0c0c0c43a582f0bb817713836ddb git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Milind-Changire/ceph-add-getvxattr-op-support/20220117-114947 git checkout ed42f71060fc0c0c0c43a582f0bb817713836ddb # save the config file to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash fs/ceph/ If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All warnings (new ones prefixed by >>): >> fs/ceph/inode.c:2326:53: warning: format specifies type 'unsigned int' but the argument has type 'size_t' (aka 'unsigned long') [-Wformat] dout("do_getvxattr xattr_value_len:%u, size:%u\n", xattr_value_len, size); ~~ ^~~~~~~~~~~~~~~ %lu include/linux/ceph/ceph_debug.h:35:45: note: expanded from macro 'dout' # define dout(fmt, ...) pr_debug(" " fmt, ##__VA_ARGS__) ~~~ ^~~~~~~~~~~ include/linux/printk.h:580:38: note: expanded from macro 'pr_debug' no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__) ~~~ ^~~~~~~~~~~ include/linux/printk.h:132:17: note: expanded from macro 'no_printk' printk(fmt, ##__VA_ARGS__); \ ~~~ ^~~~~~~~~~~ include/linux/printk.h:450:60: note: expanded from macro 'printk' #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__) ~~~ ^~~~~~~~~~~ include/linux/printk.h:422:19: note: expanded from macro 'printk_index_wrap' _p_func(_fmt, ##__VA_ARGS__); \ ~~~~ ^~~~~~~~~~~ fs/ceph/inode.c:2326:70: warning: format specifies type 'unsigned int' but the argument has type 'size_t' (aka 'unsigned long') [-Wformat] dout("do_getvxattr xattr_value_len:%u, size:%u\n", xattr_value_len, size); ~~ ^~~~ %lu include/linux/ceph/ceph_debug.h:35:45: note: expanded from macro 'dout' # define dout(fmt, ...) pr_debug(" " fmt, ##__VA_ARGS__) ~~~ ^~~~~~~~~~~ include/linux/printk.h:580:38: note: expanded from macro 'pr_debug' no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__) ~~~ ^~~~~~~~~~~ include/linux/printk.h:132:17: note: expanded from macro 'no_printk' printk(fmt, ##__VA_ARGS__); \ ~~~ ^~~~~~~~~~~ include/linux/printk.h:450:60: note: expanded from macro 'printk' #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__) ~~~ ^~~~~~~~~~~ include/linux/printk.h:422:19: note: expanded from macro 'printk_index_wrap' _p_func(_fmt, ##__VA_ARGS__); \ ~~~~ ^~~~~~~~~~~ 2 warnings generated. vim +2326 fs/ceph/inode.c 2293 2294 int ceph_do_getvxattr(struct inode *inode, const char *name, void *value, 2295 size_t size) 2296 { 2297 struct ceph_fs_client *fsc = ceph_sb_to_client(inode->i_sb); 2298 struct ceph_mds_client *mdsc = fsc->mdsc; 2299 struct ceph_mds_request *req; 2300 int mode = USE_AUTH_MDS; 2301 int err; 2302 char *xattr_value; 2303 size_t xattr_value_len; 2304 2305 req = ceph_mdsc_create_request(mdsc, CEPH_MDS_OP_GETVXATTR, mode); 2306 if (IS_ERR(req)) { 2307 err = -ENOMEM; 2308 goto out; 2309 } 2310 2311 req->r_path2 = kstrdup(name, GFP_NOFS); 2312 if (!req->r_path2) { 2313 err = -ENOMEM; 2314 goto put; 2315 } 2316 2317 ihold(inode); 2318 req->r_inode = inode; 2319 err = ceph_mdsc_do_request(mdsc, NULL, req); 2320 if (err < 0) 2321 goto put; 2322 2323 xattr_value = req->r_reply_info.xattr_info.xattr_value; 2324 xattr_value_len = req->r_reply_info.xattr_info.xattr_value_len; 2325 > 2326 dout("do_getvxattr xattr_value_len:%u, size:%u\n", xattr_value_len, size); 2327 2328 err = xattr_value_len; 2329 if (size == 0) 2330 goto put; 2331 2332 if (xattr_value_len > size) { 2333 err = -ERANGE; 2334 goto put; 2335 } 2336 2337 memcpy(value, xattr_value, xattr_value_len); 2338 put: 2339 ceph_mdsc_put_request(req); 2340 out: 2341 dout("do_getvxattr result=%d\n", err); 2342 return err; 2343 } 2344 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2 1/1] ceph: add getvxattr op
@ 2022-01-17 13:58 kernel test robot
0 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2022-01-17 13:58 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 5294 bytes --]
CC: kbuild-all(a)lists.01.org
In-Reply-To: <20220117034747.22229-2-mchangir@redhat.com>
References: <20220117034747.22229-2-mchangir@redhat.com>
TO: Milind Changire <milindchangire@gmail.com>
Hi Milind,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on ceph-client/for-linus]
[also build test WARNING on v5.16 next-20220117]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Milind-Changire/ceph-add-getvxattr-op-support/20220117-114947
base: https://github.com/ceph/ceph-client.git for-linus
:::::: branch date: 8 hours ago
:::::: commit date: 8 hours ago
config: alpha-randconfig-c004-20220116 (https://download.01.org/0day-ci/archive/20220117/202201171930.DTzEiwER-lkp(a)intel.com/config)
compiler: alpha-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/ed42f71060fc0c0c0c43a582f0bb817713836ddb
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Milind-Changire/ceph-add-getvxattr-op-support/20220117-114947
git checkout ed42f71060fc0c0c0c43a582f0bb817713836ddb
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=alpha SHELL=/bin/bash fs/ceph/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
In file included from include/linux/kernel.h:20,
from include/linux/cpumask.h:10,
from include/linux/mm_types_task.h:14,
from include/linux/mm_types.h:5,
from include/linux/buildid.h:5,
from include/linux/module.h:14,
from fs/ceph/inode.c:4:
fs/ceph/inode.c: In function 'ceph_do_getvxattr':
>> include/linux/kern_levels.h:5:25: warning: format '%u' expects argument of type 'unsigned int', but argument 2 has type 'size_t' {aka 'long unsigned int'} [-Wformat=]
5 | #define KERN_SOH "\001" /* ASCII Start Of Header */
| ^~~~~~
include/linux/printk.h:422:25: note: in definition of macro 'printk_index_wrap'
422 | _p_func(_fmt, ##__VA_ARGS__); \
| ^~~~
include/linux/ceph/ceph_debug.h:26:25: note: in expansion of macro 'printk'
26 | printk(KERN_DEBUG fmt, ##__VA_ARGS__); \
| ^~~~~~
include/linux/kern_levels.h:15:25: note: in expansion of macro 'KERN_SOH'
15 | #define KERN_DEBUG KERN_SOH "7" /* debug-level messages */
| ^~~~~~~~
include/linux/ceph/ceph_debug.h:26:32: note: in expansion of macro 'KERN_DEBUG'
26 | printk(KERN_DEBUG fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~
fs/ceph/inode.c:2326:9: note: in expansion of macro 'dout'
2326 | dout("do_getvxattr xattr_value_len:%u, size:%u\n", xattr_value_len, size);
| ^~~~
include/linux/kern_levels.h:5:25: warning: format '%u' expects argument of type 'unsigned int', but argument 3 has type 'size_t' {aka 'long unsigned int'} [-Wformat=]
5 | #define KERN_SOH "\001" /* ASCII Start Of Header */
| ^~~~~~
include/linux/printk.h:422:25: note: in definition of macro 'printk_index_wrap'
422 | _p_func(_fmt, ##__VA_ARGS__); \
| ^~~~
include/linux/ceph/ceph_debug.h:26:25: note: in expansion of macro 'printk'
26 | printk(KERN_DEBUG fmt, ##__VA_ARGS__); \
| ^~~~~~
include/linux/kern_levels.h:15:25: note: in expansion of macro 'KERN_SOH'
15 | #define KERN_DEBUG KERN_SOH "7" /* debug-level messages */
| ^~~~~~~~
include/linux/ceph/ceph_debug.h:26:32: note: in expansion of macro 'KERN_DEBUG'
26 | printk(KERN_DEBUG fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~
fs/ceph/inode.c:2326:9: note: in expansion of macro 'dout'
2326 | dout("do_getvxattr xattr_value_len:%u, size:%u\n", xattr_value_len, size);
| ^~~~
vim +5 include/linux/kern_levels.h
314ba3520e513a Joe Perches 2012-07-30 4
04d2c8c83d0e3a Joe Perches 2012-07-30 @5 #define KERN_SOH "\001" /* ASCII Start Of Header */
04d2c8c83d0e3a Joe Perches 2012-07-30 6 #define KERN_SOH_ASCII '\001'
04d2c8c83d0e3a Joe Perches 2012-07-30 7
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-01-17 13:58 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-01-17 3:47 [PATCH v2 0/1] ceph: add getvxattr op support Milind Changire 2022-01-17 3:47 ` [PATCH v2 1/1] ceph: add getvxattr op Milind Changire 2022-01-17 13:58 ` kernel test robot 2022-01-17 13:58 ` kernel test robot 2022-01-17 13:58 kernel test robot
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.