aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimofey Titovets2017-06-06 14:41:15 +0300
committerDavid Sterba2017-06-19 18:26:04 +0200
commit170607ebd9c891d6765445434460065b2e73ca51 (patch)
tree60ecb74a023eb3fc8cf5b4d1bb7f4062fb009941
parentc5e4c3d7503453832444475641988ffa02b88b6d (diff)
Btrfs: compression must free at least one sector size
We already skip storing data where compression does not make the result at least one byte less. Let's make the logic better and check that compression frees at least one sector size of bytes, otherwise it's not that useful. Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com> Reviewed-by: David Sterba <dsterba@suse.com> [ changelog updated ] Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--fs/btrfs/inode.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index b74a6d23a0fe..a21a984d84d9 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -607,12 +607,11 @@ cont:
/*
* one last check to make sure the compression is really a
- * win, compare the page count read with the blocks on disk
+ * win, compare the page count read with the blocks on disk,
+ * compression must free at least one sector size
*/
total_in = ALIGN(total_in, PAGE_SIZE);
- if (total_compressed >= total_in) {
- will_compress = 0;
- } else {
+ if (total_compressed + blocksize <= total_in) {
num_bytes = total_in;
*num_added += 1;