Commit 9676b54e authored by Darrick J. Wong's avatar Darrick J. Wong
Browse files

xfs: make xfs_trans_get_buf_map return an error code



Convert xfs_trans_get_buf_map() to return numeric error codes like most
everywhere else in xfs.

Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
parent 0e3eccce
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -2591,13 +2591,9 @@ xfs_da_get_buf(
	if (error || nmap == 0)
		goto out_free;

	bp = xfs_trans_get_buf_map(tp, mp->m_ddev_targp, mapp, nmap, 0);
	error = bp ? bp->b_error : -EIO;
	if (error) {
		if (bp)
			xfs_trans_brelse(tp, bp);
	error = xfs_trans_get_buf_map(tp, mp->m_ddev_targp, mapp, nmap, 0, &bp);
	if (error)
		goto out_free;
	}

	*bpp = bp;

+10 −5
Original line number Diff line number Diff line
@@ -169,10 +169,9 @@ int xfs_trans_alloc_empty(struct xfs_mount *mp,
			struct xfs_trans **tpp);
void		xfs_trans_mod_sb(xfs_trans_t *, uint, int64_t);

struct xfs_buf	*xfs_trans_get_buf_map(struct xfs_trans *tp,
				       struct xfs_buftarg *target,
				       struct xfs_buf_map *map, int nmaps,
				       uint flags);
int xfs_trans_get_buf_map(struct xfs_trans *tp, struct xfs_buftarg *target,
		struct xfs_buf_map *map, int nmaps, xfs_buf_flags_t flags,
		struct xfs_buf **bpp);

static inline struct xfs_buf *
xfs_trans_get_buf(
@@ -182,8 +181,14 @@ xfs_trans_get_buf(
	int			numblks,
	uint			flags)
{
	struct xfs_buf		*bp;
	int			error;

	DEFINE_SINGLE_BUF_MAP(map, blkno, numblks);
	return xfs_trans_get_buf_map(tp, target, &map, 1, flags);
	error = xfs_trans_get_buf_map(tp, target, &map, 1, flags, &bp);
	if (error)
		return NULL;
	return bp;
}

int		xfs_trans_read_buf_map(struct xfs_mount *mp,
+11 −11
Original line number Diff line number Diff line
@@ -112,24 +112,22 @@ xfs_trans_bjoin(
 * If the transaction pointer is NULL, make this just a normal
 * get_buf() call.
 */
struct xfs_buf *
int
xfs_trans_get_buf_map(
	struct xfs_trans	*tp,
	struct xfs_buftarg	*target,
	struct xfs_buf_map	*map,
	int			nmaps,
	xfs_buf_flags_t		flags)
	xfs_buf_flags_t		flags,
	struct xfs_buf		**bpp)
{
	xfs_buf_t		*bp;
	struct xfs_buf_log_item	*bip;
	int			error;

	if (!tp) {
		error = xfs_buf_get_map(target, map, nmaps, flags, &bp);
		if (error)
			return NULL;
		return bp;
	}
	*bpp = NULL;
	if (!tp)
		return xfs_buf_get_map(target, map, nmaps, flags, bpp);

	/*
	 * If we find the buffer in the cache with this transaction
@@ -151,18 +149,20 @@ xfs_trans_get_buf_map(
		ASSERT(atomic_read(&bip->bli_refcount) > 0);
		bip->bli_recur++;
		trace_xfs_trans_get_buf_recur(bip);
		return bp;
		*bpp = bp;
		return 0;
	}

	error = xfs_buf_get_map(target, map, nmaps, flags, &bp);
	if (error)
		return NULL;
		return error;

	ASSERT(!bp->b_error);

	_xfs_trans_bjoin(tp, bp, 1);
	trace_xfs_trans_get_buf(bp->b_log_item);
	return bp;
	*bpp = bp;
	return 0;
}

/*