f2fs won't compress non-full cluster in tail of file, let's skip
dirtying and rewrite such cluster during f2fs_ioc_{,de}compress_file.

Signed-off-by: Chao Yu <[email protected]>
---
 fs/f2fs/file.c | 20 ++++++++------------
 1 file changed, 8 insertions(+), 12 deletions(-)

diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 79cb6a41f128..74f79e7c8c02 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -4092,10 +4092,8 @@ static int f2fs_ioc_decompress_file(struct file *filp)
        last_idx = DIV_ROUND_UP(i_size_read(inode), PAGE_SIZE);
 
        count = last_idx - page_idx;
-       while (count) {
-               int len = min(cluster_size, count);
-
-               ret = redirty_blocks(inode, page_idx, len);
+       while (count && count >= cluster_size) {
+               ret = redirty_blocks(inode, page_idx, cluster_size);
                if (ret < 0)
                        break;
 
@@ -4105,8 +4103,8 @@ static int f2fs_ioc_decompress_file(struct file *filp)
                                break;
                }
 
-               count -= len;
-               page_idx += len;
+               count -= cluster_size;
+               page_idx += cluster_size;
 
                cond_resched();
                if (fatal_signal_pending(current)) {
@@ -4172,10 +4170,8 @@ static int f2fs_ioc_compress_file(struct file *filp)
        last_idx = DIV_ROUND_UP(i_size_read(inode), PAGE_SIZE);
 
        count = last_idx - page_idx;
-       while (count) {
-               int len = min(cluster_size, count);
-
-               ret = redirty_blocks(inode, page_idx, len);
+       while (count && count >= cluster_size) {
+               ret = redirty_blocks(inode, page_idx, cluster_size);
                if (ret < 0)
                        break;
 
@@ -4185,8 +4181,8 @@ static int f2fs_ioc_compress_file(struct file *filp)
                                break;
                }
 
-               count -= len;
-               page_idx += len;
+               count -= cluster_size;
+               page_idx += cluster_size;
 
                cond_resched();
                if (fatal_signal_pending(current)) {
-- 
2.40.1



_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to