Ext2 的方法

Ext2 索引節點的操做node

一些VFS索引節點的操做在Ext2中都有具體的體現,這取決於索引節點所指的文件類型。ide

Ext2的普通文件和目錄文件的索引節點操做的方法地址分別存放在:ext2_file_inode_operations 和 ext2_dir_inode_operations函數

struct inode_operations ext2_file_inode_operations = {spa

.truncate= ext2_truncate,索引

#ifdef CONFIG_EXT2_FS_XATTRrem

.setxattr= generic_setxattr,get

.getxattr= generic_getxattr,it

.listxattr= ext2_listxattr,io

.removexattr= generic_removexattr,ast

#endif

.setattr= ext2_setattr,

.permission= ext2_permission,

};


struct inode_operations ext2_dir_inode_operations = {

.create= ext2_create,

.lookup= ext2_lookup,

.link= ext2_link,

.unlink= ext2_unlink,

.symlink= ext2_symlink,

.mkdir= ext2_mkdir,

.rmdir= ext2_rmdir,

.mknod= ext2_mknod,

.rename= ext2_rename,

#ifdef CONFIG_EXT2_FS_XATTR

.setxattr= generic_setxattr,

.getxattr= generic_getxattr,

.listxattr= ext2_listxattr,

.removexattr= generic_removexattr,

#endif

.setattr= ext2_setattr,

.permission= ext2_permission,

};

Ext2的符號連接的索引節點操做的方法,分爲兩類:快速符號連接(路徑名所有存放於索引節點內)、普通符號連接(路徑名較長,有數據塊)。對應操做表:ext2_fast_symlink_inode_operations/ext2_symlink_inode_operations

注:若是索引節點指的是一個字符設備文件、塊設備文件或命名管道(十九章「FIFO」一節),這種索引節點的操做不依賴於文件系統,其操做分別位於chrdev_inode_operations/blkdev_inode_operations/fifo_inode_operations

Ext2 的文件操做

一些VFS方法是由不少文件系統共用的通用函數實現的。這些方法的地址存放在ext2_file_operations表中。

/*

 * We have mostly NULL's here: the current defaults are ok for

 * the ext2 filesystem.

 */

struct file_operations ext2_file_operations = {

 .llseek = generic_file_llseek,

 .read = generic_file_read,

 .write = generic_file_write,

 .aio_read = generic_file_aio_read,

 .aio_write = generic_file_aio_write,

 .ioctl = ext2_ioctl,

 .mmap = generic_file_mmap,

 .open = generic_file_open,

 .release = ext2_release_file,

 .fsync = ext2_sync_file,

 .readv = generic_file_readv,

 .writev = generic_file_writev,

 .sendfile = generic_file_sendfile,

}; 

注意:Ext2 的read和write方法是分別經過generic_file_read()和generic_file_write()函數實現的。這兩個函數在第十五章的「從文件中讀取數據」和「寫入文件」兩節進行了描述。

相關文章
相關標籤/搜索