From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dmitri Vorobiev Subject: [PATCH]loop cleanup in fs/namespace.c - repost Date: Wed, 21 Nov 2007 20:57:24 +0300 Message-ID: <47447184.6040805@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 7bit Cc: Linux-kernel To: linux-fsdevel@vger.kernel.org Return-path: Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org Hi list, Apparently, the following two C language constructs while (condition) { // DO HARD WORK } and repeat: if (condition) { // DO HARD WORK goto repeat; } are equivalent, but the latter one looks quite cumbersome and is not idiomatic. However, the mntput_no_expire() routine in fs/namespace.c is implemented using the goto-based approach. The patch given below replaces the goto-loop by a while-based one. Besides, it removes the export for the same routine, because there are no users for it outside of the core VFS code. Signed-off-by: Dmitri Vorobiev --- diff --git a/fs/namespace.c b/fs/namespace.c index 0608388..38b4b4a 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -278,8 +278,7 @@ static inline void __mntput(struct vfsmo void mntput_no_expire(struct vfsmount *mnt) { -repeat: - if (atomic_dec_and_lock(&mnt->mnt_count, &vfsmount_lock)) { + while (atomic_dec_and_lock(&mnt->mnt_count, &vfsmount_lock)) { if (likely(!mnt->mnt_pinned)) { spin_unlock(&vfsmount_lock); __mntput(mnt); @@ -290,12 +289,9 @@ repeat: spin_unlock(&vfsmount_lock); acct_auto_close_mnt(mnt); security_sb_umount_close(mnt); - goto repeat; } } -EXPORT_SYMBOL(mntput_no_expire); - void mnt_pin(struct vfsmount *mnt) { spin_lock(&vfsmount_lock);