Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit caf7da3d authored by Ian Kent's avatar Ian Kent Committed by Linus Torvalds
Browse files

autofs4: revert - redo lookup in ttfd



This patch series enables the use of a single dentry for lookups prior to
the dentry being hashed and so we no longer need to redo the lookup.  This
patch reverts the patch of commit
03379044.

Signed-off-by: default avatarIan Kent <raven@themaw.net>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 5f6f4f28
Loading
Loading
Loading
Loading
+0 −21
Original line number Diff line number Diff line
@@ -242,7 +242,6 @@ static int try_to_fill_dentry(struct dentry *dentry, int flags)
{
	struct autofs_sb_info *sbi = autofs4_sbi(dentry->d_sb);
	struct autofs_info *ino = autofs4_dentry_ino(dentry);
	struct dentry *new;
	int status;

	/* Block on any pending expiry here; invalidate the dentry
@@ -320,26 +319,6 @@ static int try_to_fill_dentry(struct dentry *dentry, int flags)
	dentry->d_flags &= ~DCACHE_AUTOFS_PENDING;
	spin_unlock(&dentry->d_lock);

	/*
	 * The dentry that is passed in from lookup may not be the one
	 * we end up using, as mkdir can create a new one.  If this
	 * happens, and another process tries the lookup at the same time,
	 * it will set the PENDING flag on this new dentry, but add itself
	 * to our waitq.  Then, if after the lookup succeeds, the first
	 * process that requested the mount performs another lookup of the
	 * same directory, it will show up as still pending!  So, we need
	 * to redo the lookup here and clear pending on that dentry.
	 */
	if (d_unhashed(dentry)) {
		new = d_lookup(dentry->d_parent, &dentry->d_name);
		if (new) {
			spin_lock(&new->d_lock);
			new->d_flags &= ~DCACHE_AUTOFS_PENDING;
			spin_unlock(&new->d_lock);
			dput(new);
		}
	}

	return 0;
}