mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
UPSTREAM: f2fs: compress: don't {,de}compress non-full cluster
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.
Bug: 325092012
Change-Id: I88e6b431b27b4768a312e0977ebe1c9e9cc23600
Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
(cherry picked from commit 025b3602b5)
This commit is contained in:
committed by
William McVicker
parent
3b2e004494
commit
84a9f618b5
@@ -4170,10 +4170,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;
|
||||
|
||||
@@ -4183,8 +4181,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)) {
|
||||
@@ -4250,10 +4248,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;
|
||||
|
||||
@@ -4263,8 +4259,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)) {
|
||||
|
||||
Reference in New Issue
Block a user