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 @@ static noinline void compress_file_range(struct inode *inode, /* * 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;