diff options
| author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2012-03-19 17:02:01 -0700 | 
|---|---|---|
| committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2012-03-19 17:02:01 -0700 | 
| commit | 10ce3cc919f50c2043b41ca968b43c26a3672600 (patch) | |
| tree | ea409366a5208aced495bc0516a08b81fd43222e /fs/xfs/xfs_iomap.c | |
| parent | 24e3e5ae1e4c2a3a32f5b1f96b4e3fd721806acd (diff) | |
| parent | 5c6a7a62c130afef3d61c1dee153012231ff5cd9 (diff) | |
Merge branch 'next' into for-linus
Diffstat (limited to 'fs/xfs/xfs_iomap.c')
| -rw-r--r-- | fs/xfs/xfs_iomap.c | 46 | 
1 files changed, 23 insertions, 23 deletions
| diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index 9afa282aa93..246c7d57c6f 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c @@ -57,26 +57,26 @@ xfs_iomap_eof_align_last_fsb(  	xfs_fileoff_t	*last_fsb)  {  	xfs_fileoff_t	new_last_fsb = 0; -	xfs_extlen_t	align; +	xfs_extlen_t	align = 0;  	int		eof, error; -	if (XFS_IS_REALTIME_INODE(ip)) -		; -	/* -	 * If mounted with the "-o swalloc" option, roundup the allocation -	 * request to a stripe width boundary if the file size is >= -	 * stripe width and we are allocating past the allocation eof. -	 */ -	else if (mp->m_swidth && (mp->m_flags & XFS_MOUNT_SWALLOC) && -	        (ip->i_size >= XFS_FSB_TO_B(mp, mp->m_swidth))) -		new_last_fsb = roundup_64(*last_fsb, mp->m_swidth); -	/* -	 * Roundup the allocation request to a stripe unit (m_dalign) boundary -	 * if the file size is >= stripe unit size, and we are allocating past -	 * the allocation eof. -	 */ -	else if (mp->m_dalign && (ip->i_size >= XFS_FSB_TO_B(mp, mp->m_dalign))) -		new_last_fsb = roundup_64(*last_fsb, mp->m_dalign); +	if (!XFS_IS_REALTIME_INODE(ip)) { +		/* +		 * Round up the allocation request to a stripe unit +		 * (m_dalign) boundary if the file size is >= stripe unit +		 * size, and we are allocating past the allocation eof. +		 * +		 * If mounted with the "-o swalloc" option the alignment is +		 * increased from the strip unit size to the stripe width. +		 */ +		if (mp->m_swidth && (mp->m_flags & XFS_MOUNT_SWALLOC)) +			align = mp->m_swidth; +		else if (mp->m_dalign) +			align = mp->m_dalign; + +		if (align && XFS_ISIZE(ip) >= XFS_FSB_TO_B(mp, align)) +			new_last_fsb = roundup_64(*last_fsb, align); +	}  	/*  	 * Always round up the allocation request to an extent boundary @@ -154,7 +154,7 @@ xfs_iomap_write_direct(  	offset_fsb = XFS_B_TO_FSBT(mp, offset);  	last_fsb = XFS_B_TO_FSB(mp, ((xfs_ufsize_t)(offset + count))); -	if ((offset + count) > ip->i_size) { +	if ((offset + count) > XFS_ISIZE(ip)) {  		error = xfs_iomap_eof_align_last_fsb(mp, ip, extsz, &last_fsb);  		if (error)  			goto error_out; @@ -211,7 +211,7 @@ xfs_iomap_write_direct(  	xfs_trans_ijoin(tp, ip, 0);  	bmapi_flag = 0; -	if (offset < ip->i_size || extsz) +	if (offset < XFS_ISIZE(ip) || extsz)  		bmapi_flag |= XFS_BMAPI_PREALLOC;  	/* @@ -286,7 +286,7 @@ xfs_iomap_eof_want_preallocate(  	int		found_delalloc = 0;  	*prealloc = 0; -	if ((offset + count) <= ip->i_size) +	if (offset + count <= XFS_ISIZE(ip))  		return 0;  	/* @@ -340,7 +340,7 @@ xfs_iomap_prealloc_size(  		 * if we pass in alloc_blocks = 0. Hence the "+ 1" to  		 * ensure we always pass in a non-zero value.  		 */ -		alloc_blocks = XFS_B_TO_FSB(mp, ip->i_size) + 1; +		alloc_blocks = XFS_B_TO_FSB(mp, XFS_ISIZE(ip)) + 1;  		alloc_blocks = XFS_FILEOFF_MIN(MAXEXTLEN,  					rounddown_pow_of_two(alloc_blocks)); @@ -564,7 +564,7 @@ xfs_iomap_write_allocate(  			 * back....  			 */  			nimaps = 1; -			end_fsb = XFS_B_TO_FSB(mp, ip->i_size); +			end_fsb = XFS_B_TO_FSB(mp, XFS_ISIZE(ip));  			error = xfs_bmap_last_offset(NULL, ip, &last_block,  							XFS_DATA_FORK);  			if (error) | 
