我正在阅读Maurice J Bach 的The Design of the Unix Operating System,并且有两个关于文件系统挂载的问题:
为什么文件表中挂载点inode的引用计数大于1时文件系统挂载失败?
为什么 Unix 不允许在多个点挂载文件系统?(如果允许,会发生什么坏事?)
HP (HP-UX) 手册页mount(2)说:
如果 mount() 失败,则将 errno 设置为以下值之一。
[EACCES] 路径前缀的一个组件拒绝搜索权限。[EBUSY] 路径当前已安装,是某人的当前工作目录,或者正忙。[EBUSY] 与 fs 关联的文件系统当前已挂载。当您的问题 (1) 适用时,您会得到第一个 EBUSY,因为:
/some/where)是某个进程的当前目录,则您的进程对 的内容有不同的看法/some/where;新人看到的是挂载的文件系统上的内容,而旧的进程看到的是挂载目录中的内容。当文件系统已经安装时,您将获得第二个 EBUSY 来回答您的问题 (2) - 换句话说,您不能安装它两次。这是一件好事 - 如果两个独立的挂载点都在假设它们对超级块等实际上是共享的具有独占访问权,那么就会有一个可怕的混淆危险。如果/some/where/newfile同时创建一个文件也会造成混淆,/opt/other/newfile因为相同的设备安装在/some/where和/opt/other.
我还没有检查 AIX、Solaris、Linux、MacOS X、BSD 手册页的mount(2),但我希望行为是相同的。
| 归档时间: |
|
| 查看次数: |
15465 次 |
| 最近记录: |