f2fs: fix to active page in lru list for read path
authorChao Yu <yuchao0@huawei.com>
Fri, 27 Jul 2018 10:15:14 +0000 (18:15 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Wed, 1 Aug 2018 18:52:36 +0000 (11:52 -0700)
If config CONFIG_F2FS_FAULT_INJECTION is on, for both read or write path
we will call find_lock_page() to get the page, but for read path, it
missed to passing FGP_ACCESSED to allocator to active the page in LRU
list, result in being reclaimed in advance incorrectly, fix it.

Reported-by: Xianrong Zhou <zhouxianrong@huawei.com>
Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/f2fs.h

index ff8f8d93acac3b7ba393eb8e2f2db23e50fc4355..a9447c7d6570002da226d739fff2abe0dd648b75 100644 (file)
@@ -1964,8 +1964,13 @@ static inline struct page *f2fs_grab_cache_page(struct address_space *mapping,
                                                pgoff_t index, bool for_write)
 {
 #ifdef CONFIG_F2FS_FAULT_INJECTION
-       struct page *page = find_lock_page(mapping, index);
+       struct page *page;
 
+       if (!for_write)
+               page = find_get_page_flags(mapping, index,
+                                               FGP_LOCK | FGP_ACCESSED);
+       else
+               page = find_lock_page(mapping, index);
        if (page)
                return page;