On 2021/5/28 10:49, Chao Yu wrote:
On 2021/5/25 20:05, [email protected] wrote:
yes, I just check wheather the whole page was dirty, because of when write
cache f2fs_prepare_compress_overwrite will be called again,
when update whole cluster, cc in prepare_compress_overwrite will be empty,
so will not submit bio.
when only update one page in cluster, cc in prepare_compress_overwrite will
not be empty, so will submit bio.
This is my thinking, not sure if I've missed anything
Well, it looks more like we did for mmap() write case.
So I guess we can change as below:
To Jaegeuk, comments?
---
fs/f2fs/data.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index 2ea887a114c8..723c59df51b7 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -3323,7 +3323,7 @@ static int f2fs_write_begin(struct file *file, struct
address_space *mapping,
}
#ifdef CONFIG_F2FS_FS_COMPRESSION
- if (f2fs_compressed_file(inode)) {
+ if (f2fs_compressed_file(inode) && len != PAGE_SIZE) {
It will cause panic in f2fs_write_end() due to miss to assign fsdata with NULL,
updated as below:
---
fs/f2fs/data.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index 2ea887a114c8..4e214ac87925 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -3328,6 +3328,9 @@ static int f2fs_write_begin(struct file *file, struct
address_space *mapping,
*fsdata = NULL;
+ if (len == PAGE_SIZE)
+ goto repeat;
+
ret = f2fs_prepare_compress_overwrite(inode, pagep,
index, fsdata);
if (ret < 0) {
--
2.29.2
Thanks,
int ret;
*fsdata = NULL;
_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel