From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753915Ab3GWBJm (ORCPT ); Mon, 22 Jul 2013 21:09:42 -0400 Received: from cn.fujitsu.com ([222.73.24.84]:61376 "EHLO song.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1753320Ab3GWBJl (ORCPT ); Mon, 22 Jul 2013 21:09:41 -0400 X-IronPort-AV: E=Sophos;i="4.89,722,1367942400"; d="scan'208";a="7984565" Message-ID: <51EDD6F9.7070207@cn.fujitsu.com> Date: Tue, 23 Jul 2013 09:06:01 +0800 From: Gu Zheng User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20110930 Thunderbird/7.0.1 MIME-Version: 1.0 To: Nikola Pajkovsky CC: Kim , f2fs , linux-kernel Subject: Re: [PATCH] f2fs: use list_for_each rather than list_for_each_safe, in remove_orphan_inode() References: <51E8F7A6.7030708@cn.fujitsu.com> In-Reply-To: X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2013/07/23 09:07:39, Serialize by Router on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2013/07/23 09:07:39, Serialize complete at 2013/07/23 09:07:39 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 07/22/2013 11:36 PM, Nikola Pajkovsky wrote: > Gu Zheng writes: > >> As we remove the target single node, so list_for_each is enought, in order to >> clean up, we use list_for_each_entry instead. >> >> Signed-off-by: Gu Zheng >> --- >> fs/f2fs/checkpoint.c | 5 ++--- >> 1 files changed, 2 insertions(+), 3 deletions(-) >> >> diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c >> index 290db04..87f7bc2 100644 >> --- a/fs/f2fs/checkpoint.c >> +++ b/fs/f2fs/checkpoint.c >> @@ -237,13 +237,12 @@ out: >> >> void remove_orphan_inode(struct f2fs_sb_info *sbi, nid_t ino) >> { >> - struct list_head *this, *next, *head; >> + struct list_head *head; >> struct orphan_inode_entry *orphan; >> >> mutex_lock(&sbi->orphan_inode_mutex); >> head = &sbi->orphan_inode_list; >> - list_for_each_safe(this, next, head) { >> - orphan = list_entry(this, struct orphan_inode_entry, list); >> + list_for_each_entry(orphan, head, list) { >> if (orphan->ino == ino) { >> list_del(&orphan->list); >> kmem_cache_free(orphan_entry_slab, orphan); > > you have meant list_for_each_entry_safe, haven't you? No that, here list_for_each_entry is suitable, because we delete only one entry. Thanks, Gu > From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gu Zheng Subject: Re: [f2fs-dev] [PATCH] f2fs: use list_for_each rather than list_for_each_safe, in remove_orphan_inode() Date: Tue, 23 Jul 2013 09:06:01 +0800 Message-ID: <51EDD6F9.7070207@cn.fujitsu.com> References: <51E8F7A6.7030708@cn.fujitsu.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from sog-mx-1.v43.ch3.sourceforge.com ([172.29.43.191] helo=mx.sourceforge.net) by sfs-ml-2.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1V1R6q-0005AO-IW for linux-f2fs-devel@lists.sourceforge.net; Tue, 23 Jul 2013 01:09:48 +0000 Received: from [222.73.24.84] (helo=song.cn.fujitsu.com) by sog-mx-1.v43.ch3.sourceforge.com with esmtp (Exim 4.76) id 1V1R6o-0005rx-KJ for linux-f2fs-devel@lists.sourceforge.net; Tue, 23 Jul 2013 01:09:48 +0000 In-Reply-To: List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net To: Nikola Pajkovsky Cc: linux-kernel , f2fs On 07/22/2013 11:36 PM, Nikola Pajkovsky wrote: > Gu Zheng writes: > >> As we remove the target single node, so list_for_each is enought, in order to >> clean up, we use list_for_each_entry instead. >> >> Signed-off-by: Gu Zheng >> --- >> fs/f2fs/checkpoint.c | 5 ++--- >> 1 files changed, 2 insertions(+), 3 deletions(-) >> >> diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c >> index 290db04..87f7bc2 100644 >> --- a/fs/f2fs/checkpoint.c >> +++ b/fs/f2fs/checkpoint.c >> @@ -237,13 +237,12 @@ out: >> >> void remove_orphan_inode(struct f2fs_sb_info *sbi, nid_t ino) >> { >> - struct list_head *this, *next, *head; >> + struct list_head *head; >> struct orphan_inode_entry *orphan; >> >> mutex_lock(&sbi->orphan_inode_mutex); >> head = &sbi->orphan_inode_list; >> - list_for_each_safe(this, next, head) { >> - orphan = list_entry(this, struct orphan_inode_entry, list); >> + list_for_each_entry(orphan, head, list) { >> if (orphan->ino == ino) { >> list_del(&orphan->list); >> kmem_cache_free(orphan_entry_slab, orphan); > > you have meant list_for_each_entry_safe, haven't you? No that, here list_for_each_entry is suitable, because we delete only one entry. Thanks, Gu > ------------------------------------------------------------------------------ See everything from the browser to the database with AppDynamics Get end-to-end visibility with application monitoring from AppDynamics Isolate bottlenecks and diagnose root cause in seconds. Start your free trial of AppDynamics Pro today! http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk