mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 03:15:31 +09:00
f2fs: support POSIX_FADV_DONTNEED drop compressed page cache
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> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
committed by
Jaegeuk Kim
parent
485eaa5339
commit
26f2048b7e
@@ -4795,12 +4795,12 @@ out:
|
||||
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;
|
||||
|
||||
@@ -4817,7 +4817,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
|
||||
|
||||
Reference in New Issue
Block a user