tree:
https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git
repair-metadata-atomically
head: d334005df02786c9f288f2c7060603e9680946b5
commit: ff363fee12a5518f3bcd0f904b46d737e811cf0b [206/229] xfs: clean up
xfs_bui_item_recover
config: i386-allyesconfig (attached as .config)
compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp(a)intel.com>
Reported-by: Dan Carpenter <dan.carpenter(a)oracle.com>
smatch warnings:
fs/xfs/xfs_bmap_item.c:503 xfs_bui_item_recover() error: uninitialized symbol
'type'.
#
https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git/comm...
git remote add djwong-xfs
https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git
git remote update djwong-xfs
git checkout ff363fee12a5518f3bcd0f904b46d737e811cf0b
vim +/type +503 fs/xfs/xfs_bmap_item.c
ba266f4f4c84ea Darrick J. Wong 2020-05-15 423 STATIC int
c557f2b9dcf4ed Darrick J. Wong 2020-05-15 424 xfs_bui_item_recover(
c557f2b9dcf4ed Darrick J. Wong 2020-05-15 425 struct xfs_log_item *lip,
aaddb7e46e876a Darrick J. Wong 2020-05-15 426 struct xfs_defer_capture **dfcp)
77d61fe45e7205 Darrick J. Wong 2016-10-03 427 {
c557f2b9dcf4ed Darrick J. Wong 2020-05-15 428 struct xfs_bmbt_irec irec;
c557f2b9dcf4ed Darrick J. Wong 2020-05-15 429 struct xfs_bui_log_item *buip =
BUI_ITEM(lip);
c557f2b9dcf4ed Darrick J. Wong 2020-05-15 430 struct xfs_trans *tp;
c557f2b9dcf4ed Darrick J. Wong 2020-05-15 431 struct xfs_inode *ip = NULL;
aaddb7e46e876a Darrick J. Wong 2020-05-15 432 struct xfs_mount *mp =
lip->li_mountp;
77d61fe45e7205 Darrick J. Wong 2016-10-03 433 struct xfs_map_extent *bmap;
c557f2b9dcf4ed Darrick J. Wong 2020-05-15 434 struct xfs_bud_log_item *budp;
77d61fe45e7205 Darrick J. Wong 2016-10-03 435 xfs_fsblock_t startblock_fsb;
77d61fe45e7205 Darrick J. Wong 2016-10-03 436 xfs_fsblock_t inode_fsb;
e1a4e37cc7b665 Darrick J. Wong 2017-06-14 437 xfs_filblks_t count;
c557f2b9dcf4ed Darrick J. Wong 2020-05-15 438 xfs_exntst_t state;
9f3afb57d5f1e7 Darrick J. Wong 2016-10-03 439 enum xfs_bmap_intent_type type;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
c557f2b9dcf4ed Darrick J. Wong 2020-05-15 440 unsigned int bui_type;
9f3afb57d5f1e7 Darrick J. Wong 2016-10-03 441 int whichfork;
c557f2b9dcf4ed Darrick J. Wong 2020-05-15 442 int error = 0;
77d61fe45e7205 Darrick J. Wong 2016-10-03 443
77d61fe45e7205 Darrick J. Wong 2016-10-03 444 /* Only one mapping operation per
BUI... */
ff363fee12a551 Darrick J. Wong 2020-05-21 445 if (buip->bui_format.bui_nextents !=
XFS_BUI_MAX_FAST_EXTENTS)
ff363fee12a551 Darrick J. Wong 2020-05-21 446 goto garbage;
77d61fe45e7205 Darrick J. Wong 2016-10-03 447
77d61fe45e7205 Darrick J. Wong 2016-10-03 448 /*
77d61fe45e7205 Darrick J. Wong 2016-10-03 449 * First check the validity of the
extent described by the
77d61fe45e7205 Darrick J. Wong 2016-10-03 450 * BUI. If anything is bad, then toss
the BUI.
77d61fe45e7205 Darrick J. Wong 2016-10-03 451 */
77d61fe45e7205 Darrick J. Wong 2016-10-03 452 bmap =
&buip->bui_format.bui_extents[0];
77d61fe45e7205 Darrick J. Wong 2016-10-03 453 startblock_fsb = XFS_BB_TO_FSB(mp,
77d61fe45e7205 Darrick J. Wong 2016-10-03 454 XFS_FSB_TO_DADDR(mp,
bmap->me_startblock));
77d61fe45e7205 Darrick J. Wong 2016-10-03 455 inode_fsb = XFS_BB_TO_FSB(mp,
XFS_FSB_TO_DADDR(mp,
77d61fe45e7205 Darrick J. Wong 2016-10-03 456 XFS_INO_TO_FSB(mp,
bmap->me_owner)));
ff363fee12a551 Darrick J. Wong 2020-05-21 457 state = (bmap->me_flags &
XFS_BMAP_EXTENT_UNWRITTEN) ?
ff363fee12a551 Darrick J. Wong 2020-05-21 458 XFS_EXT_UNWRITTEN : XFS_EXT_NORM;
ff363fee12a551 Darrick J. Wong 2020-05-21 459 whichfork = (bmap->me_flags &
XFS_BMAP_EXTENT_ATTR_FORK) ?
ff363fee12a551 Darrick J. Wong 2020-05-21 460 XFS_ATTR_FORK : XFS_DATA_FORK;
ff363fee12a551 Darrick J. Wong 2020-05-21 461 bui_type = bmap->me_flags &
XFS_BMAP_EXTENT_TYPE_MASK;
ff363fee12a551 Darrick J. Wong 2020-05-21 462 switch (bui_type) {
77d61fe45e7205 Darrick J. Wong 2016-10-03 463 case XFS_BMAP_MAP:
77d61fe45e7205 Darrick J. Wong 2016-10-03 464 case XFS_BMAP_UNMAP:
77d61fe45e7205 Darrick J. Wong 2016-10-03 465 break;
77d61fe45e7205 Darrick J. Wong 2016-10-03 466 default:
ff363fee12a551 Darrick J. Wong 2020-05-21 467 goto garbage;
77d61fe45e7205 Darrick J. Wong 2016-10-03 468 }
ff363fee12a551 Darrick J. Wong 2020-05-21 469 if (startblock_fsb == 0 ||
77d61fe45e7205 Darrick J. Wong 2016-10-03 470 bmap->me_len == 0 ||
77d61fe45e7205 Darrick J. Wong 2016-10-03 471 inode_fsb == 0 ||
77d61fe45e7205 Darrick J. Wong 2016-10-03 472 startblock_fsb >=
mp->m_sb.sb_dblocks ||
77d61fe45e7205 Darrick J. Wong 2016-10-03 473 bmap->me_len >=
mp->m_sb.sb_agblocks ||
77d61fe45e7205 Darrick J. Wong 2016-10-03 474 inode_fsb >=
mp->m_sb.sb_dblocks ||
ff363fee12a551 Darrick J. Wong 2020-05-21 475 (bmap->me_flags &
~XFS_BMAP_EXTENT_FLAGS))
ff363fee12a551 Darrick J. Wong 2020-05-21 476 goto garbage;
9f3afb57d5f1e7 Darrick J. Wong 2016-10-03 477
9f3afb57d5f1e7 Darrick J. Wong 2016-10-03 478 /* Grab the inode. */
ff363fee12a551 Darrick J. Wong 2020-05-21 479 error = xfs_iget(mp, NULL,
bmap->me_owner, 0, 0, &ip);
9f3afb57d5f1e7 Darrick J. Wong 2016-10-03 480 if (error)
ff363fee12a551 Darrick J. Wong 2020-05-21 481 return error;
17c12bcd3030e4 Darrick J. Wong 2016-10-03 482 if (VFS_I(ip)->i_nlink == 0)
17c12bcd3030e4 Darrick J. Wong 2016-10-03 483 xfs_iflags_set(ip, XFS_IRECOVERY);
9f3afb57d5f1e7 Darrick J. Wong 2016-10-03 484
ff363fee12a551 Darrick J. Wong 2020-05-21 485 /* Allocate transaction and do the
work. */
ff363fee12a551 Darrick J. Wong 2020-05-21 486 error = xfs_trans_alloc(mp,
&M_RES(mp)->tr_itruncate,
ff363fee12a551 Darrick J. Wong 2020-05-21 487 XFS_EXTENTADD_SPACE_RES(mp,
XFS_DATA_FORK), 0, 0, &tp);
ff363fee12a551 Darrick J. Wong 2020-05-21 488 if (error)
ff363fee12a551 Darrick J. Wong 2020-05-21 489 goto err_rele;
ff363fee12a551 Darrick J. Wong 2020-05-21 490
ff363fee12a551 Darrick J. Wong 2020-05-21 491 budp = xfs_trans_get_bud(tp, buip);
ff363fee12a551 Darrick J. Wong 2020-05-21 492 xfs_ilock(ip, XFS_ILOCK_EXCL);
9f3afb57d5f1e7 Darrick J. Wong 2016-10-03 493 xfs_trans_ijoin(tp, ip, 0);
9f3afb57d5f1e7 Darrick J. Wong 2016-10-03 494
e1a4e37cc7b665 Darrick J. Wong 2017-06-14 495 count = bmap->me_len;
ff363fee12a551 Darrick J. Wong 2020-05-21 496 error =
xfs_trans_log_finish_bmap_update(tp, budp, bui_type, ip,
ff363fee12a551 Darrick J. Wong 2020-05-21 497 whichfork, bmap->me_startoff,
bmap->me_startblock,
ff363fee12a551 Darrick J. Wong 2020-05-21 498 &count, state);
9f3afb57d5f1e7 Darrick J. Wong 2016-10-03 499 if (error)
ff363fee12a551 Darrick J. Wong 2020-05-21 500 goto err_cancel;
9f3afb57d5f1e7 Darrick J. Wong 2016-10-03 501
e1a4e37cc7b665 Darrick J. Wong 2017-06-14 502 if (count > 0) {
e1a4e37cc7b665 Darrick J. Wong 2017-06-14 @503 ASSERT(type == XFS_BMAP_UNMAP);
^^^^^^^^^^^^^^^^^^^^^^
Dead code.
e1a4e37cc7b665 Darrick J. Wong 2017-06-14 504 irec.br_startblock =
bmap->me_startblock;
e1a4e37cc7b665 Darrick J. Wong 2017-06-14 505 irec.br_blockcount = count;
e1a4e37cc7b665 Darrick J. Wong 2017-06-14 506 irec.br_startoff =
bmap->me_startoff;
e1a4e37cc7b665 Darrick J. Wong 2017-06-14 507 irec.br_state = state;
3e08f42ae7828b Darrick J. Wong 2019-08-26 508 xfs_bmap_unmap_extent(tp, ip,
&irec);
e1a4e37cc7b665 Darrick J. Wong 2017-06-14 509 }
e1a4e37cc7b665 Darrick J. Wong 2017-06-14 510
ff363fee12a551 Darrick J. Wong 2020-05-21 511 /* Commit transaction, which frees tp.
*/
aaddb7e46e876a Darrick J. Wong 2020-05-15 512 error = xlog_recover_trans_commit(tp,
dfcp);
ff363fee12a551 Darrick J. Wong 2020-05-21 513 if (error)
ff363fee12a551 Darrick J. Wong 2020-05-21 514 goto err_unlock;
ff363fee12a551 Darrick J. Wong 2020-05-21 515 return 0;
9f3afb57d5f1e7 Darrick J. Wong 2016-10-03 516
ff363fee12a551 Darrick J. Wong 2020-05-21 517 err_cancel:
9f3afb57d5f1e7 Darrick J. Wong 2016-10-03 518 xfs_trans_cancel(tp);
ff363fee12a551 Darrick J. Wong 2020-05-21 519 err_unlock:
9f3afb57d5f1e7 Darrick J. Wong 2016-10-03 520 xfs_iunlock(ip, XFS_ILOCK_EXCL);
ff363fee12a551 Darrick J. Wong 2020-05-21 521 err_rele:
44a8736bd20a08 Darrick J. Wong 2018-07-25 522 xfs_irele(ip);
77d61fe45e7205 Darrick J. Wong 2016-10-03 523 return error;
ff363fee12a551 Darrick J. Wong 2020-05-21 524 garbage:
ff363fee12a551 Darrick J. Wong 2020-05-21 525 xfs_bui_release(buip);
ff363fee12a551 Darrick J. Wong 2020-05-21 526 return -EFSCORRUPTED;
77d61fe45e7205 Darrick J. Wong 2016-10-03 527 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org