|
@@ -1154,8 +1154,11 @@ int btrfs_defrag_file(struct inode *inode, struct file *file,
|
|
|
u64 new_align = ~((u64)128 * 1024 - 1);
|
|
|
struct page **pages = NULL;
|
|
|
|
|
|
- if (extent_thresh == 0)
|
|
|
- extent_thresh = 256 * 1024;
|
|
|
+ if (isize == 0)
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ if (range->start >= isize)
|
|
|
+ return -EINVAL;
|
|
|
|
|
|
if (range->flags & BTRFS_DEFRAG_RANGE_COMPRESS) {
|
|
|
if (range->compress_type > BTRFS_COMPRESS_TYPES)
|
|
@@ -1164,8 +1167,8 @@ int btrfs_defrag_file(struct inode *inode, struct file *file,
|
|
|
compress_type = range->compress_type;
|
|
|
}
|
|
|
|
|
|
- if (isize == 0)
|
|
|
- return 0;
|
|
|
+ if (extent_thresh == 0)
|
|
|
+ extent_thresh = 256 * 1024;
|
|
|
|
|
|
/*
|
|
|
* if we were not given a file, allocate a readahead
|