From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933486AbbIVNTD (ORCPT ); Tue, 22 Sep 2015 09:19:03 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:35186 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933468AbbIVNTA (ORCPT ); Tue, 22 Sep 2015 09:19:00 -0400 X-AuditID: cbfee61a-f79a06d000005c6f-ba-560155424d1b From: Chao Yu To: Jaegeuk Kim Cc: linux-f2fs-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org Subject: [PATCH] f2fs: fix to correct freed section number during gc Date: Tue, 22 Sep 2015 21:18:18 +0800 Message-id: <00d601d0f539$3d893e90$b89bbbb0$@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: AdD1N9zOpAQOAmGCSJ6T+xvucEqnLw== Content-language: zh-cn X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrDLMWRmVeSWpSXmKPExsVy+t9jQV2nUMYwg649FhZP1s9itri0yN3i 8q45bA7MHptWdbJ57F7wmcnj8ya5AOYoLpuU1JzMstQifbsErox1fT+ZClZyVNye+4KxgfEB WxcjJ4eEgIlE0+QFTBC2mMSFe+uB4lwcQgKzGCWmf9vKCuG8YpR4u76NBaSKTUBFYnnHf7AO ESD70KLL7CA2s4CHRGPHd1YQW1jAReLGln6wehYBVYnLDVsZQWxeAUuJSd+2Q9mCEj8m32OB 6NWSWL/zOBOELS+xec1bZoiLFCR2nH3NCLFLT+Lym4tQ9eISG4/cYpnACHQmwqhZSEbNQjJq FpKWBYwsqxglUguSC4qT0nMN81LL9YoTc4tL89L1kvNzNzGCw/iZ1A7Gg7vcDzEKcDAq8fB+ 6GYIE2JNLCuuzD3EKMHBrCTCu06RMUyINyWxsiq1KD++qDQntfgQozQHi5I4741DQNUC6Ykl qdmpqQWpRTBZJg5OqQbGffOtejxrioyMMn42qV59tmG28aF6Twl91vPThO9McV1xe4OR31TP U4d0HmtkO3x54vkp4FF86E/PhRKvLAUcnGx7lH7f5mhaKXXS7oZfZkD3QuYoh4Dgpbk5pp3C OQeV3FbJn2TnyAiP8m0SyZ33/+0R2fzcHz8+bjvz4JfVrP9NydxZrPZKLMUZiYZazEXFiQAt BwVHXwIAAA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We pass 'nfree' to has_not_enough_free_secs to check whether there is enough free section, but 'nfree' indicates the number of segment gced, should alter the value to section number. Signed-off-by: Chao Yu --- fs/f2fs/gc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c index e932740..7ad2a60 100644 --- a/fs/f2fs/gc.c +++ b/fs/f2fs/gc.c @@ -817,7 +817,8 @@ gc_more: if (unlikely(f2fs_cp_error(sbi))) goto stop; - if (gc_type == BG_GC && has_not_enough_free_secs(sbi, nfree)) { + if (gc_type == BG_GC && + has_not_enough_free_secs(sbi, nfree / sbi->segs_per_sec)) { gc_type = FG_GC; if (__get_victim(sbi, &segno, gc_type) || prefree_segments(sbi)) write_checkpoint(sbi, &cpc); @@ -839,7 +840,7 @@ gc_more: if (gc_type == FG_GC) sbi->cur_victim_sec = NULL_SEGNO; - if (has_not_enough_free_secs(sbi, nfree)) + if (has_not_enough_free_secs(sbi, nfree / sbi->segs_per_sec)) goto gc_more; if (gc_type == FG_GC) -- 2.5.2