使用 io_uring 是否可以进行原子写入和告知?

使用 io_uring 是否可以进行原子写入和告知?

我想附加到在 O_APPEND 中打开的文件并知道数据写入的位置。写入然后进行告诉调用没有用,因为在系统调用之间可能存在上下文切换,并且其他内容会写入文件末尾。所以我想要一个可以通过一次调用来完成此操作的东西。

我想要这个是因为我一直在尝试开发一个仅附加数据库,该数据库利用 O_APPEND 中打开的文件可以自动附加到 [1] 的属性来解决同步问题。

我一直在浏览 io_uring 的文档,我不确定,但看起来它可能允许这种情况发生。我是否正确?如果是,该怎么做。

[1] 阅读 POSIX 标准、手册页和 Linus 的电子邮件都表明,将小于 4KiB 的数据附加到以 O_APPEND 模式打开的文件末尾将是原子的。 NFS 打破了这一要求,但不能在 NFS 上工作是可接受的限制。

相关内容