Loading fs/namespace.c +5 −30 Original line number Original line Diff line number Diff line Loading @@ -152,31 +152,6 @@ static inline void mnt_add_count(struct vfsmount *mnt, int n) #endif #endif } } static inline void mnt_set_count(struct vfsmount *mnt, int n) { #ifdef CONFIG_SMP this_cpu_write(mnt->mnt_pcp->mnt_count, n); #else mnt->mnt_count = n; #endif } /* * vfsmount lock must be held for read */ static inline void mnt_inc_count(struct vfsmount *mnt) { mnt_add_count(mnt, 1); } /* * vfsmount lock must be held for read */ static inline void mnt_dec_count(struct vfsmount *mnt) { mnt_add_count(mnt, -1); } /* /* * vfsmount lock must be held for write * vfsmount lock must be held for write */ */ Loading Loading @@ -780,20 +755,20 @@ static void mntput_no_expire(struct vfsmount *mnt) #ifdef CONFIG_SMP #ifdef CONFIG_SMP br_read_lock(vfsmount_lock); br_read_lock(vfsmount_lock); if (likely(atomic_read(&mnt->mnt_longterm))) { if (likely(atomic_read(&mnt->mnt_longterm))) { mnt_dec_count(mnt); mnt_add_count(mnt, -1); br_read_unlock(vfsmount_lock); br_read_unlock(vfsmount_lock); return; return; } } br_read_unlock(vfsmount_lock); br_read_unlock(vfsmount_lock); br_write_lock(vfsmount_lock); br_write_lock(vfsmount_lock); mnt_dec_count(mnt); mnt_add_count(mnt, -1); if (mnt_get_count(mnt)) { if (mnt_get_count(mnt)) { br_write_unlock(vfsmount_lock); br_write_unlock(vfsmount_lock); return; return; } } #else #else mnt_dec_count(mnt); mnt_add_count(mnt, -1); if (likely(mnt_get_count(mnt))) if (likely(mnt_get_count(mnt))) return; return; br_write_lock(vfsmount_lock); br_write_lock(vfsmount_lock); Loading Loading @@ -823,7 +798,7 @@ EXPORT_SYMBOL(mntput); struct vfsmount *mntget(struct vfsmount *mnt) struct vfsmount *mntget(struct vfsmount *mnt) { { if (mnt) if (mnt) mnt_inc_count(mnt); mnt_add_count(mnt, 1); return mnt; return mnt; } } EXPORT_SYMBOL(mntget); EXPORT_SYMBOL(mntget); Loading @@ -840,7 +815,7 @@ void mnt_unpin(struct vfsmount *mnt) { { br_write_lock(vfsmount_lock); br_write_lock(vfsmount_lock); if (mnt->mnt_pinned) { if (mnt->mnt_pinned) { mnt_inc_count(mnt); mnt_add_count(mnt, 1); mnt->mnt_pinned--; mnt->mnt_pinned--; } } br_write_unlock(vfsmount_lock); br_write_unlock(vfsmount_lock); Loading Loading
fs/namespace.c +5 −30 Original line number Original line Diff line number Diff line Loading @@ -152,31 +152,6 @@ static inline void mnt_add_count(struct vfsmount *mnt, int n) #endif #endif } } static inline void mnt_set_count(struct vfsmount *mnt, int n) { #ifdef CONFIG_SMP this_cpu_write(mnt->mnt_pcp->mnt_count, n); #else mnt->mnt_count = n; #endif } /* * vfsmount lock must be held for read */ static inline void mnt_inc_count(struct vfsmount *mnt) { mnt_add_count(mnt, 1); } /* * vfsmount lock must be held for read */ static inline void mnt_dec_count(struct vfsmount *mnt) { mnt_add_count(mnt, -1); } /* /* * vfsmount lock must be held for write * vfsmount lock must be held for write */ */ Loading Loading @@ -780,20 +755,20 @@ static void mntput_no_expire(struct vfsmount *mnt) #ifdef CONFIG_SMP #ifdef CONFIG_SMP br_read_lock(vfsmount_lock); br_read_lock(vfsmount_lock); if (likely(atomic_read(&mnt->mnt_longterm))) { if (likely(atomic_read(&mnt->mnt_longterm))) { mnt_dec_count(mnt); mnt_add_count(mnt, -1); br_read_unlock(vfsmount_lock); br_read_unlock(vfsmount_lock); return; return; } } br_read_unlock(vfsmount_lock); br_read_unlock(vfsmount_lock); br_write_lock(vfsmount_lock); br_write_lock(vfsmount_lock); mnt_dec_count(mnt); mnt_add_count(mnt, -1); if (mnt_get_count(mnt)) { if (mnt_get_count(mnt)) { br_write_unlock(vfsmount_lock); br_write_unlock(vfsmount_lock); return; return; } } #else #else mnt_dec_count(mnt); mnt_add_count(mnt, -1); if (likely(mnt_get_count(mnt))) if (likely(mnt_get_count(mnt))) return; return; br_write_lock(vfsmount_lock); br_write_lock(vfsmount_lock); Loading Loading @@ -823,7 +798,7 @@ EXPORT_SYMBOL(mntput); struct vfsmount *mntget(struct vfsmount *mnt) struct vfsmount *mntget(struct vfsmount *mnt) { { if (mnt) if (mnt) mnt_inc_count(mnt); mnt_add_count(mnt, 1); return mnt; return mnt; } } EXPORT_SYMBOL(mntget); EXPORT_SYMBOL(mntget); Loading @@ -840,7 +815,7 @@ void mnt_unpin(struct vfsmount *mnt) { { br_write_lock(vfsmount_lock); br_write_lock(vfsmount_lock); if (mnt->mnt_pinned) { if (mnt->mnt_pinned) { mnt_inc_count(mnt); mnt_add_count(mnt, 1); mnt->mnt_pinned--; mnt->mnt_pinned--; } } br_write_unlock(vfsmount_lock); br_write_unlock(vfsmount_lock); Loading