/*
* The next field is for VFS *only*. No filesystems have any business
* even looking at it. You had been warned. */ struct semaphore s_vfs_rename_sem; /* Kludge */ /* Granuality of c/m/atime in ns.
Cannot be worse than a second */
u32 s_time_gran;
};
//include/linux/dcache.h struct dentry {
atomic_t d_count; //引用计数 unsigned int d_flags; /* protected by d_lock */
spinlock_t d_lock; /* per dentry lock */ struct inode *d_inode; /* Where the name belongs to - NULL is
* negative,相关的索引节点*/ /*
* The next three fields are touched by __d_lookup. Place them here
* so they all fit in a 16-byte range, with 16-byte alignment. */ struct dentry *d_parent; /* parent directory,父目录的目录对象*/ struct qstr d_name; //文件名 struct list_head d_lru; /* LRU list,用于未使用目录项链表*/ struct list_head d_child; /* child of parent list,同一父目录的目录项链表*/ struct list_head d_subdirs; /* our children,子目录链表*/ struct list_head d_alias; /* inode alias list,连接同一索引节点的目录项链表*/
unsigned long d_time; /* used by d_revalidate */ struct dentry_operations *d_op; //目录操作函数 struct super_block *d_sb; /* The root of the dentry tree,指向文件的超级对象*/ void*d_fsdata; /* fs-specific data */ struct rcu_head d_rcu; struct dcookie_struct *d_cookie; /* cookie, if any */ struct hlist_node d_hash; /* lookup hash list,目录项对象散列表*/ int d_mounted;
unsigned char d_iname[DNAME_INLINE_LEN_MIN]; /* small names */
};
size_t f_maxcount;
unsigned long f_version; void*f_security;
/* needed for tty driver, and maybe others */ void*private_data;
#ifdef CONFIG_EPOLL /* Used by fs/eventpoll.c to link all the hooks to this file */ struct list_head f_ep_links;
spinlock_t f_ep_lock; #endif /* #ifdef CONFIG_EPOLL */ struct address_space *f_mapping;
};