FAT文件系统的挂载过程
来源:互联网 发布:nginx 静态服务器缓存 编辑:程序博客网 时间:2024/05/16 18:52
有了上一篇vfs的笔记为基础,接着实际分析一个真实的文件系统挂载过程,所以选择了一个简单的fat文件系统。
fs/namespace.c中mount的系统调用为:
SYSCALL_DEFINE5(mount, char __user *, dev_name, char __user *, dir_name, char __user *, type, unsigned long, flags, void __user *, data){ int ret; char *kernel_type; char *kernel_dir; char *kernel_dev; unsigned long data_page; ret = copy_mount_string(type, &kernel_type);//挂载类型,这里为vfat if (ret < 0) goto out_type; kernel_dir = getname(dir_name);//从userspace拷贝挂载目录,比如挂载到/mnt/sdcard if (IS_ERR(kernel_dir)) { ret = PTR_ERR(kernel_dir); goto out_dir; } ret = copy_mount_string(dev_name, &kernel_dev);//挂载的设备节点,如/dev/sdb if (ret < 0) goto out_dev; ret = copy_mount_options(data, &data_page);//挂载选项,如wait noatime nodiratime nosuid nodev uid=1000等 if (ret < 0) goto out_data; ret = do_mount(kernel_dev, kernel_dir, kernel_type, flags, (void *) data_page); ........................}经过层层调用,最终是调用文件系统自己的mount方法,type->mount(type, flags, name, data),进入到fat的file_system_type,这是在内核启动时候就注册了的,不过要注意的是所谓注册文件系统,只不过是简单的把它添加到内核的文件系统链表而已,要文件系统真正生效能使用,必须挂载才行:
static struct file_system_type vfat_fs_type = { .owner = THIS_MODULE, .name = "vfat", .mount = vfat_mount, .kill_sb = kill_block_super, .fs_flags = FS_REQUIRES_DEV,};调用的是vfat_mount函数:
未完...................最近没空.....................后续补上.
- FAT文件系统的挂载过程
- Fedora 5.0 有关NTFS及FAT文件系统的挂载
- FAT文件系统的组织结构
- SD卡的FAT文件系统
- android usb挂载分析---FAT文件系统原理详细介绍
- FAT文件系统
- FAT文件系统
- FAT文件系统
- FAT文件系统
- fat文件系统
- 文件系统的挂载过程
- FAT文件系统对长文件名的支持
- 对于文件系统的研究(Fat、yaffs)
- 硬盘FAT文件系统原理的详细分析
- 硬盘FAT文件系统原理的详细分析
- 硬盘 FAT 文件系统原理的详细分析
- FAT文件系统原理的详细分析
- 硬盘FAT文件系统原理的详细分析
- 深入分析Sleep(0)与Sleep(1)的区别
- Oracle 12c 进程表
- Java设计模式研究之Flyweight模式
- POJ 1654
- DataView.RowFilter的使用(包括in,like等SQL中的操作符)
- FAT文件系统的挂载过程
- wordpress调用函数大全
- sql将列显示为行
- HDU 2600 War
- MSM8x25 LCD调试分析(二)
- STM32之DMA简介
- Android应用开发学习笔记之启动另外一个Activity
- 最长公共子序列(LCS问题)
- 生活的点滴