From: "Lukas Sichert" <l.sichert@proxmox.com>
To: "Fiona Ebner" <f.ebner@proxmox.com>, <pve-devel@lists.proxmox.com>
Subject: Re: [PATCH qemu] add fix for regression when using fuse export for EFI enroll
Date: Wed, 13 May 2026 14:36:52 +0200 [thread overview]
Message-ID: <DIHJYC1ETNLR.1DGWVCPX78K74@proxmox.com> (raw)
In-Reply-To: <20260512153756.311383-1-f.ebner@proxmox.com>
Thanks for fixing this. On my machine I hit 'apt update && apt
dist-upgrade' while the Vm, where the error appeard, was running. Then
in the stop task description I could see, that the pending changes were
applied correctly. After that no warning appeared anymore.
On 2026-05-12 17:37, Fiona Ebner <f.ebner@proxmox.com> wrote:
> The virt-fw-vars binary for EFI enrollment opens the target file with
> O_TRUNC when writing the result and this caused issues since QEMU
> commit a94a1d7699 ("fuse: Manually process requests (without
> libfuse)"), because the FUSE_ATOMIC_O_TRUNC FUSE flag was implicitly
> dropped. Restore the flag to avoid the regression.
>
> Upstream discussion:
> https://lore.kernel.org/qemu-devel/9be52b33-9a28-41ca-896c-a41b5558864c@proxmox.com/
>
> Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
> ---
> ...e-fix-regression-with-block-device-e.patch | 36 +++++++++++++++++++
> debian/patches/series | 1 +
> 2 files changed, 37 insertions(+)
> create mode 100644 debian/patches/extra/0013-block-export-fuse-fix-regression-with-block-device-e.patch
>
> diff --git a/debian/patches/extra/0013-block-export-fuse-fix-regression-with-block-device-e.patch b/debian/patches/extra/0013-block-export-fuse-fix-regression-with-block-device-e.patch
> new file mode 100644
> index 0000000000..121e5712cd
> --- /dev/null
> +++ b/debian/patches/extra/0013-block-export-fuse-fix-regression-with-block-device-e.patch
> @@ -0,0 +1,36 @@
> +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
> +From: Fiona Ebner <f.ebner@proxmox.com>
> +Date: Tue, 12 May 2026 17:16:23 +0200
> +Subject: [PATCH] block/export/fuse: fix regression with block device export or
> + growable=off and O_TRUNC
> +
> +Before commit a94a1d7699 ("fuse: Manually process requests (without
> +libfuse)"), libfuse was used which set the FUSE_ATOMIC_O_TRUNC flag.
> +After the commit, the flag is not set anymore cause a regression where
> +opening a block-based export with O_TRUNC fails with EOPNOTSUPP. And
> +it also causes a regression with file-based exports, since they would
> +be truncated upon opening with O_TRUNC, but then subsequent writes to
> +the file would not be possible, since it's not growable.
> +
> +A proper upstream submission might want to conditionalize on having
> +growable=off and/or a block device based export for setting the flag.
> +
> +Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
> +---
> + block/export/fuse.c | 3 ++-
> + 1 file changed, 2 insertions(+), 1 deletion(-)
> +
> +diff --git a/block/export/fuse.c b/block/export/fuse.c
> +index ef381fd844..7a7386c904 100644
> +--- a/block/export/fuse.c
> ++++ b/block/export/fuse.c
> +@@ -816,7 +816,8 @@ static ssize_t coroutine_fn GRAPH_RDLOCK
> + fuse_co_init(FuseExport *exp, struct fuse_init_out *out,
> + const struct fuse_init_in *in)
> + {
> +- const uint32_t supported_flags = FUSE_ASYNC_READ | FUSE_ASYNC_DIO | FUSE_INIT_EXT;
> ++ const uint32_t supported_flags = FUSE_ASYNC_READ | FUSE_ASYNC_DIO
> ++ | FUSE_INIT_EXT | FUSE_ATOMIC_O_TRUNC;
> + const uint32_t supported_flags2 = (FUSE_DIRECT_IO_ALLOW_MMAP >> 32);
> +
> + if (in->major != 7) {
> diff --git a/debian/patches/series b/debian/patches/series
> index 39da6dff13..602d1a8eee 100644
> --- a/debian/patches/series
> +++ b/debian/patches/series
> @@ -10,6 +10,7 @@ extra/0009-target-i386-fix-strList-leak-in-x86_cpu_get_unavaila.patch
> extra/0010-target-i386-fix-missing-PF_INSTR-in-SIGSEGV-context.patch
> extra/0011-migration-vmstate_save_state_v-fix-double-error_setg.patch
> extra/0012-block-export-fuse-fix-regression-when-mmap-ing-expor.patch
> +extra/0013-block-export-fuse-fix-regression-with-block-device-e.patch
> bitmap-mirror/0001-drive-mirror-add-support-for-sync-bitmap-mode-never.patch
> bitmap-mirror/0002-drive-mirror-add-support-for-conditional-and-always-.patch
> bitmap-mirror/0003-mirror-add-check-for-bitmap-mode-without-bitmap.patch
> --
> 2.47.3
prev parent reply other threads:[~2026-05-13 12:36 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-12 15:37 [PATCH qemu] add fix for regression when using fuse export for EFI enroll Fiona Ebner
2026-05-12 21:51 ` applied: " Thomas Lamprecht
2026-05-13 12:36 ` Lukas Sichert [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DIHJYC1ETNLR.1DGWVCPX78K74@proxmox.com \
--to=l.sichert@proxmox.com \
--cc=f.ebner@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.