The patch titled make iunique use a do/while loop rather than its obscure goto loop has been added to the -mm tree. Its filename is make-iunique-use-a-do-while-loop-rather-than-its-obscure-goto-loop.patch *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: make iunique use a do/while loop rather than its obscure goto loop From: Jeffrey Layton <jlayton@xxxxxxxxxx> A while back, Christoph mentioned that he thought that iunique ought to be cleaned up to use a more conventional loop construct. This patch does that, turning the strange goto loop into a do/while. Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx> Cc: Christoph Hellwig <hch@xxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- fs/inode.c | 24 ++++++++++-------------- 1 files changed, 10 insertions(+), 14 deletions(-) diff -puN fs/inode.c~make-iunique-use-a-do-while-loop-rather-than-its-obscure-goto-loop fs/inode.c --- a/fs/inode.c~make-iunique-use-a-do-while-loop-rather-than-its-obscure-goto-loop +++ a/fs/inode.c @@ -697,25 +697,21 @@ ino_t iunique(struct super_block *sb, in { 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) _ Patches currently in -mm which might be from jlayton@xxxxxxxxxx are make-iunique-use-a-do-while-loop-rather-than-its-obscure-goto-loop.patch make-static-counters-in-new_inode-and-iunique-be-32-bits.patch change-libfs-sb-creation-routines-to-avoid-collisions-with-their-root-inodes.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html