원자 쓰기를 수행하고 io_uring을 사용하여 알릴 수 있습니까?

원자 쓰기를 수행하고 io_uring을 사용하여 알릴 수 있습니까?

O_APPEND에서 열린 파일에 추가하고 데이터가 기록되는 위치를 알고 싶습니다. 시스템 호출 사이에 컨텍스트 전환이 있을 수 있고 다른 내용이 파일 끝에 기록되기 때문에 작성한 다음 Tell 호출을 하는 것은 쓸모가 없습니다. 그래서 저는 한 번의 호출로 이 작업을 수행할 수 있는 것을 원합니다.

나는 동기화 문제를 해결하기 위해 O_APPEND에서 열린 파일이 자동으로 [1]에 추가될 수 있는 속성을 활용하는 추가 전용 데이터베이스를 개발하려고 했기 때문에 이것을 원했습니다.

io_uring에 대한 문서를 살펴봤는데 확실하지 않지만 이것이 가능하게 될 것 같습니다. 나 맞아? 그렇다면 무엇을 해야 할까요?

[1] POSIX 표준, 매뉴얼 페이지 및 Linus의 이메일을 읽으면 모두 O_APPEND 모드에서 열린 파일 끝에 4KiB보다 작은 데이터를 추가하는 것이 원자적이라는 것을 나타냅니다. NFS는 이 요구 사항을 위반하지만 NFS에서 작동하지 않는 것은 허용되는 제한 사항입니다.

관련 정보