|
@@ -92,7 +92,6 @@ struct dentry {
|
|
|
unsigned int d_flags; /* protected by d_lock */
|
|
|
spinlock_t d_lock; /* per dentry lock */
|
|
|
seqcount_t d_seq; /* per dentry seqlock */
|
|
|
- int d_mounted;
|
|
|
struct inode *d_inode; /* Where the name belongs to - NULL is
|
|
|
* negative */
|
|
|
/*
|
|
@@ -156,33 +155,34 @@ struct dentry_operations {
|
|
|
|
|
|
/* d_flags entries */
|
|
|
#define DCACHE_AUTOFS_PENDING 0x0001 /* autofs: "under construction" */
|
|
|
-#define DCACHE_NFSFS_RENAMED 0x0002 /* this dentry has been "silly
|
|
|
- * renamed" and has to be
|
|
|
- * deleted on the last dput()
|
|
|
- */
|
|
|
-#define DCACHE_DISCONNECTED 0x0004
|
|
|
- /* This dentry is possibly not currently connected to the dcache tree,
|
|
|
- * in which case its parent will either be itself, or will have this
|
|
|
- * flag as well. nfsd will not use a dentry with this bit set, but will
|
|
|
- * first endeavour to clear the bit either by discovering that it is
|
|
|
- * connected, or by performing lookup operations. Any filesystem which
|
|
|
- * supports nfsd_operations MUST have a lookup function which, if it finds
|
|
|
- * a directory inode with a DCACHE_DISCONNECTED dentry, will d_move
|
|
|
- * that dentry into place and return that dentry rather than the passed one,
|
|
|
- * typically using d_splice_alias.
|
|
|
- */
|
|
|
+#define DCACHE_NFSFS_RENAMED 0x0002
|
|
|
+ /* this dentry has been "silly renamed" and has to be deleted on the last
|
|
|
+ * dput() */
|
|
|
+
|
|
|
+#define DCACHE_DISCONNECTED 0x0004
|
|
|
+ /* This dentry is possibly not currently connected to the dcache tree, in
|
|
|
+ * which case its parent will either be itself, or will have this flag as
|
|
|
+ * well. nfsd will not use a dentry with this bit set, but will first
|
|
|
+ * endeavour to clear the bit either by discovering that it is connected,
|
|
|
+ * or by performing lookup operations. Any filesystem which supports
|
|
|
+ * nfsd_operations MUST have a lookup function which, if it finds a
|
|
|
+ * directory inode with a DCACHE_DISCONNECTED dentry, will d_move that
|
|
|
+ * dentry into place and return that dentry rather than the passed one,
|
|
|
+ * typically using d_splice_alias. */
|
|
|
|
|
|
#define DCACHE_REFERENCED 0x0008 /* Recently used, don't discard. */
|
|
|
#define DCACHE_UNHASHED 0x0010
|
|
|
-
|
|
|
-#define DCACHE_INOTIFY_PARENT_WATCHED 0x0020 /* Parent inode is watched by inotify */
|
|
|
+#define DCACHE_INOTIFY_PARENT_WATCHED 0x0020
|
|
|
+ /* Parent inode is watched by inotify */
|
|
|
|
|
|
#define DCACHE_COOKIE 0x0040 /* For use by dcookie subsystem */
|
|
|
-
|
|
|
-#define DCACHE_FSNOTIFY_PARENT_WATCHED 0x0080 /* Parent inode is watched by some fsnotify listener */
|
|
|
+#define DCACHE_FSNOTIFY_PARENT_WATCHED 0x0080
|
|
|
+ /* Parent inode is watched by some fsnotify listener */
|
|
|
|
|
|
#define DCACHE_CANT_MOUNT 0x0100
|
|
|
#define DCACHE_GENOCIDE 0x0200
|
|
|
+#define DCACHE_MOUNTED 0x0400 /* is a mountpoint */
|
|
|
+
|
|
|
|
|
|
extern spinlock_t dcache_inode_lock;
|
|
|
extern seqlock_t rename_lock;
|
|
@@ -372,7 +372,7 @@ extern void dput(struct dentry *);
|
|
|
|
|
|
static inline int d_mountpoint(struct dentry *dentry)
|
|
|
{
|
|
|
- return dentry->d_mounted;
|
|
|
+ return dentry->d_flags & DCACHE_MOUNTED;
|
|
|
}
|
|
|
|
|
|
extern struct vfsmount *lookup_mnt(struct path *);
|