[文件系统]文件系统学习笔记(十一)——mount系统调用(其它)

1,mount example

Mount (/dev/hdb1 to /home/ xpl )
a. mount 新的 设备必须 创造 superblock 。利用要 mount 文件 系统 file_system_type 调用 get_sb () 创造 新的 super block
b. 创建 vfsmount for /dev/hdb1 and add to current system
c. 新的 vfsmount :
mountpoint xpl dentry
mnt_root hdb1 device root dentry
mnt_parent 指向 /home/ xpl 所在的 vfsmount

 

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:它指示如果目标是一个符号链接,则不解引用


5,linux中move  mountpoint的作用

有些process 是有类似 "service" 的概念, 当它去咬住/storage/sdcard时, vold会去kill 该service, 但. 该service 有会被启动, 所以又会去咬住/storage/sdcard. 也因此, vold在umount sd时, 会先把mountpoint 移到staging. .这样, 即使该service又去咬/storage/sdcard, 也不会害sd umount fail

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值