Re: [PATCH 0/2] block/export/fuse: fix regression with O_TRUNC when export is not growable

Kevin Wolf <[email protected]>
Newsgroups gmane.comp.emulators.qemu.stable,gmane.comp.emulators.qemu,gmane.comp.emulators.qemu.block
Message-ID <[email protected]>
Am 02.07.2026 um 15:22 hat Fiona Ebner geschrieben:
> Before commit a94a1d7699 ("fuse: Manually process requests (without
> libfuse)"), the O_TRUNC flag when open()-ing an export would be
> ignored. This is because libfuse sets FUSE_CAP_ATOMIC_O_TRUNC, so the
> kernel lets user space handle the O_TRUNC flag, which is ignored by
> the fuse code for export. After the commit, FUSE_CAP_ATOMIC_O_TRUNC is
> not set anymore, so the O_TRUNC flag is handled by the kernel, which
> executes a truncate.
> 
> For blockdev-based exports, this causes a regression, because opening
> with O_TRUNC would previously work, but results in an ENOTSUP after
> commit a94a1d7699. For file-based exports, the fact that truncate is
> executed can be considered an improvement in general. However, in
> combination with growable=off, this still results in a practical
> regression in combination with virt-fw-vars, which opens its output
> file with O_TRUNC and previously worked with a file-based export with
> growable=off. After commit a94a1d7699, the file is truncated upon open
> and then cannot grow, meaning virt-fw-vars won't be able to write the
> output.
> 
> To fix these regressions, while keeping the improved behavior for
> file-based exports with growable=on, set the FUSE_CAP_ATOMIC_O_TRUNC
> flag again if growable=off.

Thanks, applied to the block branch.

Kevin
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.