VFS之inode

来源:互联网 发布:卡通人物制作的软件 编辑:程序博客网 时间:2024/06/05 14:56
对文件的抽象,即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 { umode_t   i_mode; unsigned short  i_opflags; kuid_t   i_uid; kgid_t   i_gid; unsigned int  i_flags;

#ifdef CONFIG_FS_POSIX_ACL struct posix_acl *i_acl; struct posix_acl *i_default_acl;#endif

 const struct inode_operations *i_op; struct super_block *i_sb; struct address_space *i_mapping;

#ifdef CONFIG_SECURITY void   *i_security;#endif

 /* Stat data, not accessed from path walking */ unsigned long  i_ino; /*  * Filesystems may only read i_nlink directly.  They shall use the  * following functions for modification:  *  *    (set|clear|inc|drop)_nlink  *    inode_(inc|dec)_link_count  */ union {  const unsigned int i_nlink;  unsigned int __i_nlink; }; dev_t   i_rdev; loff_t   i_size; struct timespec  i_atime; struct timespec  i_mtime; struct timespec  i_ctime; spinlock_t  i_lock; /* i_blocks, i_bytes, maybe i_size */ unsigned short          i_bytes; unsigned int  i_blkbits; blkcnt_t  i_blocks;

#ifdef __NEED_I_SIZE_ORDERED seqcount_t  i_size_seqcount;#endif

 /* Misc */ unsigned long  i_state; struct rw_semaphore i_rwsem;

 unsigned long  dirtied_when; /* jiffies of first dirtying */ unsigned long  dirtied_time_when;

 struct hlist_node i_hash; struct list_head i_io_list; /* backing dev IO list */#ifdef CONFIG_CGROUP_WRITEBACK struct bdi_writeback *i_wb;  /* the associated cgroup wb */

 /* foreign inode detection, see wbc_detach_inode() */ int   i_wb_frn_winner; u16   i_wb_frn_avg_time; u16   i_wb_frn_history;#endif struct list_head i_lru;  /* inode LRU list */ struct list_head i_sb_list; struct list_head i_wb_list; /* backing dev writeback list */ union {  struct hlist_head i_dentry;  struct rcu_head  i_rcu; }; u64   i_version; atomic_t  i_count; atomic_t  i_dio_count; atomic_t  i_writecount;#ifdef CONFIG_IMA atomic_t  i_readcount; /* struct files open RO */#endif const struct file_operations *i_fop; /* former ->i_op->default_file_ops */ struct file_lock_context *i_flctx; struct address_space i_data; struct list_head i_devices; union {  struct pipe_inode_info *i_pipe;  struct block_device *i_bdev;  struct cdev  *i_cdev;  char   *i_link;  unsigned  i_dir_seq; };

 __u32   i_generation;

#ifdef CONFIG_FSNOTIFY __u32   i_fsnotify_mask; /* all events this inode cares about */ struct hlist_head i_fsnotify_marks;#endif

#if IS_ENABLED(CONFIG_FS_ENCRYPTION) struct fscrypt_info *i_crypt_info;#endif

 void   *i_private; /* fs or device private pointer */};

 
 
 
0 0
原创粉丝点击