xfs: add helper to conditionally remove items from the AIL

Several areas of code duplicate a pattern where we take the AIL lock,
check whether an item is in the AIL and remove it if so. Create a new
helper for this pattern and use it where appropriate.

Signed-off-by: Brian Foster <bfoster@redhat.com>
This commit is contained in:
Brian Foster
2015-08-19 10:01:08 +10:00
committed by Dave Chinner
parent f307080a62
commit 146e54b71e
5 changed files with 21 additions and 33 deletions

View File

@@ -286,20 +286,8 @@ void
xfs_efi_release(
struct xfs_efi_log_item *efip)
{
struct xfs_ail *ailp = efip->efi_item.li_ailp;
if (atomic_dec_and_test(&efip->efi_refcount)) {
spin_lock(&ailp->xa_lock);
/*
* We don't know whether the EFI made it to the AIL. Remove it
* if so. Note that xfs_trans_ail_delete() drops the AIL lock.
*/
if (efip->efi_item.li_flags & XFS_LI_IN_AIL)
xfs_trans_ail_delete(ailp, &efip->efi_item,
SHUTDOWN_LOG_IO_ERROR);
else
spin_unlock(&ailp->xa_lock);
xfs_trans_ail_remove(&efip->efi_item, SHUTDOWN_LOG_IO_ERROR);
xfs_efi_item_free(efip);
}
}