DIO、CIO、常规打开操作以及 NFS 映射文件之间的交互
可能以 DIO 和 CIO 方式发生的不同访问方式之间存在以下行为。
当在进行现有 DIO 打开操作时:
- 常规打开操作会导致 DIO 被关闭,直到不再有常规打开操作。 当关闭使得常规打开数减少到 0 时,如果仍然有 DIO 打开操作未完成,那么将重新启用 DIO。
- 使用 shmat () 或 mmap () 映射文件将取消激活文件上的 DIO ,直到映射数下降到 0 为止。 然后,如果仍有 DIO 打开,那么将重新启用 DIO。
- 尝试为 CIO 打开文件将失败,发生 EINVAL 错误。
当进行常规打开(没有 CIO 或 DIO)时:
- DIO 打开操作的尝试成功,但是直到常规打开的计数降为 0 时才激活 DIO。
- 针对 CIO 的打开将失败,发生 EINVAL 错误。
当进行 CIO 打开操作时:
- 常规, DIO 和映射文件的尝试都将失败,并返回 EINVAL 错误。
CIO|CIOR 打开操作生效:
- 常规, DIO 和映射文件的尝试将全部失败, EINVAL 错误 (只读和 CIO | CIOR 打开除外)。
注: 当过渡到 DIO 或 CIO 时,客户机高速缓存的修改将首先写回 NFS 服务器,然后再删除所有高速缓存的信息。