xfs: don't release log intent items when recovery fails
Nowadays, log recovery will call ->release on the recovered intent items if recovery fails. Therefore, it's redundant to release them from inside the ->recover functions when they're about to return an error. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dave Chinner <dchinner@redhat.com>
This commit is contained in:
Родитель
2dbf872c04
Коммит
384ff09ba2
|
@ -444,10 +444,8 @@ xfs_bui_item_recover(
|
|||
int error = 0;
|
||||
|
||||
/* Only one mapping operation per BUI... */
|
||||
if (buip->bui_format.bui_nextents != XFS_BUI_MAX_FAST_EXTENTS) {
|
||||
xfs_bui_release(buip);
|
||||
if (buip->bui_format.bui_nextents != XFS_BUI_MAX_FAST_EXTENTS)
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* First check the validity of the extent described by the
|
||||
|
@ -473,14 +471,8 @@ xfs_bui_item_recover(
|
|||
startblock_fsb >= mp->m_sb.sb_dblocks ||
|
||||
bmap->me_len >= mp->m_sb.sb_agblocks ||
|
||||
inode_fsb >= mp->m_sb.sb_dblocks ||
|
||||
(bmap->me_flags & ~XFS_BMAP_EXTENT_FLAGS)) {
|
||||
/*
|
||||
* This will pull the BUI from the AIL and
|
||||
* free the memory associated with it.
|
||||
*/
|
||||
xfs_bui_release(buip);
|
||||
(bmap->me_flags & ~XFS_BMAP_EXTENT_FLAGS))
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
error = xfs_trans_alloc(mp, &M_RES(mp)->tr_itruncate,
|
||||
XFS_EXTENTADD_SPACE_RES(mp, XFS_DATA_FORK), 0, 0, &tp);
|
||||
|
|
|
@ -608,14 +608,8 @@ xfs_efi_item_recover(
|
|||
if (startblock_fsb == 0 ||
|
||||
extp->ext_len == 0 ||
|
||||
startblock_fsb >= mp->m_sb.sb_dblocks ||
|
||||
extp->ext_len >= mp->m_sb.sb_agblocks) {
|
||||
/*
|
||||
* This will pull the EFI from the AIL and
|
||||
* free the memory associated with it.
|
||||
*/
|
||||
xfs_efi_release(efip);
|
||||
extp->ext_len >= mp->m_sb.sb_agblocks)
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
}
|
||||
|
||||
error = xfs_trans_alloc(mp, &M_RES(mp)->tr_itruncate, 0, 0, 0, &tp);
|
||||
|
|
|
@ -467,14 +467,8 @@ xfs_cui_item_recover(
|
|||
refc->pe_len == 0 ||
|
||||
startblock_fsb >= mp->m_sb.sb_dblocks ||
|
||||
refc->pe_len >= mp->m_sb.sb_agblocks ||
|
||||
(refc->pe_flags & ~XFS_REFCOUNT_EXTENT_FLAGS)) {
|
||||
/*
|
||||
* This will pull the CUI from the AIL and
|
||||
* free the memory associated with it.
|
||||
*/
|
||||
xfs_cui_release(cuip);
|
||||
(refc->pe_flags & ~XFS_REFCOUNT_EXTENT_FLAGS))
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -511,14 +511,8 @@ xfs_rui_item_recover(
|
|||
rmap->me_len == 0 ||
|
||||
startblock_fsb >= mp->m_sb.sb_dblocks ||
|
||||
rmap->me_len >= mp->m_sb.sb_agblocks ||
|
||||
(rmap->me_flags & ~XFS_RMAP_EXTENT_FLAGS)) {
|
||||
/*
|
||||
* This will pull the RUI from the AIL and
|
||||
* free the memory associated with it.
|
||||
*/
|
||||
xfs_rui_release(ruip);
|
||||
(rmap->me_flags & ~XFS_RMAP_EXTENT_FLAGS))
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
}
|
||||
|
||||
error = xfs_trans_alloc(mp, &M_RES(mp)->tr_itruncate,
|
||||
|
|
Загрузка…
Ссылка в новой задаче