Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753300AbZKYOyI (ORCPT ); Wed, 25 Nov 2009 09:54:08 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751462AbZKYOyH (ORCPT ); Wed, 25 Nov 2009 09:54:07 -0500 Received: from palinux.external.hp.com ([192.25.206.14]:45725 "EHLO mail.parisc-linux.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750892AbZKYOyG (ORCPT ); Wed, 25 Nov 2009 09:54:06 -0500 Date: Wed, 25 Nov 2009 07:54:11 -0700 From: Matthew Wilcox To: Liuweni Cc: viro , akpm , jack , npiggin , linux-fsdevel , linux-kernel , strongzgy , xgr178 , Liu Hui Subject: Re: [PATCH 1/3]fs/inode: iunique() Optimize Performance Message-ID: <20091125145410.GJ9482@parisc-linux.org> References: <200911252209432039291@gmail.com> <200911252251305001347@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200911252251305001347@gmail.com> User-Agent: Mutt/1.5.18 (2008-05-17) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2599 Lines: 80 On Wed, Nov 25, 2009 at 10:51:33PM +0800, Liuweni wrote: > Hi Matthew Wilcox , > The code means set counter's value to the max max_reserved and counter. > Then, the if condition will choose a large one, and in the function, the counter > is increased. so this code won't change the function of iunique(). > > > + if (counter <= max_reserved) > > + counter = max_reserved + 1; If 'counter' has the value 0xffffffff, and the loop increments 'counter' to zero, this check needs to be inside the loop. > > ----------- > Best Regards, > Liuweni > 2009-11-25 > > > > > > > > ???????? Matthew Wilcox > ?????????? 2009-11-25 22:15:09 > ???????? Liuweni > ?????? linux-kernel; strongzgy; xgr178; Liu Hui; viro; akpm; jack; npiggin; linux-fsdevel > ?????? Re: [PATCH 1/3]fs/inode: iunique() Optimize Performance > > On Wed, Nov 25, 2009 at 10:09:45PM +0800, Liuweni wrote: > > --- > > move the if condition out the while{}. > > While the function executing, the if > > condition won't check again and again. > > And this code won't change the function > > of iunique(). > That's not true. > > @@ -838,9 +838,10 @@ ino_t iunique(struct super_block *sb, ino_t max_reserved) > > ino_t res; > > > > spin_lock(&inode_lock); > > + > > + if (counter <= max_reserved) > > + counter = max_reserved + 1; > > do { > > - if (counter <= max_reserved) > > - counter = max_reserved + 1; > > res = counter++; > 'counter' is incremented here, so if it wraps around, we'll blunder into > the reserved space again. > > head = inode_hashtable + hash(sb, res); > > inode = find_inode_fast(sb, head, res); > > > > > > -------------- > > Best Regards, > > Liuweni > > 2009-11-25 > > > > -- > > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in > > the body of a message to majordomo@vger.kernel.org > > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- > Matthew Wilcox Intel Open Source Technology Centre > "Bill, look, we understand that you're interested in selling us this > operating system, but compare it to ours. We can't possibly take such > a retrograde step." -- Matthew Wilcox Intel Open Source Technology Centre "Bill, look, we understand that you're interested in selling us this operating system, but compare it to ours. We can't possibly take such a retrograde step." -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/