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

Commit 4d93bc3e authored by Al Viro's avatar Al Viro
Browse files

gfs2_atomic_open(): skip lookups on hashed dentry



hashed dentry can be passed to ->atomic_open() only if
a) it has just passed revalidation and
b) it's negative

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 18c85d09
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -1244,6 +1244,9 @@ static int gfs2_atomic_open(struct inode *dir, struct dentry *dentry,
	struct dentry *d;
	bool excl = !!(flags & O_EXCL);

	if (!d_unhashed(dentry))
		goto skip_lookup;

	d = __gfs2_lookup(dir, dentry, file, opened);
	if (IS_ERR(d))
		return PTR_ERR(d);
@@ -1260,6 +1263,8 @@ static int gfs2_atomic_open(struct inode *dir, struct dentry *dentry,
	}

	BUG_ON(d != NULL);

skip_lookup:
	if (!(flags & O_CREAT))
		return -ENOENT;