Linux 文件系统 VFS
星空探索
linux
展开
-
VFS之dentry目录项描述
目录项是对文件和目录等组织,其更多描述文件这种层次关系:struct dentry { /* RCU lookup touched fields */ unsigned int d_flags; /* protected by d_lock */ seqcount_t d_seq; /* per dentry seql...原创 2017-03-09 07:58:09 · 330 阅读 · 0 评论 -
inode更新access时间
更新文件的访问时间:/** * touch_atime - update the access time * @path: the &struct path to update * @inode: inode to update * * Update the accessed time on an inode and mark it for writeback. * T原创 2017-03-15 08:10:24 · 335 阅读 · 0 评论 -
inode更新mtime和ctime
/** * file_update_time-- update mtime and ctime time * @file: file accessed * * Update the mtime and ctime members of an inode and mark the inode * for writeback. Note that this function is原创 2017-03-15 08:10:47 · 634 阅读 · 0 评论 -
inode 等待dio完成
/** * inode_dio_wait - wait for outstanding DIO requests to finish * @inode: inode to wait for * * Waits for all pending direct I/O requests to finish so that we can * proceed with a truncat原创 2017-03-15 08:11:02 · 458 阅读 · 0 评论 -
super block分配
/** * alloc_super - create new superblock * @type: filesystem type superblock should belong to * @flags: the mount flags * @user_ns: User namespace for the super_block * * Allocates and in原创 2017-03-15 08:11:20 · 371 阅读 · 0 评论 -
inode根据hash后插入
int insert_inode_locked(struct inode *inode){ struct super_block *sb = inode->i_sb; ino_t ino = inode->i_ino; struct hlist_head *head = inode_hashtable + hash(sb, ino); while (1) { st原创 2017-03-15 08:17:28 · 417 阅读 · 0 评论 -
inode节点查找
节点查找,查找是利用前面介绍的hash值进行:/** * ilookup - search for an inode in the inode cache * @sb: super block of file system to search * @ino: inode number to search for * * Search for the ino原创 2017-03-15 08:17:52 · 925 阅读 · 0 评论 -
inode节点clear操作
inode 节点clear是把节点设置处于一种状态,即I_FREEING | I_CLEAR * I_FREEING Set when inode is about to be freed but still has dirty * pages or buffers attached or the inode itself is still * dirty. * I_原创 2017-03-15 08:18:07 · 685 阅读 · 0 评论 -
inode节点hash处理
static struct hlist_head *inode_hashtable __read_mostly;/* * Initialize the waitqueues and inode hash table. */void __init inode_init_early(void){ unsigned int loop; /* If hashes a原创 2017-03-15 08:18:21 · 786 阅读 · 0 评论 -
inode节点简单统计
/* * Statistics gathering.. */struct inodes_stat_t inodes_stat;static DEFINE_PER_CPU(unsigned long, nr_inodes); 所有分配使用的inodestatic DEFINE_PER_CPU(unsigned long, nr_unused);未使用的inodes原创 2017-03-15 08:18:44 · 997 阅读 · 0 评论 -
inode节点销毁
inode节点销毁:static void destroy_inode(struct inode *inode){ BUG_ON(!list_empty(&inode->i_lru)); __destroy_inode(inode); if (inode->i_sb->s_op->destroy_inode) inode->i_sb-&g...原创 2017-03-15 08:18:58 · 880 阅读 · 0 评论 -
VFS之file描述
file用于对一个已经打开的文件进行描述:struct file { union { struct llist_node fu_llist; struct rcu_head fu_rcuhead; } f_u; struct path f_path; struct inode *f_ino...原创 2017-03-09 07:58:31 · 347 阅读 · 0 评论 -
VFS之inode
对文件的抽象,即inode索引节点描述:/** Keep mostly read-only and often accessed (especially for* the RCU path lookup and 'stat' data) fields at the beginning* of the 'struct inode'*/struct inode { umod...原创 2017-03-09 07:59:02 · 575 阅读 · 0 评论 -
VFS之超级块结构
文件系统元信息,即超级块对象。struct super_block { struct list_head s_list; /* Keep this first */ dev_t s_dev; /* search index; _not_ kdev_t */ unsigned char ...原创 2017-03-09 07:59:20 · 547 阅读 · 0 评论 -
VFS之vfsmount挂载点描述
struct vfsmount { struct dentry *mnt_root; /* root of the mounted tree */ struct super_block *mnt_sb; /* pointer to superblock */ int mnt_flags;}; struct mount { struct hlist_node m原创 2017-03-09 07:59:36 · 1801 阅读 · 0 评论 -
VFS之文件系统描述
Linux内核对文件系统类型抽象后的数据结构,每个文件系统都有此类型的一个实例,并且具体文件系统需要静态定义此类型的对象,然后通过register_filesystem相关接口向系统注册。或者调用unregister_filesystem()注销。struct file_system_type { const char *name; int fs_flags;#define FS_REQUIRES_DEV 1 #define FS_BINARY_MOUNTDATA 2#define FS原创 2017-03-09 08:02:37 · 269 阅读 · 0 评论 -
VFS之mnt命名空间
struct mnt_namespace { atomic_t count; struct ns_common ns; struct mount * root; struct list_head list; struct user_namespace *user_ns; struct ucounts *ucounts; u64 seq; /* Sequence原创 2017-03-09 08:03:36 · 609 阅读 · 0 评论 -
VFS之目录项操作
struct dentry_operations { int (*d_revalidate)(struct dentry *, unsigned int); int (*d_weak_revalidate)(struct dentry *, unsigned int); int (*d_hash)(const struct dentry *, struct qstr *); int原创 2017-03-09 08:04:28 · 486 阅读 · 0 评论 -
VFS之inode操作
struct inode_operations { struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int); const char * (*get_link) (struct dentry *, struct inode *, struct delayed_call *); int (*permi原创 2017-03-09 08:05:27 · 526 阅读 · 0 评论 -
VFS之文件操作
struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char __user *, size_t, loff_t *); ssize_t (*write) (struct file *,原创 2017-03-09 08:08:41 · 1124 阅读 · 0 评论 -
VFS之超级块操作
超级块操作是整个文件系统提供各类操作的核心,主要是对节点和目录等操作,还有一些同步和回写控制等。struct super_operations { struct inode *(*alloc_inode)(struct super_block *sb); void (*destroy_inode)(struct inode *); void (*dirty_...原创 2017-03-09 08:10:06 · 341 阅读 · 0 评论 -
VFS与进程关联
进程描述符中与文件系统相关的成员:struct task_struct { /* filesystem information */ struct fs_struct *fs;/* open file information */ struct files_struct *files;/* namespaces */ struct nsproxy *nsproxy;原创 2017-03-09 08:11:15 · 290 阅读 · 0 评论 -
Linux ramfs, rootfs and initramfs
ramfs, rootfs and initramfs October 17, 2005 Rob Landley <rob@landley.net> =============================What is ramfs?--------------Ramfs is a very simple filesystem that exports Linux's disk...原创 2019-08-09 10:34:54 · 733 阅读 · 0 评论