diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2018-10-25 22:55:31 +0300 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2018-10-25 22:55:31 +0300 |
commit | 4ba9628fe5bf90e0125dbec847a0cf4f5553de14 (patch) | |
tree | 5dc0dd56eb05d834c8df575ba1b07d474f54c22c /Documentation | |
parent | 06999fd59277afef07638453c695a500eb2a93c0 (diff) | |
parent | 1a16dbaf798c5b68ac767444eb045e6f3adaa16d (diff) | |
download | linux-4ba9628fe5bf90e0125dbec847a0cf4f5553de14.tar.xz |
Merge branch 'work.lookup' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull more ->lookup() cleanups from Al Viro:
"Some ->lookup() instances are still overcomplicating the life
for themselves, open-coding the stuff that would be handled by
d_splice_alias() just fine.
Simplify a couple of such cases caught this cycle and document
d_splice_alias() intended use"
* 'work.lookup' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
Document d_splice_alias() calling conventions for ->lookup() users.
simplify btrfs_lookup()
clean erofs_lookup()
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/filesystems/porting | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/Documentation/filesystems/porting b/Documentation/filesystems/porting index 7b7b845c490a..321d74b73937 100644 --- a/Documentation/filesystems/porting +++ b/Documentation/filesystems/porting @@ -622,3 +622,14 @@ in your dentry operations instead. alloc_file_clone(file, flags, ops) does not affect any caller's references. On success you get a new struct file sharing the mount/dentry with the original, on failure - ERR_PTR(). +-- +[recommended] + ->lookup() instances doing an equivalent of + if (IS_ERR(inode)) + return ERR_CAST(inode); + return d_splice_alias(inode, dentry); + don't need to bother with the check - d_splice_alias() will do the + right thing when given ERR_PTR(...) as inode. Moreover, passing NULL + inode to d_splice_alias() will also do the right thing (equivalent of + d_add(dentry, NULL); return NULL;), so that kind of special cases + also doesn't need a separate treatment. |