On Wed, Jun 17, 2015 at 03:51:22PM +0800, Kinglong Mee wrote: > v5, new patch I don't know this code at all. I'll try to give it a proper review. But could you help me by explaining in some detail what this is doing and why you're sure it's correct? --b. > > Signed-off-by: Kinglong Mee <kinglongmee@xxxxxxxxx> > --- > fs/namespace.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/fs/namespace.c b/fs/namespace.c > index 1b9e111..3f08a48 100644 > --- a/fs/namespace.c > +++ b/fs/namespace.c > @@ -1049,8 +1049,6 @@ static void cleanup_mnt(struct mount *mnt) > * so mnt_get_writers() below is safe. > */ > WARN_ON(mnt_get_writers(mnt)); > - if (unlikely(mnt->mnt_pins.first)) > - mnt_pin_kill(mnt); > fsnotify_vfsmount_delete(&mnt->mnt); > dput(mnt->mnt.mnt_root); > deactivate_super(mnt->mnt.mnt_sb); > @@ -1078,6 +1076,7 @@ static DECLARE_DELAYED_WORK(delayed_mntput_work, delayed_mntput); > > static void mntput_no_expire(struct mount *mnt) > { > +put_again: > rcu_read_lock(); > mnt_add_count(mnt, -1); > if (likely(mnt->mnt_ns)) { /* shouldn't be the last one */ > @@ -1090,6 +1089,13 @@ static void mntput_no_expire(struct mount *mnt) > unlock_mount_hash(); > return; > } > + if (unlikely(mnt->mnt_pins.first)) { > + mnt_add_count(mnt, 1); > + rcu_read_unlock(); > + unlock_mount_hash(); > + mnt_pin_kill(mnt); > + goto put_again; > + } > if (unlikely(mnt->mnt.mnt_flags & MNT_DOOMED)) { > rcu_read_unlock(); > unlock_mount_hash(); > -- > 2.4.3 -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in