<span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> vfsmount </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">{</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> list_head mnt_hash</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 连接到VFSMOUNT Hash Table */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> vfsmount </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">mnt_parent</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 指向mount树中的父节点 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> dentry </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">mnt_mountpoint</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 指向mount点的目录项 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> dentry </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">mnt_root</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 被mount的文件系统根目录项 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> super_block </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">mnt_sb</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 指向被mount的文件系统superblock */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">#ifdef</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> CONFIG_SMP </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_pcp __percpu </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">mnt_pcp</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="typ" style="padding: 0px; margin: 0px; color: rgb(102, 0, 102);">atomic_t</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_longterm</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* how many of the refs are longterm */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">#else</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_count</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_writers</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">#endif</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> list_head mnt_mounts</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 下级(child)vfsmount对象链表 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> list_head mnt_child</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 链入上级vfsmount对象的链表点 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_flags</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 4 bytes hole on 64bits arches without fsnotify */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">#ifdef</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> CONFIG_FSNOTIFY __u32 mnt_fsnotify_mask</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> hlist_head mnt_fsnotify_marks</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">#endif</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">const</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">char</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">mnt_devname</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 文件系统所在的设备名字,例如/dev/sdb */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> list_head mnt_list</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> list_head mnt_expire</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* link in fs-specific expiry list */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> list_head mnt_share</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* circular list of shared mounts */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> list_head mnt_slave_list</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* list of slave mounts */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> list_head mnt_slave</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* slave list entry */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> vfsmount </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">mnt_master</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* slave is on master->mnt_slave_list */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_namespace </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">mnt_ns</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* containing namespace */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_id</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* mount identifier */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_group_id</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* peer group identifier */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_expiry_mark</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* true if marked for expiry */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_pinned</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_ghosts</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">};</span>
<span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> super_block </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">{</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> list_head s_list</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 链入全局链表的对象*/</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="typ" style="padding: 0px; margin: 0px; color: rgb(102, 0, 102);">dev_t</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s_dev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* search index; _not_ kdev_t */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">unsigned</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">char</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s_dirt</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">unsigned</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">char</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s_blocksize_bits</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">unsigned</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">long</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s_blocksize</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="typ" style="padding: 0px; margin: 0px; color: rgb(102, 0, 102);">loff_t</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s_maxbytes</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* Max </span><a target=_blank href="http://www.linuxeye.com/command/file.html" target="_blank" style="color: rgb(37, 110, 177); text-decoration: none; padding: 0px; margin: 0px; border: none;"><span style="padding: 0px; margin: 0px;"><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">file</span></span></a><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);"> size */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> file_system_type </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_type</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">const</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> super_operations </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_op</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* superblock操作函数集 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">const</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> dquot_operations </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">dq_op</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">const</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> quotactl_ops </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_qcop</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">const</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> export_operations </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_export_op</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">unsigned</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">long</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s_flags</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">unsigned</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">long</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s_magic</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> dentry </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_root</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 文件系统根目录项 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> rw_semaphore s_</span><a target=_blank href="http://www.linuxeye.com/command/69.html" target="_blank" style="color: rgb(37, 110, 177); text-decoration: none; padding: 0px; margin: 0px; border: none;"><span style="padding: 0px; margin: 0px;"><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">umount</span></span></a><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mutex s_lock</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s_count</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="typ" style="padding: 0px; margin: 0px; color: rgb(102, 0, 102);">atomic_t</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s_active</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">#ifdef</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> CONFIG_SECURITY </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">void</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_security</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">#endif</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">const</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> xattr_handler </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">**</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_xattr</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> list_head s_inodes</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* all inodes */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> hlist_bl_head s_anon</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* anonymous dentries for (nfs) exporting */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">#ifdef</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> CONFIG_SMP </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> list_head __percpu </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_files</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">#else</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> list_head s_files</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">#endif</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* s_dentry_lru, s_nr_dentry_unused protected by dcache.c lru locks */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> list_head s_dentry_lru</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* unused dentry lru */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s_nr_dentry_unused</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* # of dentry on lru */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* s_inode_lru_lock protects s_inode_lru and s_nr_inodes_unused */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="typ" style="padding: 0px; margin: 0px; color: rgb(102, 0, 102);">spinlock_t</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s_inode_lru_lock ____cacheline_aligned_in_smp</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> list_head s_inode_lru</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* unused inode lru */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s_nr_inodes_unused</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* # of inodes on lru */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> block_device </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_bdev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> backing_dev_info </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_bdi</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mtd_info </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_mtd</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> list_head s_instances</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> quota_info s_dquot</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* Diskquota specific options */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s_frozen</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="typ" style="padding: 0px; margin: 0px; color: rgb(102, 0, 102);">wait_queue_head_t</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s_wait_unfrozen</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">char</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s_id</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">[</span><span class="lit" style="padding: 0px; margin: 0px; color: rgb(0, 102, 102);">32</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">];</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* Informational name */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> u8 s_uuid</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">[</span><span class="lit" style="padding: 0px; margin: 0px; color: rgb(0, 102, 102);">16</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">];</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* UUID */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">void</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_fs_info</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* Filesystem private info */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="typ" style="padding: 0px; margin: 0px; color: rgb(102, 0, 102);">fmode_t</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s_mode</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* Granularity of c/m/atime in ns. Cannot be worse than a second */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> u32 s_time_gran</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* * The next field is for VFS *only*. No filesystems have any business * even looking at it. You had been warned. */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mutex s_vfs_rename_mutex</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* Kludge */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* * Filesystem subtype. If non-empty the filesystem type field * in /proc/mounts will be "type.subtype" */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">char</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_subtype</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* * Saved mount options for lazy filesystems using * generic_show_options() */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">char</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> __rcu </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_options</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">const</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> dentry_operations </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_d_op</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* default d_op for dentries */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* * Saved pool identifier for cleancache (-1 means none) */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> cleancache_poolid</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> shrinker s_shrink</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* per-sb shrinker handle */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">};</span>
<span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">SYSCALL_DEFINE5</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">mount</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">char</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> __user </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> dev_name</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">char</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> __user </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> dir_name</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">char</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> __user </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> type</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">unsigned</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">long</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> flags</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">void</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> __user </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> data</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">{</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> ret</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">char</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">kernel_type</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">char</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">kernel_dir</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">char</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">kernel_dev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">unsigned</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">long</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> data_page</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 获取mount类型 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> ret </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> copy_mount_string</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">type</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">kernel_type</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">ret </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);"><</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="lit" style="padding: 0px; margin: 0px; color: rgb(0, 102, 102);">0</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">goto</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> out_type</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 获取mount点目录字符串 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> kernel_dir </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> getname</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">dir_name</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">IS_ERR</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">kernel_dir</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">))</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">{</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> ret </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> PTR_ERR</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">kernel_dir</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">goto</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> out_dir</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">}</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 获取设备名称字符串 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> ret </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> copy_mount_string</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">dev_name</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">kernel_dev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">ret </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);"><</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="lit" style="padding: 0px; margin: 0px; color: rgb(0, 102, 102);">0</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">goto</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> out_dev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 获取其它选项 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> ret </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> copy_mount_options</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">data</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">data_page</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">ret </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);"><</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="lit" style="padding: 0px; margin: 0px; color: rgb(0, 102, 102);">0</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">goto</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> out_data</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 主要函数,执行挂载文件系统的具体操作 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> ret </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> do_mount</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">kernel_dev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> kernel_dir</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> kernel_type</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> flags</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">void</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> data_page</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> free_page</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">data_page</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> out_data</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">:</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> kfree</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">kernel_dev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> out_dev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">:</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> putname</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">kernel_dir</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> out_dir</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">:</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> kfree</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">kernel_type</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> out_type</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">:</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">return</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> ret</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">}</span>
<span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">long</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> do_mount</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">char</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">dev_name</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">char</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">dir_name</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">char</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">type_page</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">unsigned</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">long</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> flags</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">void</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">data_page</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">{</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> path path</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> retval </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="lit" style="padding: 0px; margin: 0px; color: rgb(0, 102, 102);">0</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="lit" style="padding: 0px; margin: 0px; color: rgb(0, 102, 102);">0</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">。。。</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 通过mount目录字符串获取path,path结构中包含有mount目录的dentry目录对象 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> retval </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> kern_path</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">dir_name</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> LOOKUP_FOLLOW</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">path</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">retval</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">return</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> retval</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">。。。</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* Separate the per-mountpoint flags */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_NOSUID</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MNT_NOSUID</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_NODEV</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MNT_NODEV</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_NOEXEC</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MNT_NOEXEC</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_NOATIME</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MNT_NOATIME</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_NODIRATIME</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MNT_NODIRATIME</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_STRICTATIME</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">~(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">MNT_RELATIME </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MNT_NOATIME</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_RDONLY</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MNT_READONLY</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">~(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">MS_NOSUID </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_NOEXEC </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_NODEV </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_ACTIVE </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_BORN </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_NOATIME </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_NODIRATIME </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_RELATIME</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_KERNMOUNT </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_STRICTATIME</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* remount操作 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_REMOUNT</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> retval </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> do_remount</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">path</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">~</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">MS_REMOUNT</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_flags</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> data_page</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">else</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_BIND</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> retval </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> do_loopback</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">path</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> dev_name</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_REC</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">else</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">MS_SHARED </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_PRIVATE </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_SLAVE </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_UNBINDABLE</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">))</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> retval </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> do_change_type</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">path</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> flags</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">else</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_MOVE</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> retval </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> do_move_mount</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">path</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> dev_name</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">else</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 正常的mount操作,完成具体的mount操作 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> retval </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> do_new_mount</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">path</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> type_page</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> flags</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_flags</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> dev_name</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> data_page</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> dput_out</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">:</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> path_put</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">path</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">return</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> retval</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">}</span>
<span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">static</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> do_new_mount</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> path </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">path</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">char</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">type</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> flags</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_flags</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">char</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">name</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">void</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">data</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">{</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> vfsmount </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">mnt</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> err</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">。。。</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 在内核建立vfsmount对象和superblock对象 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> do_kern_mount</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">type</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> flags</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> name</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> data</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">IS_ERR</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">mnt</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">))</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">return</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> PTR_ERR</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">mnt</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 将vfsmount对象加入系统,屏蔽原有dentry对象 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> err </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> do_add_mount</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">mnt</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> path</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mnt_flags</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">err</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mntput</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">mnt</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">return</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> err</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">}</span>
<span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">static</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> file_system_type ext3_fs_type </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">{</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">owner </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> THIS_MODULE</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">name </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="str" style="padding: 0px; margin: 0px; color: rgb(0, 136, 0);">"ext3"</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">mount </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> ext3_mount</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* ext3文件系统mount方法 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">kill_sb </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> kill_block_super</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">fs_flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> FS_REQUIRES_DEV</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">};</span>
<span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> dentry </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">mount_bdev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> file_system_type </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">fs_type</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> flags</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">const</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">char</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">dev_name</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">void</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">data</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">fill_super</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)(</span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> super_block </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">void</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">))</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">{</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> block_device </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">bdev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">struct</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> super_block </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">*</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="typ" style="padding: 0px; margin: 0px; color: rgb(102, 0, 102);">fmode_t</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mode </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> FMODE_READ </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> FMODE_EXCL</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> error </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="lit" style="padding: 0px; margin: 0px; color: rgb(0, 102, 102);">0</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(!(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_RDONLY</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">))</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mode </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> FMODE_WRITE</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 通过设备名字获取被mount设备的bdev对象 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> bdev </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> blkdev_get_by_path</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">dev_name</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mode</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> fs_type</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">IS_ERR</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">bdev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">))</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">return</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> ERR_CAST</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">bdev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* * once the super is inserted into the list by sget, s_umount * will protect the lockfs code from trying to start a snapshot * while we are mounting */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mutex_lock</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">bdev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">-></span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">bd_fsfreeze_mutex</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">bdev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">-></span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">bd_fsfreeze_count </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">></span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="lit" style="padding: 0px; margin: 0px; color: rgb(0, 102, 102);">0</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">{</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mutex_unlock</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">bdev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">-></span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">bd_fsfreeze_mutex</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> error </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">-</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">EBUSY</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">goto</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> error_bdev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">}</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 查找或者创建superblock对象 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> sget</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">fs_type</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> test_bdev_super</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> set_bdev_super</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> bdev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mutex_unlock</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">bdev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">-></span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">bd_fsfreeze_mutex</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">IS_ERR</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">))</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">goto</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> error_s</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">-></span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_root</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">{</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 被mount文件系统的根目录项已经存在 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">((</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">^</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">-></span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_flags</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_RDONLY</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">{</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> deactivate_locked_super</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> error </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">-</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">EBUSY</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">goto</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> error_bdev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">}</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* * s_umount nests inside bd_mutex during * __invalidate_device(). blkdev_put() acquires * bd_mutex and can't be called under s_umount. Drop * s_umount temporarily. This is safe as we're * holding an active reference. */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> up_write</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">-></span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_umount</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> blkdev_put</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">bdev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mode</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> down_write</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">-></span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_umount</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">}</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">else</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">{</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 文件系统根目录项不存在,通过filler_super函数读取磁盘上的superblock元数据信息,并且初始化superblock内存结构 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">char</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> b</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">[</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">BDEVNAME_SIZE</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">];</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">-></span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_NOSEC</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">-></span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_mode </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mode</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> strlcpy</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">-></span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_id</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> bdevname</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">bdev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> b</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">),</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">sizeof</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">-></span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_id</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">));</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> sb_set_blocksize</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> block_size</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">bdev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">));</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 对于ext3文件系统,调用ext3_fill_super函数 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> error </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> fill_super</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> data</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">&</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_SILENT </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">?</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="lit" style="padding: 0px; margin: 0px; color: rgb(0, 102, 102);">1</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">:</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="lit" style="padding: 0px; margin: 0px; color: rgb(0, 102, 102);">0</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">error</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">{</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> deactivate_locked_super</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">goto</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> error</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">}</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">-></span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_flags </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">|=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> MS_ACTIVE</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> bdev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">-></span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">bd_super </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> s</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">}</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">/* 正常返回被mount文件系统根目录项 */</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">return</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> dget</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">-></span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s_root</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> error_s</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">:</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> error </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> PTR_ERR</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">s</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> error_bdev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">:</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> blkdev_put</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">bdev</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> mode</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> error</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">:</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">return</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> ERR_PTR</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">error</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">}</span>
attach_recursive_mnt()函数完成第二步过程的主要操作。至此,文件系统的mount操作已经完成。Mount完成之后,如果用户想要访问新mount文件系统中的文件,那么需要在path解析过程中重定位dentry,该过程主要在follow_managed()函数中完成。在该函数中会判断一个dentry是否已经被标识成DCACHE_MOUNTED,如果该标志位已经被设置,那么通过VFSMOUNT Hash Table可以重定位dentry。
转载自http://www.linuxeye.com/linuxrumen/1121.html