/* * The transaction of which this EFD is a part has been aborted. * Inform its companion EFI of this fact and then clean up after * ourselves. No need to clean up the slot for the item in the * transaction. That was done by the unpin code which is called * prior to this routine in the abort/fs-shutdown path. */ STATIC void xfs_efd_item_abort(xfs_efd_log_item_t *efdp) { /* * If we got a log I/O error, it's always the case that the LR with the * EFI got unpinned and freed before the EFD got aborted. So don't * reference the EFI at all in that case. */ if ((efdp->efd_item.li_flags & XFS_LI_ABORTED) == 0) xfs_efi_cancel(efdp->efd_efip); xfs_efd_item_free(efdp); }
/* * The transaction of which this EFD is a part has been aborted. * Inform its companion EFI of this fact and then clean up after * ourselves. No need to clean up the slot for the item in the * transaction. That was done by the unpin code which is called * prior to this routine in the abort/fs-shutdown path. */ STATIC void xfs_efd_item_abort(xfs_efd_log_item_t *efdp) { int nexts; int size; /* * If we got a log I/O error, it's always the case that the LR with the * EFI got unpinned and freed before the EFD got aborted. So don't * reference the EFI at all in that case. */ if ((efdp->efd_item.li_flags & XFS_LI_ABORTED) == 0) xfs_efi_cancel(efdp->efd_efip); nexts = efdp->efd_format.efd_nextents; if (nexts > XFS_EFD_MAX_FAST_EXTENTS) { size = sizeof(xfs_efd_log_item_t); size += (nexts - 1) * sizeof(xfs_extent_t); kmem_free(efdp, size); } else { kmem_zone_free(xfs_efd_zone, efdp); } return; }