From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Liuweni" Subject: [PATCH 1/3]fs/inode: iunique() Optimize Performance Date: Wed, 25 Nov 2009 22:09:45 +0800 Message-ID: <200911252209432039291@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: "strongzgy" , "xgr178" , "Liu Hui" , "viro" , "akpm" , "jack" , "npiggin" , "linux-fsdevel" , "linux-kernel" To: "linux-kernel" Return-path: Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org --- 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(). --- Signed-off-by: Liuwenyi Cc: Alexander Viro Cc: Andrew Morton Cc: Jan Kara Cc: Nick Piggin Cc: linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- diff --git a/fs/inode.c b/fs/inode.c index 4d8e3be..8ff1e99 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -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++; head = inode_hashtable + hash(sb, res); inode = find_inode_fast(sb, head, res); -------------- Best Regards, Liuweni 2009-11-25