Loading Documentation/filesystems/Locking +1 −1 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ prototypes: struct vfsmount *(*d_automount)(struct path *path); int (*d_manage)(const struct path *, bool); struct dentry *(*d_real)(struct dentry *, const struct inode *, unsigned int, unsigned int); unsigned int); locking rules: rename_lock ->d_lock may block rcu-walk Loading Documentation/filesystems/vfs.txt +1 −1 Original line number Diff line number Diff line Loading @@ -1001,7 +1001,7 @@ struct dentry_operations { struct vfsmount *(*d_automount)(struct path *); int (*d_manage)(const struct path *, bool); struct dentry *(*d_real)(struct dentry *, const struct inode *, unsigned int, unsigned int); unsigned int); }; d_revalidate: called when the VFS needs to revalidate a dentry. This Loading fs/open.c +1 −1 Original line number Diff line number Diff line Loading @@ -96,7 +96,7 @@ long vfs_truncate(const struct path *path, loff_t length) * write access on the upper inode, not on the overlay inode. For * non-overlay filesystems d_real() is an identity function. */ upperdentry = d_real(path->dentry, NULL, O_WRONLY, 0); upperdentry = d_real(path->dentry, NULL, O_WRONLY); error = PTR_ERR(upperdentry); if (IS_ERR(upperdentry)) goto mnt_drop_write_and_out; Loading fs/overlayfs/super.c +2 −2 Original line number Diff line number Diff line Loading @@ -92,7 +92,7 @@ static int ovl_check_append_only(struct inode *inode, int flag) static struct dentry *ovl_d_real(struct dentry *dentry, const struct inode *inode, unsigned int open_flags, unsigned int flags) unsigned int open_flags) { struct dentry *real; int err; Loading Loading @@ -128,7 +128,7 @@ static struct dentry *ovl_d_real(struct dentry *dentry, goto bug; /* Handle recursion */ real = d_real(real, inode, open_flags, 0); real = d_real(real, inode, open_flags); if (!inode || inode == d_inode(real)) return real; Loading include/linux/dcache.h +5 −6 Original line number Diff line number Diff line Loading @@ -146,7 +146,7 @@ struct dentry_operations { struct vfsmount *(*d_automount)(struct path *); int (*d_manage)(const struct path *, bool); struct dentry *(*d_real)(struct dentry *, const struct inode *, unsigned int, unsigned int); unsigned int); } ____cacheline_aligned; /* Loading Loading @@ -568,8 +568,7 @@ static inline struct dentry *d_backing_dentry(struct dentry *upper) * d_real - Return the real dentry * @dentry: the dentry to query * @inode: inode to select the dentry from multiple layers (can be NULL) * @open_flags: open flags to control copy-up behavior * @flags: flags to control what is returned by this function * @flags: open flags to control copy-up behavior * * If dentry is on a union/overlay, then return the underlying, real dentry. * Otherwise return the dentry itself. Loading @@ -578,10 +577,10 @@ static inline struct dentry *d_backing_dentry(struct dentry *upper) */ static inline struct dentry *d_real(struct dentry *dentry, const struct inode *inode, unsigned int open_flags, unsigned int flags) unsigned int flags) { if (unlikely(dentry->d_flags & DCACHE_OP_REAL)) return dentry->d_op->d_real(dentry, inode, open_flags, flags); return dentry->d_op->d_real(dentry, inode, flags); else return dentry; } Loading @@ -596,7 +595,7 @@ static inline struct dentry *d_real(struct dentry *dentry, static inline struct inode *d_real_inode(const struct dentry *dentry) { /* This usage of d_real() results in const dentry */ return d_backing_inode(d_real((struct dentry *) dentry, NULL, 0, 0)); return d_backing_inode(d_real((struct dentry *) dentry, NULL, 0)); } struct name_snapshot { Loading Loading
Documentation/filesystems/Locking +1 −1 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ prototypes: struct vfsmount *(*d_automount)(struct path *path); int (*d_manage)(const struct path *, bool); struct dentry *(*d_real)(struct dentry *, const struct inode *, unsigned int, unsigned int); unsigned int); locking rules: rename_lock ->d_lock may block rcu-walk Loading
Documentation/filesystems/vfs.txt +1 −1 Original line number Diff line number Diff line Loading @@ -1001,7 +1001,7 @@ struct dentry_operations { struct vfsmount *(*d_automount)(struct path *); int (*d_manage)(const struct path *, bool); struct dentry *(*d_real)(struct dentry *, const struct inode *, unsigned int, unsigned int); unsigned int); }; d_revalidate: called when the VFS needs to revalidate a dentry. This Loading
fs/open.c +1 −1 Original line number Diff line number Diff line Loading @@ -96,7 +96,7 @@ long vfs_truncate(const struct path *path, loff_t length) * write access on the upper inode, not on the overlay inode. For * non-overlay filesystems d_real() is an identity function. */ upperdentry = d_real(path->dentry, NULL, O_WRONLY, 0); upperdentry = d_real(path->dentry, NULL, O_WRONLY); error = PTR_ERR(upperdentry); if (IS_ERR(upperdentry)) goto mnt_drop_write_and_out; Loading
fs/overlayfs/super.c +2 −2 Original line number Diff line number Diff line Loading @@ -92,7 +92,7 @@ static int ovl_check_append_only(struct inode *inode, int flag) static struct dentry *ovl_d_real(struct dentry *dentry, const struct inode *inode, unsigned int open_flags, unsigned int flags) unsigned int open_flags) { struct dentry *real; int err; Loading Loading @@ -128,7 +128,7 @@ static struct dentry *ovl_d_real(struct dentry *dentry, goto bug; /* Handle recursion */ real = d_real(real, inode, open_flags, 0); real = d_real(real, inode, open_flags); if (!inode || inode == d_inode(real)) return real; Loading
include/linux/dcache.h +5 −6 Original line number Diff line number Diff line Loading @@ -146,7 +146,7 @@ struct dentry_operations { struct vfsmount *(*d_automount)(struct path *); int (*d_manage)(const struct path *, bool); struct dentry *(*d_real)(struct dentry *, const struct inode *, unsigned int, unsigned int); unsigned int); } ____cacheline_aligned; /* Loading Loading @@ -568,8 +568,7 @@ static inline struct dentry *d_backing_dentry(struct dentry *upper) * d_real - Return the real dentry * @dentry: the dentry to query * @inode: inode to select the dentry from multiple layers (can be NULL) * @open_flags: open flags to control copy-up behavior * @flags: flags to control what is returned by this function * @flags: open flags to control copy-up behavior * * If dentry is on a union/overlay, then return the underlying, real dentry. * Otherwise return the dentry itself. Loading @@ -578,10 +577,10 @@ static inline struct dentry *d_backing_dentry(struct dentry *upper) */ static inline struct dentry *d_real(struct dentry *dentry, const struct inode *inode, unsigned int open_flags, unsigned int flags) unsigned int flags) { if (unlikely(dentry->d_flags & DCACHE_OP_REAL)) return dentry->d_op->d_real(dentry, inode, open_flags, flags); return dentry->d_op->d_real(dentry, inode, flags); else return dentry; } Loading @@ -596,7 +595,7 @@ static inline struct dentry *d_real(struct dentry *dentry, static inline struct inode *d_real_inode(const struct dentry *dentry) { /* This usage of d_real() results in const dentry */ return d_backing_inode(d_real((struct dentry *) dentry, NULL, 0, 0)); return d_backing_inode(d_real((struct dentry *) dentry, NULL, 0)); } struct name_snapshot { Loading