On Wednesday, March 12, 2025 4:29:26 PM CET Greg Kurz wrote:
> QEMU 9.2 already fixed the long standing limitation of failing fstat() on
> unlinked files. This series does something similar for ftruncate().
>
> The following program can be straced inside the guest with a shared fs in
> passthrough mode over 9p2000.L.
>
> int main(void)
> {
> struct stat st;
> int fd = creat("./foo", 0000);
>
> ftruncate(fd, 100);
> unlink("./foo");
> ftruncate(fd, 1000);
> }
>
> Before :
>
> creat("./foo", 000) = 3
> ftruncate(3, 100) = -1 EACCES (Permission denied)
> unlink("./foo") = 0
> ftruncate(3, 1000) = -1 ENOENT (No such file or directory)
>
> After :
>
> creat("./foo", 000) = 3
> ftruncate(3, 100) = 0
> unlink("./foo") = 0
> ftruncate(3, 1000) = 0
>
> Cheers,
>
> --
> Greg
>
> Christian Schoenebeck (1):
> tests/9p: add 'Tsetattr' request to test client
>
> Greg Kurz (5):
> 9pfs: local : Introduce local_fid_fd() helper
> 9pfs: Don't use file descriptors in core code
> 9pfs: Introduce ftruncate file op
> 9pfs: Introduce futimens file op
> tests/9p: Test `Tsetattr` can truncate unlinked file
>
> fsdev/file-op-9p.h | 5 +++
> hw/9pfs/9p-local.c | 49 ++++++++++++++++++++-------
> hw/9pfs/9p-synth.c | 22 ++++++++++++
> hw/9pfs/9p-util.h | 1 +
> hw/9pfs/9p.c | 21 +++++++++---
> hw/9pfs/cofs.c | 37 ++++++++++++++++++++
> hw/9pfs/coth.h | 4 +++
> tests/qtest/libqos/virtio-9p-client.c | 49 +++++++++++++++++++++++++++
> tests/qtest/libqos/virtio-9p-client.h | 34 +++++++++++++++++++
> tests/qtest/virtio-9p-test.c | 15 ++++++++
> 10 files changed, 219 insertions(+), 18 deletions(-)
>
>
Queued on 9p.next:
https://github.com/cschoenebeck/qemu/commits/9p.next
Thanks!
/Christian