[Virtio-fs] [virtiofsd] MR opened: passthrough: Set `RWF_APPEND` on non-cached writes on append only files
virtiofs-bot at sinrega.org
virtiofs-bot at sinrega.org
Fri Nov 18 17:50:45 UTC 2022
Writing to a mem mapped area of a file that was open with `O_APPEND`,
will always write at the end of the file. We can test this with running
virtiofsd with --cache=auto|always:
```python
import mmap
import struct
l = 1024
f = open("./test.db", "a+b")
f.truncate(l)
m = mmap.mmap(f.fileno(), 1024, access=mmap.ACCESS_WRITE)
m[0:4] = b"0000"
m.flush()
print(m.size())
m[0:4] = b"0000"
m.flush()
print(m.size())
```
After each write the size of the file is increased.
This is because, even though the guest kernel sends the correct
offsets, the mem mapped writes in the guest translate into `write()`
operations in the host so that if the file was opened/created with
`O_APPEND` the offset is ignored.
For more details see:
https://gitlab.com/virtio-fs/virtiofsd/-/issues/67
https://github.com/kata-containers/kata-containers/issues/5634
closes #67
---
https://gitlab.com/virtio-fs/virtiofsd/-/merge_requests/143
More information about the Virtio-fs
mailing list