From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753167AbcAVJmx (ORCPT ); Fri, 22 Jan 2016 04:42:53 -0500 Received: from mailout4.samsung.com ([203.254.224.34]:37735 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752758AbcAVJmr (ORCPT ); Fri, 22 Jan 2016 04:42:47 -0500 X-AuditID: cbfee61a-f79266d000003652-2c-56a1f9946c1f From: Chao Yu To: Jaegeuk Kim Cc: linux-f2fs-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org Subject: [PATCH 1/2] f2fs: correct search area in get_new_segment Date: Fri, 22 Jan 2016 17:42:06 +0800 Message-id: <00b601d154f9$4036ad10$c0a40730$@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: AdFU+A/zrXKiuQDGScOG1qN9jb1QFw== Content-language: zh-cn X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrFLMWRmVeSWpSXmKPExsVy+t9jQd2pPxeGGXy4yGjxZP0sZotLi9wt Lu+aw+bA7LFpVSebx+4Fn5k8Pm+SC2CO4rJJSc3JLEst0rdL4Mo4tnIya0EPZ8X942sZGxjX sncxcnJICJhIvLl3jwnCFpO4cG89G4gtJDCLUeLya4kuRi4g+xWjRM/Cw6wgCTYBFYnlHf/B GkSA7EOLLoMNYhbwkGjs+A5Uw8EhLOAocfqkI0iYRUBV4kXDdrASXgFLif67J1ghbEGJH5Pv sUC0akls3tbECmHLS2xe85YZ4h4FiR1nXzNCrNKTOPJ/ClS9uMTGI7dYJjACHYkwahaSUbOQ jJqFpGUBI8sqRonUguSC4qT0XMO81HK94sTc4tK8dL3k/NxNjOAQfia1g/HgLvdDjAIcjEo8 vJy6C8OEWBPLiitzDzFKcDArifAyXAUK8aYkVlalFuXHF5XmpBYfYpTmYFES5629FBkmJJCe WJKanZpakFoEk2Xi4JRqYJx2/cc5r0VLAi4JLbP+zFO7Zq29zzX/Y1UScXnz3h4tndfS1HLB 4orzDtHQe19YuoOn6IsFfmB/du685Owb+z6XFzjuSzrKaikzUfMGW8S6GNe1bBdupGYtXHD0 zb6i2V8LJHiXp3yNLtVsWDXlskX7Wxe2R19rzKd2Tjfe7HVzz8+KlIOFLKuUWIozEg21mIuK EwF2KAvZXQIAAA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org get_new_segment starts from current segment position, tries to search a free segment among its right neighbors locate in same section. But previously our search area was set as [current segment, max segment], which means we have to search to more bits in free_segmap bitmap for some worse cases. So here we correct the search area to [current segment, last segment in section] to avoid unnecessary searching. Signed-off-by: Chao Yu --- fs/f2fs/segment.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c index 5904a41..75413e2 100644 --- a/fs/f2fs/segment.c +++ b/fs/f2fs/segment.c @@ -873,9 +873,8 @@ static void get_new_segment(struct f2fs_sb_info *sbi, if (!new_sec && ((*newseg + 1) % sbi->segs_per_sec)) { segno = find_next_zero_bit(free_i->free_segmap, - MAIN_SEGS(sbi), *newseg + 1); - if (segno - *newseg < sbi->segs_per_sec - - (*newseg % sbi->segs_per_sec)) + (hint + 1) * sbi->segs_per_sec, *newseg + 1); + if (segno < (hint + 1) * sbi->segs_per_sec) goto got_it; } find_other_zone: -- 2.7.0.2.g1b0b6dd