问问题
443 次
1 回答
4
这些设备允许实现者避免为功能定义新的syscall
或ioctl
功能,也许它是这样实现的,因为它更简单,需要更新更少的代码,并且不会更改 VFS API,这可能是问题所在当时。
当您打开/dev/autofs_nowait
并遍历路径时,您会触发自动挂载,但不要等待它们完成(否则您的进程会阻塞,直到文件系统被挂载或操作超时后),因此您可能会ENOENT
在打开文件时收到即使一切顺利。
OTOH,/dev/autofs_notrigger
使该过程甚至不会触发自动安装。
这就是所有这些设备所做的。问题是,在达尔文的实现中,open
即使使用O_NONBLOCK
or遍历文件系统也可能会阻塞O_NDELAY
。
您可以按照 vfs 的流程,从open
a 的操作开始vnode
:
vn_open
->vn_open_auth
->namei
->lookup
-> ...
在这条路上,没有处理(非)阻塞行为。
于 2016-09-21T16:22:47.317 回答