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 <[EMAIL PROTECTED]>
---
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);
-
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to