diff options
| author | Christoph Hellwig <hch@infradead.org> | 2011-08-23 08:28:07 +0000 | 
|---|---|---|
| committer | Alex Elder <aelder@sgi.com> | 2011-10-11 21:15:00 -0500 | 
| commit | c2b006c1da1602551def200e4661535f02b82488 (patch) | |
| tree | 6801f459bb218ed062d30e31eb92d3867ce8166a /fs/xfs/xfs_fsops.c | |
| parent | 61551f1ee536289084a4a8f1c4f187e2f371c440 (diff) | |
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: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Alex Elder <aelder@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_fsops.c')
| -rw-r--r-- | fs/xfs/xfs_fsops.c | 40 | 
1 files changed, 22 insertions, 18 deletions
| diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c index 9153d2c77caf..e023f940a3dd 100644 --- a/fs/xfs/xfs_fsops.c +++ b/fs/xfs/xfs_fsops.c @@ -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,10 +307,10 @@ 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);  	/* @@ -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); | 
