Re: [PATCH 1/8] xfs: Pull EFI/EFD handling out from under the AIL lock

Christoph Hellwig
2010-11-30T20:15:55Z

- xfs_efi_init needs to initialize efi_next_extent using ATOMIC_INIT
- there is a behaviour change about the xfs_trans_del_item call
in xfs_efi_item_unpin - before it was protected by the
XFS_EFI_CANCELED which was never set, and now it's not.
- what happened to XFS_EFI_RECOVERED? You changed it to be indexed
for the atomic bit-ops, but it's still used non-atomic in the log
recovery code.
- Why is XFS_EFI_COMMITTED cleared in xlog_recover_do_efi_trans,
where it can't ever be set?
- can you please add a shared helper for xfs_efi_item_unpin and
xfs_efi_release, ala:

STATIC void
__xfs_efi_release(
xfs_efi_log_item_t *efip)
{
if (!test_and_clear_bit(XFS_EFI_COMMITTED, &efip->efi_flags)) {
struct xfs_ail *ailp = efip->efi_item.li_ailp;

spin_lock(&ailp->xa_lock);
/* xfs_trans_ail_delete() drops the AIL lock. */
xfs_trans_ail_delete(ailp, &efip->efi_item);
xfs_efi_item_free(efip);
}

so that it's obvious they do the same release operation?