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