shmem_whiteout(): fix regression from tree-in-dcache series
Now that shmem_mknod() hashes the new dentry, d_rehash() in
shmem_whiteout() should be removed.
X-paperbag: brown
Reported-by: Hugh Dickins <hughd@google.com>
Acked-by: Hugh Dickins <hughd@google.com>
Tested-by: Hugh Dickins <hughd@google.com>
Fixes: 2313598222 ("convert ramfs and tmpfs")
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
pull/1354/merge
parent
0048fbb401
commit
3010f06c52
12
mm/shmem.c
12
mm/shmem.c
|
|
@ -4019,22 +4019,10 @@ static int shmem_whiteout(struct mnt_idmap *idmap,
|
||||||
whiteout = d_alloc(old_dentry->d_parent, &old_dentry->d_name);
|
whiteout = d_alloc(old_dentry->d_parent, &old_dentry->d_name);
|
||||||
if (!whiteout)
|
if (!whiteout)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
error = shmem_mknod(idmap, old_dir, whiteout,
|
error = shmem_mknod(idmap, old_dir, whiteout,
|
||||||
S_IFCHR | WHITEOUT_MODE, WHITEOUT_DEV);
|
S_IFCHR | WHITEOUT_MODE, WHITEOUT_DEV);
|
||||||
dput(whiteout);
|
dput(whiteout);
|
||||||
if (error)
|
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
/*
|
|
||||||
* Cheat and hash the whiteout while the old dentry is still in
|
|
||||||
* place, instead of playing games with FS_RENAME_DOES_D_MOVE.
|
|
||||||
*
|
|
||||||
* d_lookup() will consistently find one of them at this point,
|
|
||||||
* not sure which one, but that isn't even important.
|
|
||||||
*/
|
|
||||||
d_rehash(whiteout);
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue