标签:ext2 文件系统
Ext2 索引节点的操作
一些VFS索引节点的操作在Ext2中都有具体的体现,这取决于索引节点所指的文件类型。
Ext2的普通文件和目录文件的索引节点操作的方法地址分别存放在:ext2_file_inode_operations 和 ext2_dir_inode_operations
struct inode_operations ext2_file_inode_operations = {
.truncate= ext2_truncate,
#ifdef CONFIG_EXT2_FS_XATTR
.setxattr= generic_setxattr,
.getxattr= generic_getxattr,
.listxattr= ext2_listxattr,
.removexattr= generic_removexattr,
#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()函数实现的。这两个函数在第十五章的“从文件中读取数据”和“写入文件”两节进行了描述。
本文出自 “7713176” 博客,请务必保留此出处http://7723176.blog.51cto.com/7713176/1596146
标签:ext2 文件系统
原文地址:http://7723176.blog.51cto.com/7713176/1596146