/* * This is called when the buf log item is no longer needed. It should * free the buf log item associated with the given buffer and clear * the buffer's pointer to the buf log item. If there are no more * items in the list, clear the b_iodone field of the buffer (see * xfs_buf_attach_iodone() below). */ void xfs_buf_item_relse( xfs_buf_t *bp) { xfs_buf_log_item_t *bip; trace_xfs_buf_item_relse(bp, _RET_IP_); bip = bp->b_fspriv; bp->b_fspriv = bip->bli_item.li_bio_list; if (bp->b_fspriv == NULL) bp->b_iodone = NULL; xfs_buf_rele(bp); xfs_buf_item_free(bip); }
/* * This is called when the buf log item is no longer needed. It should * free the buf log item associated with the given buffer and clear * the buffer's pointer to the buf log item. If there are no more * items in the list, clear the b_iodone field of the buffer (see * xfs_buf_attach_iodone() below). */ void xfs_buf_item_relse( xfs_buf_t *bp) { xfs_buf_log_item_t *bip = bp->b_fspriv; trace_xfs_buf_item_relse(bp, _RET_IP_); ASSERT(!(bip->bli_item.li_flags & XFS_LI_IN_AIL)); bp->b_fspriv = bip->bli_item.li_bio_list; if (bp->b_fspriv == NULL) bp->b_iodone = NULL; xfs_buf_rele(bp); xfs_buf_item_free(bip); }