|
@@ -108,10 +108,12 @@ xfs_efi_item_pin(xfs_efi_log_item_t *efip)
|
|
|
STATIC void
|
|
|
xfs_efi_item_unpin(xfs_efi_log_item_t *efip, int stale)
|
|
|
{
|
|
|
- xfs_mount_t *mp;
|
|
|
+ xfs_mount_t *mp;
|
|
|
+ struct xfs_ail *ailp;
|
|
|
|
|
|
mp = efip->efi_item.li_mountp;
|
|
|
- spin_lock(&mp->m_ail->xa_lock);
|
|
|
+ ailp = efip->efi_item.li_ailp;
|
|
|
+ spin_lock(&ailp->xa_lock);
|
|
|
if (efip->efi_flags & XFS_EFI_CANCELED) {
|
|
|
/*
|
|
|
* xfs_trans_delete_ail() drops the AIL lock.
|
|
@@ -120,7 +122,7 @@ xfs_efi_item_unpin(xfs_efi_log_item_t *efip, int stale)
|
|
|
xfs_efi_item_free(efip);
|
|
|
} else {
|
|
|
efip->efi_flags |= XFS_EFI_COMMITTED;
|
|
|
- spin_unlock(&mp->m_ail->xa_lock);
|
|
|
+ spin_unlock(&ailp->xa_lock);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -134,11 +136,13 @@ xfs_efi_item_unpin(xfs_efi_log_item_t *efip, int stale)
|
|
|
STATIC void
|
|
|
xfs_efi_item_unpin_remove(xfs_efi_log_item_t *efip, xfs_trans_t *tp)
|
|
|
{
|
|
|
- xfs_mount_t *mp;
|
|
|
+ xfs_mount_t *mp;
|
|
|
+ struct xfs_ail *ailp;
|
|
|
xfs_log_item_desc_t *lidp;
|
|
|
|
|
|
mp = efip->efi_item.li_mountp;
|
|
|
- spin_lock(&mp->m_ail->xa_lock);
|
|
|
+ ailp = efip->efi_item.li_ailp;
|
|
|
+ spin_lock(&ailp->xa_lock);
|
|
|
if (efip->efi_flags & XFS_EFI_CANCELED) {
|
|
|
/*
|
|
|
* free the xaction descriptor pointing to this item
|
|
@@ -153,7 +157,7 @@ xfs_efi_item_unpin_remove(xfs_efi_log_item_t *efip, xfs_trans_t *tp)
|
|
|
xfs_efi_item_free(efip);
|
|
|
} else {
|
|
|
efip->efi_flags |= XFS_EFI_COMMITTED;
|
|
|
- spin_unlock(&mp->m_ail->xa_lock);
|
|
|
+ spin_unlock(&ailp->xa_lock);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -268,6 +272,7 @@ xfs_efi_init(xfs_mount_t *mp,
|
|
|
efip->efi_item.li_type = XFS_LI_EFI;
|
|
|
efip->efi_item.li_ops = &xfs_efi_item_ops;
|
|
|
efip->efi_item.li_mountp = mp;
|
|
|
+ efip->efi_item.li_ailp = mp->m_ail;
|
|
|
efip->efi_format.efi_nextents = nextents;
|
|
|
efip->efi_format.efi_id = (__psint_t)(void*)efip;
|
|
|
|
|
@@ -345,14 +350,16 @@ void
|
|
|
xfs_efi_release(xfs_efi_log_item_t *efip,
|
|
|
uint nextents)
|
|
|
{
|
|
|
- xfs_mount_t *mp;
|
|
|
- int extents_left;
|
|
|
+ xfs_mount_t *mp;
|
|
|
+ struct xfs_ail *ailp;
|
|
|
+ int extents_left;
|
|
|
|
|
|
mp = efip->efi_item.li_mountp;
|
|
|
+ ailp = efip->efi_item.li_ailp;
|
|
|
ASSERT(efip->efi_next_extent > 0);
|
|
|
ASSERT(efip->efi_flags & XFS_EFI_COMMITTED);
|
|
|
|
|
|
- spin_lock(&mp->m_ail->xa_lock);
|
|
|
+ spin_lock(&ailp->xa_lock);
|
|
|
ASSERT(efip->efi_next_extent >= nextents);
|
|
|
efip->efi_next_extent -= nextents;
|
|
|
extents_left = efip->efi_next_extent;
|
|
@@ -363,7 +370,7 @@ xfs_efi_release(xfs_efi_log_item_t *efip,
|
|
|
xfs_trans_delete_ail(mp, (xfs_log_item_t *)efip);
|
|
|
xfs_efi_item_free(efip);
|
|
|
} else {
|
|
|
- spin_unlock(&mp->m_ail->xa_lock);
|
|
|
+ spin_unlock(&ailp->xa_lock);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -565,6 +572,7 @@ xfs_efd_init(xfs_mount_t *mp,
|
|
|
efdp->efd_item.li_type = XFS_LI_EFD;
|
|
|
efdp->efd_item.li_ops = &xfs_efd_item_ops;
|
|
|
efdp->efd_item.li_mountp = mp;
|
|
|
+ efdp->efd_item.li_ailp = mp->m_ail;
|
|
|
efdp->efd_efip = efip;
|
|
|
efdp->efd_format.efd_nextents = nextents;
|
|
|
efdp->efd_format.efd_efi_id = efip->efi_format.efi_id;
|