Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c2b006c1 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Alex Elder
Browse files

xfs: let xfs_bwrite callers handle the xfs_buf_relse



Remove the xfs_buf_relse from xfs_bwrite and let the caller handle it to
mirror the delwri and read paths.

Also remove the mount pointer passed to xfs_bwrite, which is superflous now
that we have a mount pointer in the buftarg.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
Signed-off-by: default avatarAlex Elder <aelder@sgi.com>
parent 61551f1e
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -2128,9 +2128,10 @@ xfs_attr_rmtval_set(xfs_da_args_t *args)
		xfs_buf_iomove(bp, 0, tmp, src, XBRW_WRITE);
		if (tmp < XFS_BUF_SIZE(bp))
			xfs_buf_zero(bp, tmp, XFS_BUF_SIZE(bp) - tmp);
		if ((error = xfs_bwrite(mp, bp))) {/* GROT: NOTE: synchronous write */
			return (error);
		}
		error = xfs_bwrite(bp);	/* GROT: NOTE: synchronous write */
		xfs_buf_relse(bp);
		if (error)
			return error;
		src += tmp;
		valuelen -= tmp;

+4 −4
Original line number Diff line number Diff line
@@ -1014,7 +1014,6 @@ xfs_buf_ioerror(

int
xfs_bwrite(
	struct xfs_mount	*mp,
	struct xfs_buf		*bp)
{
	int			error;
@@ -1026,9 +1025,10 @@ xfs_bwrite(
	xfs_bdstrat_cb(bp);

	error = xfs_buf_iowait(bp);
	if (error)
		xfs_force_shutdown(mp, SHUTDOWN_META_IO_ERROR);
	xfs_buf_relse(bp);
	if (error) {
		xfs_force_shutdown(bp->b_target->bt_mount,
				   SHUTDOWN_META_IO_ERROR);
	}
	return error;
}

+1 −1
Original line number Diff line number Diff line
@@ -197,7 +197,7 @@ extern void xfs_buf_unlock(xfs_buf_t *);
	((bp)->b_sema.count <= 0)

/* Buffer Read and Write Routines */
extern int xfs_bwrite(struct xfs_mount *mp, struct xfs_buf *bp);
extern int xfs_bwrite(struct xfs_buf *bp);

extern void xfsbdstrat(struct xfs_mount *, struct xfs_buf *);
extern int xfs_bdstrat_cb(struct xfs_buf *);
+4 −4
Original line number Diff line number Diff line
@@ -1242,11 +1242,11 @@ xfs_qm_dqflush(
	}

	if (flags & SYNC_WAIT)
		error = xfs_bwrite(mp, bp);
	else {
		error = xfs_bwrite(bp);
	else
		xfs_buf_delwri_queue(bp);

	xfs_buf_relse(bp);
	}

	trace_xfs_dqflush_done(dqp);

+22 −18
Original line number Diff line number Diff line
@@ -216,10 +216,11 @@ xfs_growfs_data_private(
		tmpsize = agsize - XFS_PREALLOC_BLOCKS(mp);
		agf->agf_freeblks = cpu_to_be32(tmpsize);
		agf->agf_longest = cpu_to_be32(tmpsize);
		error = xfs_bwrite(mp, bp);
		if (error) {
		error = xfs_bwrite(bp);
		xfs_buf_relse(bp);
		if (error)
			goto error0;
		}

		/*
		 * AG inode header block
		 */
@@ -240,10 +241,11 @@ xfs_growfs_data_private(
		agi->agi_dirino = cpu_to_be32(NULLAGINO);
		for (bucket = 0; bucket < XFS_AGI_UNLINKED_BUCKETS; bucket++)
			agi->agi_unlinked[bucket] = cpu_to_be32(NULLAGINO);
		error = xfs_bwrite(mp, bp);
		if (error) {
		error = xfs_bwrite(bp);
		xfs_buf_relse(bp);
		if (error)
			goto error0;
		}

		/*
		 * BNO btree root block
		 */
@@ -262,10 +264,11 @@ xfs_growfs_data_private(
		arec->ar_startblock = cpu_to_be32(XFS_PREALLOC_BLOCKS(mp));
		arec->ar_blockcount = cpu_to_be32(
			agsize - be32_to_cpu(arec->ar_startblock));
		error = xfs_bwrite(mp, bp);
		if (error) {
		error = xfs_bwrite(bp);
		xfs_buf_relse(bp);
		if (error)
			goto error0;
		}

		/*
		 * CNT btree root block
		 */
@@ -285,10 +288,11 @@ xfs_growfs_data_private(
		arec->ar_blockcount = cpu_to_be32(
			agsize - be32_to_cpu(arec->ar_startblock));
		nfree += be32_to_cpu(arec->ar_blockcount);
		error = xfs_bwrite(mp, bp);
		if (error) {
		error = xfs_bwrite(bp);
		xfs_buf_relse(bp);
		if (error)
			goto error0;
		}

		/*
		 * INO btree root block
		 */
@@ -303,11 +307,11 @@ xfs_growfs_data_private(
		block->bb_numrecs = 0;
		block->bb_u.s.bb_leftsib = cpu_to_be32(NULLAGBLOCK);
		block->bb_u.s.bb_rightsib = cpu_to_be32(NULLAGBLOCK);
		error = xfs_bwrite(mp, bp);
		if (error) {
		error = xfs_bwrite(bp);
		xfs_buf_relse(bp);
		if (error)
			goto error0;
	}
	}
	xfs_trans_agblocks_delta(tp, nfree);
	/*
	 * There are new blocks in the old last a.g.
@@ -396,9 +400,9 @@ xfs_growfs_data_private(
		 * just issue a warning and continue.  The real work is
		 * already done and committed.
		 */
		if (!(error = xfs_bwrite(mp, bp))) {
			continue;
		} else {
		error = xfs_bwrite(bp);
		xfs_buf_relse(bp);
		if (error) {
			xfs_warn(mp,
		"write error %d updating secondary superblock for ag %d",
				error, agno);
Loading