From 76c2719233387c910055dd0b5e0d19f8fddb13bd Mon Sep 17 00:00:00 2001 From: Jeffrey Layton Date: Tue, 8 May 2007 00:29:48 -0700 Subject: [PATCH] --- yaml --- r: 54677 b: refs/heads/master c: 3361c7bebbf207f57f3dd1282cd87e1e37c082ac h: refs/heads/master i: 54675: aa43c846f0817bb16a022b3831c36dfa5057b6d2 v: v3 --- [refs] | 2 +- trunk/fs/inode.c | 24 ++++++++++-------------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/[refs] b/[refs] index 99c8928eeeaf..11936d940198 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9d0633cfedde484d30eef869f749c04709ab3e42 +refs/heads/master: 3361c7bebbf207f57f3dd1282cd87e1e37c082ac diff --git a/trunk/fs/inode.c b/trunk/fs/inode.c index c03089421b6f..81508b0a3a70 100644 --- a/trunk/fs/inode.c +++ b/trunk/fs/inode.c @@ -685,25 +685,21 @@ ino_t iunique(struct super_block *sb, ino_t max_reserved) { static ino_t counter; struct inode *inode; - struct hlist_head * head; + struct hlist_head *head; ino_t res; + spin_lock(&inode_lock); -retry: - if (counter > max_reserved) { - head = inode_hashtable + hash(sb,counter); + do { + if (counter <= max_reserved) + counter = max_reserved + 1; res = counter++; + head = inode_hashtable + hash(sb, res); inode = find_inode_fast(sb, head, res); - if (!inode) { - spin_unlock(&inode_lock); - return res; - } - } else { - counter = max_reserved + 1; - } - goto retry; - -} + } while (inode != NULL); + spin_unlock(&inode_lock); + return res; +} EXPORT_SYMBOL(iunique); struct inode *igrab(struct inode *inode)