338
339
340
341
342
343
344void
345xfs_efi_release(xfs_efi_log_item_t *efip,
346 uint nextents)
347{
348 xfs_mount_t *mp;
349 int extents_left;
350
351 mp = efip->efi_item.li_mountp;
352 ASSERT(efip->efi_next_extent > 0);
353 ASSERT(efip->efi_flags & XFS_EFI_COMMITTED);
354
355 spin_lock(&mp->m_ail_lock);
356 ASSERT(efip->efi_next_extent >= nextents);
357 efip->efi_next_extent -= nextents;
358 extents_left = efip->efi_next_extent;
359 if (extents_left == 0) {
360
361
362
363 xfs_trans_delete_ail(mp, (xfs_log_item_t *)efip);
364 xfs_efi_item_free(efip);
365 } else {
366 spin_unlock(&mp->m_ail_lock);
367 }
368}
369
370STATIC void
371xfs_efd_item_free(xfs_efd_log_item_t *efdp)
372{
373 int nexts = efdp->efd_format.efd_nextents;
374
375 if (nexts > XFS_EFD_MAX_FAST_EXTENTS) {
376 kmem_free(efdp);
377 } else {
378 kmem_zone_free(xfs_efd_zone, efdp);