All of lore.kernel.org
 help / color / mirror / Atom feed
* [ceph-client:testing 78/96] fs/ceph/mds_client.c:2639: warning: Function parameter or member 'mdsc' not described in 'ceph_mdsc_build_path'
@ 2023-08-21 13:03 kernel test robot
  2023-08-21 13:29 ` Xiubo Li
  0 siblings, 1 reply; 2+ messages in thread
From: kernel test robot @ 2023-08-21 13:03 UTC (permalink / raw)
  To: Xiubo Li; +Cc: oe-kbuild-all, ceph-devel, Patrick Donnelly

tree:   https://github.com/ceph/ceph-client.git testing
head:   a7fb1265323db972dd333f71b9a53e9479f62e37
commit: 7072b2e8839b81f9781603bd2c5e40c9ccd13f6a [78/96] ceph: pass the mdsc to several helpers
config: loongarch-allyesconfig (https://download.01.org/0day-ci/archive/20230821/202308212002.IYVp010T-lkp@intel.com/config)
compiler: loongarch64-linux-gcc (GCC) 12.3.0
reproduce: (https://download.01.org/0day-ci/archive/20230821/202308212002.IYVp010T-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202308212002.IYVp010T-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> fs/ceph/mds_client.c:2639: warning: Function parameter or member 'mdsc' not described in 'ceph_mdsc_build_path'


vim +2639 fs/ceph/mds_client.c

5d7efc49126a6d Jeff Layton    2021-01-14  2616  
0874db5f86bc5b Jeff Layton    2020-08-07  2617  /**
0874db5f86bc5b Jeff Layton    2020-08-07  2618   * ceph_mdsc_build_path - build a path string to a given dentry
0874db5f86bc5b Jeff Layton    2020-08-07  2619   * @dentry: dentry to which path should be built
0874db5f86bc5b Jeff Layton    2020-08-07  2620   * @plen: returned length of string
0874db5f86bc5b Jeff Layton    2020-08-07  2621   * @pbase: returned base inode number
0874db5f86bc5b Jeff Layton    2020-08-07  2622   * @for_wire: is this path going to be sent to the MDS?
0874db5f86bc5b Jeff Layton    2020-08-07  2623   *
0874db5f86bc5b Jeff Layton    2020-08-07  2624   * Build a string that represents the path to the dentry. This is mostly called
0874db5f86bc5b Jeff Layton    2020-08-07  2625   * for two different purposes:
0874db5f86bc5b Jeff Layton    2020-08-07  2626   *
0874db5f86bc5b Jeff Layton    2020-08-07  2627   * 1) we need to build a path string to send to the MDS (for_wire == true)
0874db5f86bc5b Jeff Layton    2020-08-07  2628   * 2) we need a path string for local presentation (e.g. debugfs) (for_wire == false)
2f2dc053404feb Sage Weil      2009-10-06  2629   *
0874db5f86bc5b Jeff Layton    2020-08-07  2630   * The path is built in reverse, starting with the dentry. Walk back up toward
0874db5f86bc5b Jeff Layton    2020-08-07  2631   * the root, building the path until the first non-snapped inode is reached (for_wire)
0874db5f86bc5b Jeff Layton    2020-08-07  2632   * or the root inode is reached (!for_wire).
2f2dc053404feb Sage Weil      2009-10-06  2633   *
2f2dc053404feb Sage Weil      2009-10-06  2634   * Encode hidden .snap dirs as a double /, i.e.
2f2dc053404feb Sage Weil      2009-10-06  2635   *   foo/.snap/bar -> foo//bar
2f2dc053404feb Sage Weil      2009-10-06  2636   */
7072b2e8839b81 Xiubo Li       2023-06-09  2637  char *ceph_mdsc_build_path(struct ceph_mds_client *mdsc, struct dentry *dentry,
7072b2e8839b81 Xiubo Li       2023-06-09  2638  			   int *plen, u64 *pbase, int for_wire)
2f2dc053404feb Sage Weil      2009-10-06 @2639  {
1b82f60fdbf92e Jeff Layton    2020-08-05  2640  	struct dentry *cur;
1b82f60fdbf92e Jeff Layton    2020-08-05  2641  	struct inode *inode;
2f2dc053404feb Sage Weil      2009-10-06  2642  	char *path;
f77f21bb28367d Jeff Layton    2019-04-29  2643  	int pos;
1b71fe2efa31cd Al Viro        2011-07-16  2644  	unsigned seq;
69a10fb3f4b876 Jeff Layton    2019-04-26  2645  	u64 base;
2f2dc053404feb Sage Weil      2009-10-06  2646  
d37b1d9943d513 Markus Elfring 2017-08-20  2647  	if (!dentry)
2f2dc053404feb Sage Weil      2009-10-06  2648  		return ERR_PTR(-EINVAL);
2f2dc053404feb Sage Weil      2009-10-06  2649  
f77f21bb28367d Jeff Layton    2019-04-29  2650  	path = __getname();
d37b1d9943d513 Markus Elfring 2017-08-20  2651  	if (!path)
2f2dc053404feb Sage Weil      2009-10-06  2652  		return ERR_PTR(-ENOMEM);
f77f21bb28367d Jeff Layton    2019-04-29  2653  retry:
f77f21bb28367d Jeff Layton    2019-04-29  2654  	pos = PATH_MAX - 1;
f77f21bb28367d Jeff Layton    2019-04-29  2655  	path[pos] = '\0';
f77f21bb28367d Jeff Layton    2019-04-29  2656  
f77f21bb28367d Jeff Layton    2019-04-29  2657  	seq = read_seqbegin(&rename_lock);
1b82f60fdbf92e Jeff Layton    2020-08-05  2658  	cur = dget(dentry);
f77f21bb28367d Jeff Layton    2019-04-29  2659  	for (;;) {
0874db5f86bc5b Jeff Layton    2020-08-07  2660  		struct dentry *parent;
2f2dc053404feb Sage Weil      2009-10-06  2661  
1b82f60fdbf92e Jeff Layton    2020-08-05  2662  		spin_lock(&cur->d_lock);
1b82f60fdbf92e Jeff Layton    2020-08-05  2663  		inode = d_inode(cur);
2f2dc053404feb Sage Weil      2009-10-06  2664  		if (inode && ceph_snap(inode) == CEPH_SNAPDIR) {
104648ad3f2ebe Sage Weil      2010-03-18  2665  			dout("build_path path+%d: %p SNAPDIR\n",
1b82f60fdbf92e Jeff Layton    2020-08-05  2666  			     pos, cur);
0874db5f86bc5b Jeff Layton    2020-08-07  2667  			spin_unlock(&cur->d_lock);
0874db5f86bc5b Jeff Layton    2020-08-07  2668  			parent = dget_parent(cur);
0874db5f86bc5b Jeff Layton    2020-08-07  2669  		} else if (for_wire && inode && dentry != cur && ceph_snap(inode) == CEPH_NOSNAP) {
1b82f60fdbf92e Jeff Layton    2020-08-05  2670  			spin_unlock(&cur->d_lock);
d6b8bd679c9c88 Jeff Layton    2019-05-09  2671  			pos++; /* get rid of any prepended '/' */
2f2dc053404feb Sage Weil      2009-10-06  2672  			break;
0874db5f86bc5b Jeff Layton    2020-08-07  2673  		} else if (!for_wire || !IS_ENCRYPTED(d_inode(cur->d_parent))) {
1b82f60fdbf92e Jeff Layton    2020-08-05  2674  			pos -= cur->d_name.len;
1b71fe2efa31cd Al Viro        2011-07-16  2675  			if (pos < 0) {
1b82f60fdbf92e Jeff Layton    2020-08-05  2676  				spin_unlock(&cur->d_lock);
2f2dc053404feb Sage Weil      2009-10-06  2677  				break;
1b71fe2efa31cd Al Viro        2011-07-16  2678  			}
1b82f60fdbf92e Jeff Layton    2020-08-05  2679  			memcpy(path + pos, cur->d_name.name, cur->d_name.len);
0874db5f86bc5b Jeff Layton    2020-08-07  2680  			spin_unlock(&cur->d_lock);
0874db5f86bc5b Jeff Layton    2020-08-07  2681  			parent = dget_parent(cur);
0874db5f86bc5b Jeff Layton    2020-08-07  2682  		} else {
0874db5f86bc5b Jeff Layton    2020-08-07  2683  			int len, ret;
0874db5f86bc5b Jeff Layton    2020-08-07  2684  			char buf[NAME_MAX];
0874db5f86bc5b Jeff Layton    2020-08-07  2685  
0874db5f86bc5b Jeff Layton    2020-08-07  2686  			/*
0874db5f86bc5b Jeff Layton    2020-08-07  2687  			 * Proactively copy name into buf, in case we need to present
0874db5f86bc5b Jeff Layton    2020-08-07  2688  			 * it as-is.
0874db5f86bc5b Jeff Layton    2020-08-07  2689  			 */
0874db5f86bc5b Jeff Layton    2020-08-07  2690  			memcpy(buf, cur->d_name.name, cur->d_name.len);
0874db5f86bc5b Jeff Layton    2020-08-07  2691  			len = cur->d_name.len;
0874db5f86bc5b Jeff Layton    2020-08-07  2692  			spin_unlock(&cur->d_lock);
0874db5f86bc5b Jeff Layton    2020-08-07  2693  			parent = dget_parent(cur);
0874db5f86bc5b Jeff Layton    2020-08-07  2694  
97142624013d56 Luís Henriques 2022-11-29  2695  			ret = ceph_fscrypt_prepare_readdir(d_inode(parent));
0874db5f86bc5b Jeff Layton    2020-08-07  2696  			if (ret < 0) {
0874db5f86bc5b Jeff Layton    2020-08-07  2697  				dput(parent);
0874db5f86bc5b Jeff Layton    2020-08-07  2698  				dput(cur);
0874db5f86bc5b Jeff Layton    2020-08-07  2699  				return ERR_PTR(ret);
0874db5f86bc5b Jeff Layton    2020-08-07  2700  			}
0874db5f86bc5b Jeff Layton    2020-08-07  2701  
0874db5f86bc5b Jeff Layton    2020-08-07  2702  			if (fscrypt_has_encryption_key(d_inode(parent))) {
0874db5f86bc5b Jeff Layton    2020-08-07  2703  				len = ceph_encode_encrypted_fname(d_inode(parent), cur, buf);
0874db5f86bc5b Jeff Layton    2020-08-07  2704  				if (len < 0) {
0874db5f86bc5b Jeff Layton    2020-08-07  2705  					dput(parent);
0874db5f86bc5b Jeff Layton    2020-08-07  2706  					dput(cur);
0874db5f86bc5b Jeff Layton    2020-08-07  2707  					return ERR_PTR(len);
2f2dc053404feb Sage Weil      2009-10-06  2708  				}
0874db5f86bc5b Jeff Layton    2020-08-07  2709  			}
0874db5f86bc5b Jeff Layton    2020-08-07  2710  			pos -= len;
0874db5f86bc5b Jeff Layton    2020-08-07  2711  			if (pos < 0) {
0874db5f86bc5b Jeff Layton    2020-08-07  2712  				dput(parent);
0874db5f86bc5b Jeff Layton    2020-08-07  2713  				break;
0874db5f86bc5b Jeff Layton    2020-08-07  2714  			}
0874db5f86bc5b Jeff Layton    2020-08-07  2715  			memcpy(path + pos, buf, len);
0874db5f86bc5b Jeff Layton    2020-08-07  2716  		}
0874db5f86bc5b Jeff Layton    2020-08-07  2717  		dput(cur);
0874db5f86bc5b Jeff Layton    2020-08-07  2718  		cur = parent;
f77f21bb28367d Jeff Layton    2019-04-29  2719  
f77f21bb28367d Jeff Layton    2019-04-29  2720  		/* Are we at the root? */
1b82f60fdbf92e Jeff Layton    2020-08-05  2721  		if (IS_ROOT(cur))
f77f21bb28367d Jeff Layton    2019-04-29  2722  			break;
f77f21bb28367d Jeff Layton    2019-04-29  2723  
f77f21bb28367d Jeff Layton    2019-04-29  2724  		/* Are we out of buffer? */
f77f21bb28367d Jeff Layton    2019-04-29  2725  		if (--pos < 0)
f77f21bb28367d Jeff Layton    2019-04-29  2726  			break;
f77f21bb28367d Jeff Layton    2019-04-29  2727  
f77f21bb28367d Jeff Layton    2019-04-29  2728  		path[pos] = '/';
2f2dc053404feb Sage Weil      2009-10-06  2729  	}
1b82f60fdbf92e Jeff Layton    2020-08-05  2730  	inode = d_inode(cur);
1b82f60fdbf92e Jeff Layton    2020-08-05  2731  	base = inode ? ceph_ino(inode) : 0;
1b82f60fdbf92e Jeff Layton    2020-08-05  2732  	dput(cur);
f5946bcc5e7903 Jeff Layton    2019-10-16  2733  
f5946bcc5e7903 Jeff Layton    2019-10-16  2734  	if (read_seqretry(&rename_lock, seq))
f5946bcc5e7903 Jeff Layton    2019-10-16  2735  		goto retry;
f5946bcc5e7903 Jeff Layton    2019-10-16  2736  
f5946bcc5e7903 Jeff Layton    2019-10-16  2737  	if (pos < 0) {
f5946bcc5e7903 Jeff Layton    2019-10-16  2738  		/*
f5946bcc5e7903 Jeff Layton    2019-10-16  2739  		 * A rename didn't occur, but somehow we didn't end up where
f5946bcc5e7903 Jeff Layton    2019-10-16  2740  		 * we thought we would. Throw a warning and try again.
f5946bcc5e7903 Jeff Layton    2019-10-16  2741  		 */
0874db5f86bc5b Jeff Layton    2020-08-07  2742  		pr_warn("build_path did not end path lookup where expected (pos = %d)\n", pos);
2f2dc053404feb Sage Weil      2009-10-06  2743  		goto retry;
2f2dc053404feb Sage Weil      2009-10-06  2744  	}
2f2dc053404feb Sage Weil      2009-10-06  2745  
69a10fb3f4b876 Jeff Layton    2019-04-26  2746  	*pbase = base;
f77f21bb28367d Jeff Layton    2019-04-29  2747  	*plen = PATH_MAX - 1 - pos;
104648ad3f2ebe Sage Weil      2010-03-18  2748  	dout("build_path on %p %d built %llx '%.*s'\n",
f77f21bb28367d Jeff Layton    2019-04-29  2749  	     dentry, d_count(dentry), base, *plen, path + pos);
f77f21bb28367d Jeff Layton    2019-04-29  2750  	return path + pos;
2f2dc053404feb Sage Weil      2009-10-06  2751  }
2f2dc053404feb Sage Weil      2009-10-06  2752  

:::::: The code at line 2639 was first introduced by commit
:::::: 2f2dc053404febedc9c273452d9d518fb31fde72 ceph: MDS client

:::::: TO: Sage Weil <sage@newdream.net>
:::::: CC: Sage Weil <sage@newdream.net>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [ceph-client:testing 78/96] fs/ceph/mds_client.c:2639: warning: Function parameter or member 'mdsc' not described in 'ceph_mdsc_build_path'
  2023-08-21 13:03 [ceph-client:testing 78/96] fs/ceph/mds_client.c:2639: warning: Function parameter or member 'mdsc' not described in 'ceph_mdsc_build_path' kernel test robot
@ 2023-08-21 13:29 ` Xiubo Li
  0 siblings, 0 replies; 2+ messages in thread
From: Xiubo Li @ 2023-08-21 13:29 UTC (permalink / raw)
  To: kernel test robot; +Cc: oe-kbuild-all, ceph-devel, Patrick Donnelly


On 8/21/23 21:03, kernel test robot wrote:
> tree:   https://github.com/ceph/ceph-client.git testing
> head:   a7fb1265323db972dd333f71b9a53e9479f62e37
> commit: 7072b2e8839b81f9781603bd2c5e40c9ccd13f6a [78/96] ceph: pass the mdsc to several helpers
> config: loongarch-allyesconfig (https://download.01.org/0day-ci/archive/20230821/202308212002.IYVp010T-lkp@intel.com/config)
> compiler: loongarch64-linux-gcc (GCC) 12.3.0
> reproduce: (https://download.01.org/0day-ci/archive/20230821/202308212002.IYVp010T-lkp@intel.com/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202308212002.IYVp010T-lkp@intel.com/
>
> All warnings (new ones prefixed by >>):
>
>>> fs/ceph/mds_client.c:2639: warning: Function parameter or member 'mdsc' not described in 'ceph_mdsc_build_path'
>
> vim +2639 fs/ceph/mds_client.c
>
> 5d7efc49126a6d Jeff Layton    2021-01-14  2616
> 0874db5f86bc5b Jeff Layton    2020-08-07  2617  /**
> 0874db5f86bc5b Jeff Layton    2020-08-07  2618   * ceph_mdsc_build_path - build a path string to a given dentry

Okay, we should add the description here for 'mdsc' parameter.

Thanks for reporting, I will fix it later.

- Xiubo

> 0874db5f86bc5b Jeff Layton    2020-08-07  2619   * @dentry: dentry to which path should be built
> 0874db5f86bc5b Jeff Layton    2020-08-07  2620   * @plen: returned length of string
> 0874db5f86bc5b Jeff Layton    2020-08-07  2621   * @pbase: returned base inode number
> 0874db5f86bc5b Jeff Layton    2020-08-07  2622   * @for_wire: is this path going to be sent to the MDS?
> 0874db5f86bc5b Jeff Layton    2020-08-07  2623   *
> 0874db5f86bc5b Jeff Layton    2020-08-07  2624   * Build a string that represents the path to the dentry. This is mostly called
> 0874db5f86bc5b Jeff Layton    2020-08-07  2625   * for two different purposes:
> 0874db5f86bc5b Jeff Layton    2020-08-07  2626   *
> 0874db5f86bc5b Jeff Layton    2020-08-07  2627   * 1) we need to build a path string to send to the MDS (for_wire == true)
> 0874db5f86bc5b Jeff Layton    2020-08-07  2628   * 2) we need a path string for local presentation (e.g. debugfs) (for_wire == false)
> 2f2dc053404feb Sage Weil      2009-10-06  2629   *
> 0874db5f86bc5b Jeff Layton    2020-08-07  2630   * The path is built in reverse, starting with the dentry. Walk back up toward
> 0874db5f86bc5b Jeff Layton    2020-08-07  2631   * the root, building the path until the first non-snapped inode is reached (for_wire)
> 0874db5f86bc5b Jeff Layton    2020-08-07  2632   * or the root inode is reached (!for_wire).
> 2f2dc053404feb Sage Weil      2009-10-06  2633   *
> 2f2dc053404feb Sage Weil      2009-10-06  2634   * Encode hidden .snap dirs as a double /, i.e.
> 2f2dc053404feb Sage Weil      2009-10-06  2635   *   foo/.snap/bar -> foo//bar
> 2f2dc053404feb Sage Weil      2009-10-06  2636   */
> 7072b2e8839b81 Xiubo Li       2023-06-09  2637  char *ceph_mdsc_build_path(struct ceph_mds_client *mdsc, struct dentry *dentry,
> 7072b2e8839b81 Xiubo Li       2023-06-09  2638  			   int *plen, u64 *pbase, int for_wire)
> 2f2dc053404feb Sage Weil      2009-10-06 @2639  {
> 1b82f60fdbf92e Jeff Layton    2020-08-05  2640  	struct dentry *cur;
> 1b82f60fdbf92e Jeff Layton    2020-08-05  2641  	struct inode *inode;
> 2f2dc053404feb Sage Weil      2009-10-06  2642  	char *path;
> f77f21bb28367d Jeff Layton    2019-04-29  2643  	int pos;
> 1b71fe2efa31cd Al Viro        2011-07-16  2644  	unsigned seq;
> 69a10fb3f4b876 Jeff Layton    2019-04-26  2645  	u64 base;
> 2f2dc053404feb Sage Weil      2009-10-06  2646
> d37b1d9943d513 Markus Elfring 2017-08-20  2647  	if (!dentry)
> 2f2dc053404feb Sage Weil      2009-10-06  2648  		return ERR_PTR(-EINVAL);
> 2f2dc053404feb Sage Weil      2009-10-06  2649
> f77f21bb28367d Jeff Layton    2019-04-29  2650  	path = __getname();
> d37b1d9943d513 Markus Elfring 2017-08-20  2651  	if (!path)
> 2f2dc053404feb Sage Weil      2009-10-06  2652  		return ERR_PTR(-ENOMEM);
> f77f21bb28367d Jeff Layton    2019-04-29  2653  retry:
> f77f21bb28367d Jeff Layton    2019-04-29  2654  	pos = PATH_MAX - 1;
> f77f21bb28367d Jeff Layton    2019-04-29  2655  	path[pos] = '\0';
> f77f21bb28367d Jeff Layton    2019-04-29  2656
> f77f21bb28367d Jeff Layton    2019-04-29  2657  	seq = read_seqbegin(&rename_lock);
> 1b82f60fdbf92e Jeff Layton    2020-08-05  2658  	cur = dget(dentry);
> f77f21bb28367d Jeff Layton    2019-04-29  2659  	for (;;) {
> 0874db5f86bc5b Jeff Layton    2020-08-07  2660  		struct dentry *parent;
> 2f2dc053404feb Sage Weil      2009-10-06  2661
> 1b82f60fdbf92e Jeff Layton    2020-08-05  2662  		spin_lock(&cur->d_lock);
> 1b82f60fdbf92e Jeff Layton    2020-08-05  2663  		inode = d_inode(cur);
> 2f2dc053404feb Sage Weil      2009-10-06  2664  		if (inode && ceph_snap(inode) == CEPH_SNAPDIR) {
> 104648ad3f2ebe Sage Weil      2010-03-18  2665  			dout("build_path path+%d: %p SNAPDIR\n",
> 1b82f60fdbf92e Jeff Layton    2020-08-05  2666  			     pos, cur);
> 0874db5f86bc5b Jeff Layton    2020-08-07  2667  			spin_unlock(&cur->d_lock);
> 0874db5f86bc5b Jeff Layton    2020-08-07  2668  			parent = dget_parent(cur);
> 0874db5f86bc5b Jeff Layton    2020-08-07  2669  		} else if (for_wire && inode && dentry != cur && ceph_snap(inode) == CEPH_NOSNAP) {
> 1b82f60fdbf92e Jeff Layton    2020-08-05  2670  			spin_unlock(&cur->d_lock);
> d6b8bd679c9c88 Jeff Layton    2019-05-09  2671  			pos++; /* get rid of any prepended '/' */
> 2f2dc053404feb Sage Weil      2009-10-06  2672  			break;
> 0874db5f86bc5b Jeff Layton    2020-08-07  2673  		} else if (!for_wire || !IS_ENCRYPTED(d_inode(cur->d_parent))) {
> 1b82f60fdbf92e Jeff Layton    2020-08-05  2674  			pos -= cur->d_name.len;
> 1b71fe2efa31cd Al Viro        2011-07-16  2675  			if (pos < 0) {
> 1b82f60fdbf92e Jeff Layton    2020-08-05  2676  				spin_unlock(&cur->d_lock);
> 2f2dc053404feb Sage Weil      2009-10-06  2677  				break;
> 1b71fe2efa31cd Al Viro        2011-07-16  2678  			}
> 1b82f60fdbf92e Jeff Layton    2020-08-05  2679  			memcpy(path + pos, cur->d_name.name, cur->d_name.len);
> 0874db5f86bc5b Jeff Layton    2020-08-07  2680  			spin_unlock(&cur->d_lock);
> 0874db5f86bc5b Jeff Layton    2020-08-07  2681  			parent = dget_parent(cur);
> 0874db5f86bc5b Jeff Layton    2020-08-07  2682  		} else {
> 0874db5f86bc5b Jeff Layton    2020-08-07  2683  			int len, ret;
> 0874db5f86bc5b Jeff Layton    2020-08-07  2684  			char buf[NAME_MAX];
> 0874db5f86bc5b Jeff Layton    2020-08-07  2685
> 0874db5f86bc5b Jeff Layton    2020-08-07  2686  			/*
> 0874db5f86bc5b Jeff Layton    2020-08-07  2687  			 * Proactively copy name into buf, in case we need to present
> 0874db5f86bc5b Jeff Layton    2020-08-07  2688  			 * it as-is.
> 0874db5f86bc5b Jeff Layton    2020-08-07  2689  			 */
> 0874db5f86bc5b Jeff Layton    2020-08-07  2690  			memcpy(buf, cur->d_name.name, cur->d_name.len);
> 0874db5f86bc5b Jeff Layton    2020-08-07  2691  			len = cur->d_name.len;
> 0874db5f86bc5b Jeff Layton    2020-08-07  2692  			spin_unlock(&cur->d_lock);
> 0874db5f86bc5b Jeff Layton    2020-08-07  2693  			parent = dget_parent(cur);
> 0874db5f86bc5b Jeff Layton    2020-08-07  2694
> 97142624013d56 Luís Henriques 2022-11-29  2695  			ret = ceph_fscrypt_prepare_readdir(d_inode(parent));
> 0874db5f86bc5b Jeff Layton    2020-08-07  2696  			if (ret < 0) {
> 0874db5f86bc5b Jeff Layton    2020-08-07  2697  				dput(parent);
> 0874db5f86bc5b Jeff Layton    2020-08-07  2698  				dput(cur);
> 0874db5f86bc5b Jeff Layton    2020-08-07  2699  				return ERR_PTR(ret);
> 0874db5f86bc5b Jeff Layton    2020-08-07  2700  			}
> 0874db5f86bc5b Jeff Layton    2020-08-07  2701
> 0874db5f86bc5b Jeff Layton    2020-08-07  2702  			if (fscrypt_has_encryption_key(d_inode(parent))) {
> 0874db5f86bc5b Jeff Layton    2020-08-07  2703  				len = ceph_encode_encrypted_fname(d_inode(parent), cur, buf);
> 0874db5f86bc5b Jeff Layton    2020-08-07  2704  				if (len < 0) {
> 0874db5f86bc5b Jeff Layton    2020-08-07  2705  					dput(parent);
> 0874db5f86bc5b Jeff Layton    2020-08-07  2706  					dput(cur);
> 0874db5f86bc5b Jeff Layton    2020-08-07  2707  					return ERR_PTR(len);
> 2f2dc053404feb Sage Weil      2009-10-06  2708  				}
> 0874db5f86bc5b Jeff Layton    2020-08-07  2709  			}
> 0874db5f86bc5b Jeff Layton    2020-08-07  2710  			pos -= len;
> 0874db5f86bc5b Jeff Layton    2020-08-07  2711  			if (pos < 0) {
> 0874db5f86bc5b Jeff Layton    2020-08-07  2712  				dput(parent);
> 0874db5f86bc5b Jeff Layton    2020-08-07  2713  				break;
> 0874db5f86bc5b Jeff Layton    2020-08-07  2714  			}
> 0874db5f86bc5b Jeff Layton    2020-08-07  2715  			memcpy(path + pos, buf, len);
> 0874db5f86bc5b Jeff Layton    2020-08-07  2716  		}
> 0874db5f86bc5b Jeff Layton    2020-08-07  2717  		dput(cur);
> 0874db5f86bc5b Jeff Layton    2020-08-07  2718  		cur = parent;
> f77f21bb28367d Jeff Layton    2019-04-29  2719
> f77f21bb28367d Jeff Layton    2019-04-29  2720  		/* Are we at the root? */
> 1b82f60fdbf92e Jeff Layton    2020-08-05  2721  		if (IS_ROOT(cur))
> f77f21bb28367d Jeff Layton    2019-04-29  2722  			break;
> f77f21bb28367d Jeff Layton    2019-04-29  2723
> f77f21bb28367d Jeff Layton    2019-04-29  2724  		/* Are we out of buffer? */
> f77f21bb28367d Jeff Layton    2019-04-29  2725  		if (--pos < 0)
> f77f21bb28367d Jeff Layton    2019-04-29  2726  			break;
> f77f21bb28367d Jeff Layton    2019-04-29  2727
> f77f21bb28367d Jeff Layton    2019-04-29  2728  		path[pos] = '/';
> 2f2dc053404feb Sage Weil      2009-10-06  2729  	}
> 1b82f60fdbf92e Jeff Layton    2020-08-05  2730  	inode = d_inode(cur);
> 1b82f60fdbf92e Jeff Layton    2020-08-05  2731  	base = inode ? ceph_ino(inode) : 0;
> 1b82f60fdbf92e Jeff Layton    2020-08-05  2732  	dput(cur);
> f5946bcc5e7903 Jeff Layton    2019-10-16  2733
> f5946bcc5e7903 Jeff Layton    2019-10-16  2734  	if (read_seqretry(&rename_lock, seq))
> f5946bcc5e7903 Jeff Layton    2019-10-16  2735  		goto retry;
> f5946bcc5e7903 Jeff Layton    2019-10-16  2736
> f5946bcc5e7903 Jeff Layton    2019-10-16  2737  	if (pos < 0) {
> f5946bcc5e7903 Jeff Layton    2019-10-16  2738  		/*
> f5946bcc5e7903 Jeff Layton    2019-10-16  2739  		 * A rename didn't occur, but somehow we didn't end up where
> f5946bcc5e7903 Jeff Layton    2019-10-16  2740  		 * we thought we would. Throw a warning and try again.
> f5946bcc5e7903 Jeff Layton    2019-10-16  2741  		 */
> 0874db5f86bc5b Jeff Layton    2020-08-07  2742  		pr_warn("build_path did not end path lookup where expected (pos = %d)\n", pos);
> 2f2dc053404feb Sage Weil      2009-10-06  2743  		goto retry;
> 2f2dc053404feb Sage Weil      2009-10-06  2744  	}
> 2f2dc053404feb Sage Weil      2009-10-06  2745
> 69a10fb3f4b876 Jeff Layton    2019-04-26  2746  	*pbase = base;
> f77f21bb28367d Jeff Layton    2019-04-29  2747  	*plen = PATH_MAX - 1 - pos;
> 104648ad3f2ebe Sage Weil      2010-03-18  2748  	dout("build_path on %p %d built %llx '%.*s'\n",
> f77f21bb28367d Jeff Layton    2019-04-29  2749  	     dentry, d_count(dentry), base, *plen, path + pos);
> f77f21bb28367d Jeff Layton    2019-04-29  2750  	return path + pos;
> 2f2dc053404feb Sage Weil      2009-10-06  2751  }
> 2f2dc053404feb Sage Weil      2009-10-06  2752
>
> :::::: The code at line 2639 was first introduced by commit
> :::::: 2f2dc053404febedc9c273452d9d518fb31fde72 ceph: MDS client
>
> :::::: TO: Sage Weil <sage@newdream.net>
> :::::: CC: Sage Weil <sage@newdream.net>
>


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-08-21 13:30 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-21 13:03 [ceph-client:testing 78/96] fs/ceph/mds_client.c:2639: warning: Function parameter or member 'mdsc' not described in 'ceph_mdsc_build_path' kernel test robot
2023-08-21 13:29 ` Xiubo Li

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.