mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-21 14:11:20 +00:00
vfs: add flags to d_real()
Add a separate flags argument (in addition to the open flags) to control the behavior of d_real(). Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
This commit is contained in:
parent
191a3980c6
commit
495e642939
6 changed files with 13 additions and 12 deletions
|
@ -147,7 +147,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;
|
||||
|
||||
/*
|
||||
|
@ -566,7 +566,8 @@ 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)
|
||||
* @flags: open flags to control copy-up behavior
|
||||
* @open_flags: open flags to control copy-up behavior
|
||||
* @flags: flags to control what is returned by this function
|
||||
*
|
||||
* If dentry is on a union/overlay, then return the underlying, real dentry.
|
||||
* Otherwise return the dentry itself.
|
||||
|
@ -575,10 +576,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 flags)
|
||||
unsigned int open_flags, unsigned int flags)
|
||||
{
|
||||
if (unlikely(dentry->d_flags & DCACHE_OP_REAL))
|
||||
return dentry->d_op->d_real(dentry, inode, flags);
|
||||
return dentry->d_op->d_real(dentry, inode, open_flags, flags);
|
||||
else
|
||||
return dentry;
|
||||
}
|
||||
|
@ -593,7 +594,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));
|
||||
return d_backing_inode(d_real((struct dentry *) dentry, NULL, 0, 0));
|
||||
}
|
||||
|
||||
struct name_snapshot {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue