All of lore.kernel.org
 help / color / mirror / Atom feed
* [djwong-xfs:vectorized-scrub 43/306] fs/xfs/xfs_icache.c:520 xfs_iget_cache_hit() warn: inconsistent returns '&ip->i_flags_lock'.
@ 2021-04-18  5:51 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-04-18  5:51 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 8771 bytes --]

CC: kbuild-all(a)lists.01.org
CC: "Darrick J. Wong" <darrick.wong@oracle.com>
TO: "Darrick J. Wong" <djwong@kernel.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git vectorized-scrub
head:   3506ef55d770f108fa68aeb95268af368da441af
commit: 13b2da6bae09f10f256d9b72b15f799f5431a069 [43/306] xfs: refactor the inode recycling code
:::::: branch date: 29 hours ago
:::::: commit date: 29 hours ago
config: x86_64-randconfig-m001-20210418 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
fs/xfs/xfs_icache.c:520 xfs_iget_cache_hit() warn: inconsistent returns '&ip->i_flags_lock'.

vim +520 fs/xfs/xfs_icache.c

afca6c5b2595fc Dave Chinner    2018-04-17  419  
33479e0542df06 Dave Chinner    2012-10-08  420  /*
33479e0542df06 Dave Chinner    2012-10-08  421   * Check the validity of the inode we just found it the cache
33479e0542df06 Dave Chinner    2012-10-08  422   */
33479e0542df06 Dave Chinner    2012-10-08  423  static int
33479e0542df06 Dave Chinner    2012-10-08  424  xfs_iget_cache_hit(
33479e0542df06 Dave Chinner    2012-10-08  425  	struct xfs_perag	*pag,
33479e0542df06 Dave Chinner    2012-10-08  426  	struct xfs_inode	*ip,
33479e0542df06 Dave Chinner    2012-10-08  427  	xfs_ino_t		ino,
33479e0542df06 Dave Chinner    2012-10-08  428  	int			flags,
33479e0542df06 Dave Chinner    2012-10-08  429  	int			lock_flags) __releases(RCU)
33479e0542df06 Dave Chinner    2012-10-08  430  {
33479e0542df06 Dave Chinner    2012-10-08  431  	struct inode		*inode = VFS_I(ip);
33479e0542df06 Dave Chinner    2012-10-08  432  	struct xfs_mount	*mp = ip->i_mount;
33479e0542df06 Dave Chinner    2012-10-08  433  	int			error;
33479e0542df06 Dave Chinner    2012-10-08  434  
33479e0542df06 Dave Chinner    2012-10-08  435  	/*
33479e0542df06 Dave Chinner    2012-10-08  436  	 * check for re-use of an inode within an RCU grace period due to the
33479e0542df06 Dave Chinner    2012-10-08  437  	 * radix tree nodes not being updated yet. We monitor for this by
33479e0542df06 Dave Chinner    2012-10-08  438  	 * setting the inode number to zero before freeing the inode structure.
33479e0542df06 Dave Chinner    2012-10-08  439  	 * If the inode has been reallocated and set up, then the inode number
33479e0542df06 Dave Chinner    2012-10-08  440  	 * will not match, so check for that, too.
33479e0542df06 Dave Chinner    2012-10-08  441  	 */
33479e0542df06 Dave Chinner    2012-10-08  442  	spin_lock(&ip->i_flags_lock);
33479e0542df06 Dave Chinner    2012-10-08  443  	if (ip->i_ino != ino) {
33479e0542df06 Dave Chinner    2012-10-08  444  		trace_xfs_iget_skip(ip);
ff6d6af2351cae Bill O'Donnell  2015-10-12  445  		XFS_STATS_INC(mp, xs_ig_frecycle);
2451337dd04390 Dave Chinner    2014-06-25  446  		error = -EAGAIN;
33479e0542df06 Dave Chinner    2012-10-08  447  		goto out_error;
33479e0542df06 Dave Chinner    2012-10-08  448  	}
33479e0542df06 Dave Chinner    2012-10-08  449  
33479e0542df06 Dave Chinner    2012-10-08  450  
33479e0542df06 Dave Chinner    2012-10-08  451  	/*
33479e0542df06 Dave Chinner    2012-10-08  452  	 * If we are racing with another cache hit that is currently
33479e0542df06 Dave Chinner    2012-10-08  453  	 * instantiating this inode or currently recycling it out of
13b2da6bae09f1 Darrick J. Wong 2021-04-07  454  	 * reclaimable state, wait for the initialisation to complete
33479e0542df06 Dave Chinner    2012-10-08  455  	 * before continuing.
33479e0542df06 Dave Chinner    2012-10-08  456  	 *
33479e0542df06 Dave Chinner    2012-10-08  457  	 * XXX(hch): eventually we should do something equivalent to
33479e0542df06 Dave Chinner    2012-10-08  458  	 *	     wait_on_inode to wait for these flags to be cleared
33479e0542df06 Dave Chinner    2012-10-08  459  	 *	     instead of polling for it.
33479e0542df06 Dave Chinner    2012-10-08  460  	 */
33479e0542df06 Dave Chinner    2012-10-08  461  	if (ip->i_flags & (XFS_INEW|XFS_IRECLAIM)) {
33479e0542df06 Dave Chinner    2012-10-08  462  		trace_xfs_iget_skip(ip);
ff6d6af2351cae Bill O'Donnell  2015-10-12  463  		XFS_STATS_INC(mp, xs_ig_frecycle);
2451337dd04390 Dave Chinner    2014-06-25  464  		error = -EAGAIN;
33479e0542df06 Dave Chinner    2012-10-08  465  		goto out_error;
33479e0542df06 Dave Chinner    2012-10-08  466  	}
33479e0542df06 Dave Chinner    2012-10-08  467  
33479e0542df06 Dave Chinner    2012-10-08  468  	/*
afca6c5b2595fc Dave Chinner    2018-04-17  469  	 * Check the inode free state is valid. This also detects lookup
afca6c5b2595fc Dave Chinner    2018-04-17  470  	 * racing with unlinks.
33479e0542df06 Dave Chinner    2012-10-08  471  	 */
afca6c5b2595fc Dave Chinner    2018-04-17  472  	error = xfs_iget_check_free_state(ip, flags);
afca6c5b2595fc Dave Chinner    2018-04-17  473  	if (error)
33479e0542df06 Dave Chinner    2012-10-08  474  		goto out_error;
33479e0542df06 Dave Chinner    2012-10-08  475  
13b2da6bae09f1 Darrick J. Wong 2021-04-07  476  	if (ip->i_flags & XFS_IRECLAIMABLE) {
33479e0542df06 Dave Chinner    2012-10-08  477  		/*
13b2da6bae09f1 Darrick J. Wong 2021-04-07  478  		 * If IRECLAIMABLE is set, we've torn down the VFS inode
13b2da6bae09f1 Darrick J. Wong 2021-04-07  479  		 * already, and must carefully restore it to usable state.
33479e0542df06 Dave Chinner    2012-10-08  480  		 */
33479e0542df06 Dave Chinner    2012-10-08  481  		trace_xfs_iget_reclaim(ip);
33479e0542df06 Dave Chinner    2012-10-08  482  
378f681c4b588c Darrick J. Wong 2017-06-19  483  		if (flags & XFS_IGET_INCORE) {
378f681c4b588c Darrick J. Wong 2017-06-19  484  			error = -EAGAIN;
378f681c4b588c Darrick J. Wong 2017-06-19  485  			goto out_error;
378f681c4b588c Darrick J. Wong 2017-06-19  486  		}
378f681c4b588c Darrick J. Wong 2017-06-19  487  
13b2da6bae09f1 Darrick J. Wong 2021-04-07  488  		/* Drops i_flags_lock and RCU read lock. */
13b2da6bae09f1 Darrick J. Wong 2021-04-07  489  		error = xfs_iget_recycle(pag, ip);
33479e0542df06 Dave Chinner    2012-10-08  490  		if (error) {
33479e0542df06 Dave Chinner    2012-10-08  491  			trace_xfs_iget_reclaim_fail(ip);
13b2da6bae09f1 Darrick J. Wong 2021-04-07  492  			return error;
33479e0542df06 Dave Chinner    2012-10-08  493  		}
33479e0542df06 Dave Chinner    2012-10-08  494  	} else {
33479e0542df06 Dave Chinner    2012-10-08  495  		/* If the VFS inode is being torn down, pause and try again. */
33479e0542df06 Dave Chinner    2012-10-08  496  		if (!igrab(inode)) {
33479e0542df06 Dave Chinner    2012-10-08  497  			trace_xfs_iget_skip(ip);
2451337dd04390 Dave Chinner    2014-06-25  498  			error = -EAGAIN;
33479e0542df06 Dave Chinner    2012-10-08  499  			goto out_error;
33479e0542df06 Dave Chinner    2012-10-08  500  		}
33479e0542df06 Dave Chinner    2012-10-08  501  
33479e0542df06 Dave Chinner    2012-10-08  502  		/* We've got a live one. */
33479e0542df06 Dave Chinner    2012-10-08  503  		spin_unlock(&ip->i_flags_lock);
33479e0542df06 Dave Chinner    2012-10-08  504  		rcu_read_unlock();
33479e0542df06 Dave Chinner    2012-10-08  505  		trace_xfs_iget_hit(ip);
33479e0542df06 Dave Chinner    2012-10-08  506  	}
33479e0542df06 Dave Chinner    2012-10-08  507  
33479e0542df06 Dave Chinner    2012-10-08  508  	if (lock_flags != 0)
33479e0542df06 Dave Chinner    2012-10-08  509  		xfs_ilock(ip, lock_flags);
33479e0542df06 Dave Chinner    2012-10-08  510  
378f681c4b588c Darrick J. Wong 2017-06-19  511  	if (!(flags & XFS_IGET_INCORE))
dae2f8ed7992e8 Ira Weiny       2020-04-30  512  		xfs_iflags_clear(ip, XFS_ISTALE);
ff6d6af2351cae Bill O'Donnell  2015-10-12  513  	XFS_STATS_INC(mp, xs_ig_found);
33479e0542df06 Dave Chinner    2012-10-08  514  
33479e0542df06 Dave Chinner    2012-10-08  515  	return 0;
33479e0542df06 Dave Chinner    2012-10-08  516  
33479e0542df06 Dave Chinner    2012-10-08  517  out_error:
33479e0542df06 Dave Chinner    2012-10-08  518  	spin_unlock(&ip->i_flags_lock);
33479e0542df06 Dave Chinner    2012-10-08  519  	rcu_read_unlock();
33479e0542df06 Dave Chinner    2012-10-08 @520  	return error;
33479e0542df06 Dave Chinner    2012-10-08  521  }
33479e0542df06 Dave Chinner    2012-10-08  522  

:::::: The code at line 520 was first introduced by commit
:::::: 33479e0542df066fb0b47df18780e93bfe6e0dc5 xfs: remove xfs_iget.c

:::::: TO: Dave Chinner <dchinner@redhat.com>
:::::: CC: Ben Myers <bpm@sgi.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 38418 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-04-18  5:51 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-18  5:51 [djwong-xfs:vectorized-scrub 43/306] fs/xfs/xfs_icache.c:520 xfs_iget_cache_hit() warn: inconsistent returns '&ip->i_flags_lock' 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.