forked from mirrors/linux
		
	xfs: handle 64-bit length in xfs_iozero
We'll want to use this code for large offsets now that we're skipping holes and unwritten extents efficiently. Also rename it to xfs_zero_range to be a bit more descriptive, and tell the caller if we actually did any zeroing. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
		
							parent
							
								
									459f0fbc2a
								
							
						
					
					
						commit
						7bb41db3ea
					
				
					 2 changed files with 8 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -85,10 +85,11 @@ xfs_rw_ilock_demote(
 | 
			
		|||
 * Holes and unwritten extents will be left as-is as they already are zeroed.
 | 
			
		||||
 */
 | 
			
		||||
int
 | 
			
		||||
xfs_iozero(
 | 
			
		||||
xfs_zero_range(
 | 
			
		||||
	struct xfs_inode	*ip,
 | 
			
		||||
	loff_t			pos,
 | 
			
		||||
	size_t			count)
 | 
			
		||||
	xfs_off_t		pos,
 | 
			
		||||
	xfs_off_t		count,
 | 
			
		||||
	bool			*did_zero)
 | 
			
		||||
{
 | 
			
		||||
	return iomap_zero_range(VFS_I(ip), pos, count, NULL, &xfs_iomap_ops);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -419,7 +420,7 @@ xfs_zero_last_block(
 | 
			
		|||
	if (isize + zero_len > offset)
 | 
			
		||||
		zero_len = offset - isize;
 | 
			
		||||
	*did_zeroing = true;
 | 
			
		||||
	return xfs_iozero(ip, isize, zero_len);
 | 
			
		||||
	return xfs_zero_range(ip, isize, zero_len, NULL);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
| 
						 | 
				
			
			@ -518,7 +519,7 @@ xfs_zero_eof(
 | 
			
		|||
		if ((zero_off + zero_len) > offset)
 | 
			
		||||
			zero_len = offset - zero_off;
 | 
			
		||||
 | 
			
		||||
		error = xfs_iozero(ip, zero_off, zero_len);
 | 
			
		||||
		error = xfs_zero_range(ip, zero_off, zero_len, NULL);
 | 
			
		||||
		if (error)
 | 
			
		||||
			return error;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -434,7 +434,8 @@ int	xfs_update_prealloc_flags(struct xfs_inode *ip,
 | 
			
		|||
				  enum xfs_prealloc_flags flags);
 | 
			
		||||
int	xfs_zero_eof(struct xfs_inode *ip, xfs_off_t offset,
 | 
			
		||||
		     xfs_fsize_t isize, bool *did_zeroing);
 | 
			
		||||
int	xfs_iozero(struct xfs_inode *ip, loff_t pos, size_t count);
 | 
			
		||||
int	xfs_zero_range(struct xfs_inode *ip, xfs_off_t pos, xfs_off_t count,
 | 
			
		||||
		bool *did_zero);
 | 
			
		||||
loff_t	__xfs_seek_hole_data(struct inode *inode, loff_t start,
 | 
			
		||||
			     loff_t eof, int whence);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue