14
4

1 回答 1

4

这些设备允许实现者避免为功能定义新的syscallioctl功能,也许它是这样实现的,因为它更简单,需要更新更少的代码,并且不会更改 VFS API,这可能是问题所在当时。

当您打开/dev/autofs_nowait并遍历路径时,您会触发自动挂载,但不要等待它们完成(否则您的进程会阻塞,直到文件系统被挂载或操作超时后),因此您可能会ENOENT在打开文件时收到即使一切顺利。

OTOH,/dev/autofs_notrigger使该过程甚至不会触发自动安装。

这就是所有这些设备所做的。问题是,在达尔文的实现中,open即使使用O_NONBLOCKor遍历文件系统也可能会阻塞O_NDELAY

您可以按照 vfs 的流程,从opena 的操作开始vnode

在这条路上,没有处理(非)阻塞行为。

于 2016-09-21T16:22:47.317 回答