diff options
| author | Qu Wenruo <quwenruo@cn.fujitsu.com> | 2015-10-14 10:26:13 +0300 | 
|---|---|---|
| committer | Chris Mason <clm@fb.com> | 2015-10-21 05:07:29 +0300 | 
| commit | 0f6925fa2907df58496cabc33fa4677c635e2223 (patch) | |
| tree | 85b4f57ea06fb3f0b0cbb50412742d64719defbb /drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c | |
| parent | dc6c5fb3b514221f2e9d21ee626a9d95d3418dff (diff) | |
| download | linux-0f6925fa2907df58496cabc33fa4677c635e2223.tar.xz | |
btrfs: Avoid truncate tailing page if fallocate range doesn't exceed inode size
Current code will always truncate tailing page if its alloc_start is
smaller than inode size.
For example, the file extent layout is like:
0	4K	8K	16K	32K
|<-----Extent A---------------->|
|<--Inode size: 18K---------->|
But if calling fallocate even for range [0,4K), it will cause btrfs to
re-truncate the range [16,32K), causing COW and a new extent.
0	4K	8K	16K	32K
|///////|	<- Fallocate call range
|<-----Extent A-------->|<--B-->|
The cause is quite easy, just a careless btrfs_truncate_inode() in a
else branch without extra judgment.
Fix it by add judgment on whether the fallocate range is beyond isize.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c')
0 files changed, 0 insertions, 0 deletions
