VFS: Put a small type field into struct dentry::d_flags
authorDavid Howells <dhowells@redhat.com>
Thu, 12 Sep 2013 18:22:53 +0000 (19:22 +0100)
committerAl Viro <viro@zeniv.linux.org.uk>
Sat, 9 Nov 2013 05:16:30 +0000 (00:16 -0500)
commitb18825a7c8e37a7cf6abb97a12a6ad71af160de7
treec3556fc0195f15382d636188f3d4e5fa418d7379
parentafabada957a6b28abfd37eb52efeefdfe6871c4b
VFS: Put a small type field into struct dentry::d_flags

Put a type field into struct dentry::d_flags to indicate if the dentry is one
of the following types that relate particularly to pathwalk:

Miss (negative dentry)
Directory
"Automount" directory (defective - no i_op->lookup())
Symlink
Other (regular, socket, fifo, device)

The type field is set to one of the first five types on a dentry by calls to
__d_instantiate() and d_obtain_alias() from information in the inode (if one is
given).

The type is cleared by dentry_unlink_inode() when it reconstitutes an existing
dentry as a negative dentry.

Accessors provided are:

d_set_type(dentry, type)
d_is_directory(dentry)
d_is_autodir(dentry)
d_is_symlink(dentry)
d_is_file(dentry)
d_is_negative(dentry)
d_is_positive(dentry)

A bunch of checks in pathname resolution switched to those.

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/dcache.c
fs/namei.c
include/linux/dcache.h