diff options
| -rw-r--r-- | fs/btrfs/file.c | 8 | 
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index d415a052ca9..a43d0aef6ee 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c @@ -2054,12 +2054,12 @@ static long btrfs_fallocate(struct file *file, int mode,  	u64 alloc_end;  	u64 alloc_hint = 0;  	u64 locked_end; -	u64 mask = BTRFS_I(inode)->root->sectorsize - 1;  	struct extent_map *em; +	int blocksize = BTRFS_I(inode)->root->sectorsize;  	int ret; -	alloc_start = offset & ~mask; -	alloc_end =  (offset + len + mask) & ~mask; +	alloc_start = round_down(offset, blocksize); +	alloc_end = round_up(offset + len, blocksize);  	/* Make sure we aren't being give some crap mode */  	if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) @@ -2140,7 +2140,7 @@ static long btrfs_fallocate(struct file *file, int mode,  		}  		last_byte = min(extent_map_end(em), alloc_end);  		actual_end = min_t(u64, extent_map_end(em), offset + len); -		last_byte = (last_byte + mask) & ~mask; +		last_byte = ALIGN(last_byte, blocksize);  		if (em->block_start == EXTENT_MAP_HOLE ||  		    (cur_offset >= inode->i_size &&  |