aboutsummaryrefslogtreecommitdiffstats
path: root/fs/autofs4/root.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/autofs4/root.c')
-rw-r--r--fs/autofs4/root.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/fs/autofs4/root.c b/fs/autofs4/root.c
index af9a4c6bbadf..c7ff35774344 100644
--- a/fs/autofs4/root.c
+++ b/fs/autofs4/root.c
@@ -294,14 +294,13 @@ static int try_to_fill_dentry(struct vfsmount *mnt, struct dentry *dentry, int f
294 294
295 /* Turn this into a real negative dentry? */ 295 /* Turn this into a real negative dentry? */
296 if (status == -ENOENT) { 296 if (status == -ENOENT) {
297 dentry->d_time = jiffies + AUTOFS_NEGATIVE_TIMEOUT;
298 spin_lock(&dentry->d_lock); 297 spin_lock(&dentry->d_lock);
299 dentry->d_flags &= ~DCACHE_AUTOFS_PENDING; 298 dentry->d_flags &= ~DCACHE_AUTOFS_PENDING;
300 spin_unlock(&dentry->d_lock); 299 spin_unlock(&dentry->d_lock);
301 return 1; 300 return 0;
302 } else if (status) { 301 } else if (status) {
303 /* Return a negative dentry, but leave it "pending" */ 302 /* Return a negative dentry, but leave it "pending" */
304 return 1; 303 return 0;
305 } 304 }
306 /* Trigger mount for path component or follow link */ 305 /* Trigger mount for path component or follow link */
307 } else if (flags & (LOOKUP_CONTINUE | LOOKUP_DIRECTORY) || 306 } else if (flags & (LOOKUP_CONTINUE | LOOKUP_DIRECTORY) ||
@@ -360,13 +359,13 @@ static int autofs4_revalidate(struct dentry *dentry, struct nameidata *nd)
360 359
361 /* Negative dentry.. invalidate if "old" */ 360 /* Negative dentry.. invalidate if "old" */
362 if (dentry->d_inode == NULL) 361 if (dentry->d_inode == NULL)
363 return (dentry->d_time - jiffies <= AUTOFS_NEGATIVE_TIMEOUT); 362 return 0;
364 363
365 /* Check for a non-mountpoint directory with no contents */ 364 /* Check for a non-mountpoint directory with no contents */
366 spin_lock(&dcache_lock); 365 spin_lock(&dcache_lock);
367 if (S_ISDIR(dentry->d_inode->i_mode) && 366 if (S_ISDIR(dentry->d_inode->i_mode) &&
368 !d_mountpoint(dentry) && 367 !d_mountpoint(dentry) &&
369 list_empty(&dentry->d_subdirs)) { 368 simple_empty_nolock(dentry)) {
370 DPRINTK("dentry=%p %.*s, emptydir", 369 DPRINTK("dentry=%p %.*s, emptydir",
371 dentry, dentry->d_name.len, dentry->d_name.name); 370 dentry, dentry->d_name.len, dentry->d_name.name);
372 spin_unlock(&dcache_lock); 371 spin_unlock(&dcache_lock);