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

Commit 3781764b authored by Al Viro's avatar Al Viro
Browse files

proc_fill_cache(): switch to d_alloc_parallel()



... making it usable with directory locked shared

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 61922694
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -1819,14 +1819,19 @@ bool proc_fill_cache(struct file *file, struct dir_context *ctx,

	child = d_hash_and_lookup(dir, &qname);
	if (!child) {
		child = d_alloc(dir, &qname);
		if (!child)
		DECLARE_WAIT_QUEUE_HEAD_ONSTACK(wq);
		child = d_alloc_parallel(dir, &qname, &wq);
		if (IS_ERR(child))
			goto end_instantiate;
		if (instantiate(d_inode(dir), child, task, ptr) < 0) {
		if (d_in_lookup(child)) {
			int err = instantiate(d_inode(dir), child, task, ptr);
			d_lookup_done(child);
			if (err < 0) {
				dput(child);
				goto end_instantiate;
			}
		}
	}
	inode = d_inode(child);
	ino = inode->i_ino;
	type = inode->i_mode >> 12;