* [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.