1,mount example
2,mount_hashtable表,
主要是根据mountpoint的dentry和mountpoint所属vfsmount结构体共同计算hash值确定该mountpoint目录下挂载的文件系统的vfsmount结构
3,linux mount命令
mount命令详细解释
命令格式:
mount [-t vfstype] [-o options] device dir
1.-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有:
光盘或光盘镜像:iso9660
Mount Windows文件网络共享:smbfs
UNIX(LINUX) 文件网络共享:nfs
2.-o options 主要用来描述设备或档案的挂接方式。常用的参数有:
loop:用来把一个文件当成硬盘分区挂接上系统
ro:采用只读方式挂接设备
rw:采用读写方式挂接设备
3.device 要挂接(mount)的设备。
4.dir设备在系统上的挂接点(mount point)。
补充:
mount -a [-t type] [-O optlist] 将会挂载 /etc/fstab 中所有列出的所有设备(明确标记为"noauto"的除外),如果同时给出了 device(或 LABEL, UUID, PARTUUID, PARTLABEL) 和 dir,那么 mount 将不会读取 /etc/fstab 中的设置
通常只有root用户才可以挂载文件系统,但是如果在 fstab 中包含"user"选项,那么所有用户都可以挂载此文件系统。例如,如果在 fstab 中包含如下的行:
/dev/cdrom /cd iso9660 ro,user,noauto,unhide
使用了"user"选项的文件系统,只有挂载该文件系统的用户才可以卸载它,若想允许任何其他用户卸载,那么可以使用"users"代替"user"来实现。
init.rc里的mount命令会在alps/system/core/init/Builtins.c文件里的do_mount()函数里解析,以下截图中mode的含义是/mnt/obb/目录下的所有文件的初始权限是0755,0755是以八进制表示的,gid是设置左右文件所属的组。
4,unmount系统调用:
int umount(const char *target);
int umount2(const char *target, int flags);
flags主要有以下:
MNT_FORCE:即使挂载的文件系统处于busy状态,还是强制卸载,这样可能会引起数据丢失
MNT_DETACH:如果函数执行带有此参数,不会立即执行umount操作,而会等挂载点退出忙碌状态时才会去卸载它。不过此函数执行会阻止对该挂载点执行新的访问。之前就在访问此挂载点操作也不会强制其退出,而是会等待其自然退出。
MNT_EXPIRE:将挂载点设置为过时的,若要卸载的文件系统是根文件系统或者同时设置了MNT_FORCE或MNT_DETACH,则返回-EINVAL;
UMOUNT_NOFOLLOW:它指示如果目标是一个符号链接,则不解引用