aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
Diffstat (limited to 'fs')
-rw-r--r--fs/ext4/extents.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
index 5f7295287de1..4fec6b746382 100644
--- a/fs/ext4/extents.c
+++ b/fs/ext4/extents.c
@@ -3244,8 +3244,15 @@ static int ext4_ext_fiemap_cb(struct inode *inode, struct ext4_ext_path *path,
3244 * XXX this might miss a single-block extent at EXT_MAX_BLOCK 3244 * XXX this might miss a single-block extent at EXT_MAX_BLOCK
3245 */ 3245 */
3246 if (ext4_ext_next_allocated_block(path) == EXT_MAX_BLOCK || 3246 if (ext4_ext_next_allocated_block(path) == EXT_MAX_BLOCK ||
3247 newex->ec_block + newex->ec_len - 1 == EXT_MAX_BLOCK) 3247 newex->ec_block + newex->ec_len - 1 == EXT_MAX_BLOCK) {
3248 loff_t size = i_size_read(inode);
3249 loff_t bs = EXT4_BLOCK_SIZE(inode->i_sb);
3250
3248 flags |= FIEMAP_EXTENT_LAST; 3251 flags |= FIEMAP_EXTENT_LAST;
3252 if ((flags & FIEMAP_EXTENT_DELALLOC) &&
3253 logical+length > size)
3254 length = (size - logical + bs - 1) & ~(bs-1);
3255 }
3249 3256
3250 error = fiemap_fill_next_extent(fieinfo, logical, physical, 3257 error = fiemap_fill_next_extent(fieinfo, logical, physical,
3251 length, flags); 3258 length, flags);