aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/namespace.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfs/namespace.c')
-rw-r--r--fs/nfs/namespace.c24
1 files changed, 4 insertions, 20 deletions
diff --git a/fs/nfs/namespace.c b/fs/nfs/namespace.c
index f3fbb1bf3f18..f32b8603dca8 100644
--- a/fs/nfs/namespace.c
+++ b/fs/nfs/namespace.c
@@ -149,26 +149,10 @@ struct vfsmount *nfs_d_automount(struct path *path)
149 if (IS_ERR(mnt)) 149 if (IS_ERR(mnt))
150 goto out; 150 goto out;
151 151
152 mntget(mnt); 152 dprintk("%s: done, success\n", __func__);
153 err = do_add_mount(mnt, path, path->mnt->mnt_flags | MNT_SHRINKABLE, 153 mntget(mnt); /* prevent immediate expiration */
154 &nfs_automount_list); 154 mnt_set_expiry(mnt, &nfs_automount_list);
155 switch (err) { 155 schedule_delayed_work(&nfs_automount_task, nfs_mountpoint_expiry_timeout);
156 case 0:
157 dprintk("%s: done, success\n", __func__);
158 schedule_delayed_work(&nfs_automount_task, nfs_mountpoint_expiry_timeout);
159 break;
160 case -EBUSY:
161 /* someone else made a mount here whilst we were busy */
162 mntput(mnt);
163 dprintk("%s: done, collision\n", __func__);
164 mnt = NULL;
165 break;
166 default:
167 mntput(mnt);
168 dprintk("%s: done, error %d\n", __func__, err);
169 mnt = ERR_PTR(err);
170 break;
171 }
172 156
173out: 157out:
174 nfs_free_fattr(fattr); 158 nfs_free_fattr(fattr);