* [f2fs-dev] [PATCH v3 1/2] f2fs: fix remove page failed in invalidate compress pages
@ 2021-11-29 2:13 Fengnan Chang
2021-11-29 2:13 ` [f2fs-dev] [PATCH v3 2/2] f2fs: support POSIX_FADV_DONTNEED drop compressed page cache Fengnan Chang
0 siblings, 1 reply; 3+ messages in thread
From: Fengnan Chang @ 2021-11-29 2:13 UTC (permalink / raw)
To: jaegeuk, chao; +Cc: Fengnan Chang, linux-f2fs-devel
Since compress inode not a regular file, generic_error_remove_page in
f2fs_invalidate_compress_pages will always be failed, set compress
inode as a regular file to fix it.
Fixes: 6ce19aff0b8c ("f2fs: compress: add compress_inode to cache compressed
blocks")
Signed-off-by: Fengnan Chang <changfengnan@vivo.com>
Reviewed-by: Chao Yu <chao@kernel.org>
---
fs/f2fs/inode.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c
index 0f8b2df3e1e0..1db7823d5a13 100644
--- a/fs/f2fs/inode.c
+++ b/fs/f2fs/inode.c
@@ -516,6 +516,11 @@ struct inode *f2fs_iget(struct super_block *sb, unsigned long ino)
} else if (ino == F2FS_COMPRESS_INO(sbi)) {
#ifdef CONFIG_F2FS_FS_COMPRESSION
inode->i_mapping->a_ops = &f2fs_compress_aops;
+ /*
+ * generic_error_remove_page only truncates pages of regular
+ * inode
+ */
+ inode->i_mode |= S_IFREG;
#endif
mapping_set_gfp_mask(inode->i_mapping,
GFP_NOFS | __GFP_HIGHMEM | __GFP_MOVABLE);
--
2.32.0
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
^ permalink raw reply related [flat|nested] 3+ messages in thread* [f2fs-dev] [PATCH v3 2/2] f2fs: support POSIX_FADV_DONTNEED drop compressed page cache 2021-11-29 2:13 [f2fs-dev] [PATCH v3 1/2] f2fs: fix remove page failed in invalidate compress pages Fengnan Chang @ 2021-11-29 2:13 ` Fengnan Chang 2021-11-29 2:23 ` Chao Yu 0 siblings, 1 reply; 3+ messages in thread From: Fengnan Chang @ 2021-11-29 2:13 UTC (permalink / raw) To: jaegeuk, chao; +Cc: Fengnan Chang, linux-f2fs-devel Previously, compressed page cache drop when clean page cache, but POSIX_FADV_DONTNEED can't clean compressed page cache because raw page don't have private data, and won't call f2fs_invalidate_compress_pages. This commit call f2fs_invalidate_compress_pages() directly in f2fs_file_fadvise() for POSIX_FADV_DONTNEED case. Signed-off-by: Fengnan Chang <changfengnan@vivo.com> --- fs/f2fs/file.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 32c0bd545c5c..20f44cc8dfd1 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -4677,12 +4677,12 @@ static ssize_t f2fs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) static int f2fs_file_fadvise(struct file *filp, loff_t offset, loff_t len, int advice) { - struct inode *inode; struct address_space *mapping; struct backing_dev_info *bdi; + struct inode *inode = file_inode(filp); + int err; if (advice == POSIX_FADV_SEQUENTIAL) { - inode = file_inode(filp); if (S_ISFIFO(inode->i_mode)) return -ESPIPE; @@ -4699,7 +4699,13 @@ static int f2fs_file_fadvise(struct file *filp, loff_t offset, loff_t len, return 0; } - return generic_fadvise(filp, offset, len, advice); + err = generic_fadvise(filp, offset, len, advice); + if (!err && advice == POSIX_FADV_DONTNEED && + test_opt(F2FS_I_SB(inode), COMPRESS_CACHE) && + f2fs_compressed_file(inode)) + f2fs_invalidate_compress_pages(F2FS_I_SB(inode), inode->i_ino); + + return err; } #ifdef CONFIG_COMPAT -- 2.32.0 _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [f2fs-dev] [PATCH v3 2/2] f2fs: support POSIX_FADV_DONTNEED drop compressed page cache 2021-11-29 2:13 ` [f2fs-dev] [PATCH v3 2/2] f2fs: support POSIX_FADV_DONTNEED drop compressed page cache Fengnan Chang @ 2021-11-29 2:23 ` Chao Yu 0 siblings, 0 replies; 3+ messages in thread From: Chao Yu @ 2021-11-29 2:23 UTC (permalink / raw) To: Fengnan Chang, jaegeuk; +Cc: linux-f2fs-devel On 2021/11/29 10:13, Fengnan Chang wrote: > Previously, compressed page cache drop when clean page cache, but > POSIX_FADV_DONTNEED can't clean compressed page cache because raw page > don't have private data, and won't call f2fs_invalidate_compress_pages. > This commit call f2fs_invalidate_compress_pages() directly in > f2fs_file_fadvise() for POSIX_FADV_DONTNEED case. > > Signed-off-by: Fengnan Chang <changfengnan@vivo.com> Reviewed-by: Chao Yu <chao@kernel.org> Thanks, _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-11-29 2:24 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-11-29 2:13 [f2fs-dev] [PATCH v3 1/2] f2fs: fix remove page failed in invalidate compress pages Fengnan Chang 2021-11-29 2:13 ` [f2fs-dev] [PATCH v3 2/2] f2fs: support POSIX_FADV_DONTNEED drop compressed page cache Fengnan Chang 2021-11-29 2:23 ` Chao Yu
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).