/* This is called to asynchronously write the buffer associated with this buf log item out to disk. The buffer will already have been locked by a successful call to xfs_buf_item_trylock(). If the buffer still has B_DELWRI set, then get it going out to disk with a call to bawrite(). If not, then just release the buffer.  */
STATIC void xfs_buf_item_push(xfs_buf_log_item_t *bip)
/* This is called to asynchronously write the buffer associated with this buf log item out to disk. The buffer will already have been locked by a successful call to xfs_buf_item_trylock(). If the buffer still has B_DELWRI set, then get it going out to disk with a call to bawrite(). If not, then just release the buffer.  */
STATIC void xfs_buf_item_push(xfs_buf_log_item_t *bip)
{
	xfs_buf_t	*bp;
	ASSERT(!(bip->bli_flags & XFS_BLI_STALE));
	trace_xfs_buf_item_push(bip);
	bp = bip->bli_buf;
	if (XFS_BUF_ISDELAYWRITE(bp)) {
		int	error;
		error = xfs_bawrite(bip->bli_item.li_mountp, bp);
		if (error)
			xfs_fs_cmn_err(CE_WARN, bip->bli_item.li_mountp,
			"xfs_buf_item_push: pushbuf error %d on bip %p, bp %p",
					error, bip, bp);
	} else {
		xfs_buf_relse(bp);
	}
}