|
@@ -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 {
|