|
@@ -464,4 +464,61 @@ static inline unsigned long vfs_pressure_ratio(unsigned long val)
|
|
|
{
|
|
|
return mult_frac(val, sysctl_vfs_cache_pressure, 100);
|
|
|
}
|
|
|
+
|
|
|
+/**
|
|
|
+ * d_inode - Get the actual inode of this dentry
|
|
|
+ * @dentry: The dentry to query
|
|
|
+ *
|
|
|
+ * This is the helper normal filesystems should use to get at their own inodes
|
|
|
+ * in their own dentries and ignore the layering superimposed upon them.
|
|
|
+ */
|
|
|
+static inline struct inode *d_inode(const struct dentry *dentry)
|
|
|
+{
|
|
|
+ return dentry->d_inode;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * d_inode_rcu - Get the actual inode of this dentry with ACCESS_ONCE()
|
|
|
+ * @dentry: The dentry to query
|
|
|
+ *
|
|
|
+ * This is the helper normal filesystems should use to get at their own inodes
|
|
|
+ * in their own dentries and ignore the layering superimposed upon them.
|
|
|
+ */
|
|
|
+static inline struct inode *d_inode_rcu(const struct dentry *dentry)
|
|
|
+{
|
|
|
+ return ACCESS_ONCE(dentry->d_inode);
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * d_backing_inode - Get upper or lower inode we should be using
|
|
|
+ * @upper: The upper layer
|
|
|
+ *
|
|
|
+ * This is the helper that should be used to get at the inode that will be used
|
|
|
+ * if this dentry were to be opened as a file. The inode may be on the upper
|
|
|
+ * dentry or it may be on a lower dentry pinned by the upper.
|
|
|
+ *
|
|
|
+ * Normal filesystems should not use this to access their own inodes.
|
|
|
+ */
|
|
|
+static inline struct inode *d_backing_inode(const struct dentry *upper)
|
|
|
+{
|
|
|
+ struct inode *inode = upper->d_inode;
|
|
|
+
|
|
|
+ return inode;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * d_backing_dentry - Get upper or lower dentry we should be using
|
|
|
+ * @upper: The upper layer
|
|
|
+ *
|
|
|
+ * This is the helper that should be used to get the dentry of the inode that
|
|
|
+ * will be used if this dentry were opened as a file. It may be the upper
|
|
|
+ * dentry or it may be a lower dentry pinned by the upper.
|
|
|
+ *
|
|
|
+ * Normal filesystems should not use this to access their own dentries.
|
|
|
+ */
|
|
|
+static inline struct dentry *d_backing_dentry(struct dentry *upper)
|
|
|
+{
|
|
|
+ return upper;
|
|
|
+}
|
|
|
+
|
|
|
#endif /* __LINUX_DCACHE_H */
|