From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751820AbbIKGnp (ORCPT ); Fri, 11 Sep 2015 02:43:45 -0400 Received: from mailout4.samsung.com ([203.254.224.34]:45871 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751196AbbIKGno (ORCPT ); Fri, 11 Sep 2015 02:43:44 -0400 X-AuditID: cbfee61b-f79d56d0000048c5-a0-55f2781e671f From: Chao Yu To: Jaegeuk Kim Cc: linux-f2fs-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org Subject: [PATCH 6/7] f2fs: fix incorrect searching position when shrinking extent cache Date: Fri, 11 Sep 2015 14:43:02 +0800 Message-id: <000101d0ec5d$33294240$997bc6c0$@samsung.com> MIME-version: 1.0 Content-type: text/plain; charset=us-ascii Content-transfer-encoding: 7bit X-Mailer: Microsoft Outlook 14.0 Thread-index: AdDsXQ7/+Jn0z9wBT8K0zGKy8IMUAw== Content-language: zh-cn X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrNLMWRmVeSWpSXmKPExsVy+t9jQV35ik+hBudnMVo8WT+L2eLSIneL y7vmsDkwe2xa1cnmsXvBZyaPz5vkApijuGxSUnMyy1KL9O0SuDJ2HN7IXLCLs+La9WmsDYxX 2bsYOTkkBEwk/nx6zgRhi0lcuLeerYuRi0NIYBajxN4fJxhBEkICrxglviwpB7HZBFQklnf8 B2sQAbIPLboMNohZwEOiseM7K4gtLBAp8ejpU7AaFgFVif7dk1lAbF4BS4mfSyYxQ9iCEj8m 32OB6NWSWL/zOBOELS+xec1bZoiDFCR2nH3NCLFLT+LO5zVQNeISG4/cYpnACHQlwqhZSEbN QjJqFpKWBYwsqxglUguSC4qT0nON8lLL9YoTc4tL89L1kvNzNzGCg/iZ9A7Gw7vcDzEKcDAq 8fBaqH4KFWJNLCuuzD3EKMHBrCTCayAHFOJNSaysSi3Kjy8qzUktPsQozcGiJM4ru/JZqJBA emJJanZqakFqEUyWiYNTqoGx7f2TrqSybYzXj9opNx4WzuI9K7FTbfOyF98XHMhbHC6suPag ykb/yMe+a5UfduaKf+Ko0f+79mVv7M2E57btn/5nhuyrOWcUwJKnO6luXsffYp7vEXk2Rjps MlYKOoIq4tnrI0V91jULa3Jarl5kW/FgK19gY/41A54trSvjd7/0MV96IlGJpTgj0VCLuag4 EQBoSC2oXgIAAA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When shrinking extent cache, we have two steps in the flow: 1) shrink objects which are unreferenced by inodes; 2) shrink objects from LRU list of extent cache. In step 1, if we haven't shrunk enough number of objects, we will try step 2, but before that we didn't update the searching position which may point to last inode index in global extent tree, result in failing to shrink objects by traversing the all inodes' extent tree. In this patch, we reset searching position to beginning of global extent tree for fixing. Signed-off-by: Chao Yu --- fs/f2fs/extent_cache.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/fs/f2fs/extent_cache.c b/fs/f2fs/extent_cache.c index 1cd6c6c..a8b9aa2 100644 --- a/fs/f2fs/extent_cache.c +++ b/fs/f2fs/extent_cache.c @@ -652,6 +652,11 @@ unsigned int f2fs_shrink_extent_tree(struct f2fs_sb_info *sbi, int nr_shrink) } spin_unlock(&sbi->extent_lock); + /* + * reset ino for searching victims from beginning of global extent tree. + */ + ino = F2FS_ROOT_INO(sbi); + while ((found = radix_tree_gang_lookup(root, (void **)treevec, ino, EXT_TREE_VEC_SIZE))) { unsigned i; -- 2.4.2