From: Bernd Schubert <bernd@bsbernd.com>
To: "Thomas Weißschuh" <thomas.weissschuh@linutronix.de>
Cc: Miklos Szeredi <miklos@szeredi.hu>,
linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
Arnd Bergmann <arnd@arndb.de>
Subject: Re: [PATCH v2] fuse: uapi: use UAPI types
Date: Mon, 5 Jan 2026 09:50:30 +0100 [thread overview]
Message-ID: <51731990-37fe-4821-9feb-7ee75829d3a0@bsbernd.com> (raw)
In-Reply-To: <20260105092847-f05669a4-f8a1-498d-a8b4-dc1c5a0ac1f8@linutronix.de>
On 1/5/26 09:40, Thomas Weißschuh wrote:
> On Sat, Jan 03, 2026 at 01:44:49PM +0100, Bernd Schubert wrote:
>>
>>
>> On 1/2/26 23:27, Bernd Schubert wrote:
>>>
>>>
>>> On 12/30/25 13:10, Thomas Weißschuh wrote:
>>>> Using libc types and headers from the UAPI headers is problematic as it
>>>> introduces a dependency on a full C toolchain.
>>>>
>>>> Use the fixed-width integer types provided by the UAPI headers instead.
>>>> To keep compatibility with non-Linux platforms, add a stdint.h fallback.
>>>>
>>>> Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
>>>> ---
>>>> Changes in v2:
>>>> - Fix structure member alignments
>>>> - Keep compatibility with non-Linux platforms
>>>> - Link to v1: https://lore.kernel.org/r/20251222-uapi-fuse-v1-1-85a61b87baa0@linutronix.de
>>>> ---
>>>> include/uapi/linux/fuse.h | 626 +++++++++++++++++++++++-----------------------
>>>> 1 file changed, 319 insertions(+), 307 deletions(-)
>>>
>>> I tested this and it breaks libfuse compilation
>>>
>>> https://github.com/libfuse/libfuse/pull/1410
>>>
>>> Any chance you could test libfuse compilation for v3? Easiest way is to
>>> copy it to <libfuse>/include/fuse_kernel.h and then create PR. That
>>> includes a BSD test.
>
> Ack.
>
>>> libfuse3.so.3.19.0.p/fuse_uring.c.o -c
>>> ../../../home/runner/work/libfuse/libfuse/lib/fuse_uring.c
>>> ../../../home/runner/work/libfuse/libfuse/lib/fuse_uring.c:197:5: error:
>>> format specifies type 'unsigned long' but the argument has type '__u64'
>>> (aka 'unsigned long long') [-Werror,-Wformat]
>>> 196 | fuse_log(FUSE_LOG_DEBUG, " unique: %" PRIu64
>>> ", result=%d\n",
>>> | ~~~~~~~~~
>>> 197 | out->unique, ent_in_out->payload_sz);
>>> | ^~~~~~~~~~~
>>> 1 error generated.
>>>
>>>
>>> I can certainly work it around in libfuse by adding a cast, IMHO,
>>> PRIu64 is the right format.
>
> PRIu64 is indeed the right format for uint64_t. Unfortunately not necessarily
> for __u64. As the vast majority of the UAPI headers to use the UAPI types,
> adding a cast in this case is already necessary for most UAPI users.
>
>> I think what would work is the attached version. Short interesting part
>>
>> #if defined(__KERNEL__)
>> #include <linux/types.h>
>> typedef __u8 fuse_u8;
>> typedef __u16 fuse_u16;
>> typedef __u32 fuse_u32;
>> typedef __u64 fuse_u64;
>> typedef __s8 fuse_s8;
>> typedef __s16 fuse_s16;
>> typedef __s32 fuse_s32;
>> typedef __s64 fuse_s64;
>> #else
>> #include <stdint.h>
>> typedef uint8_t fuse_u8;
>> typedef uint16_t fuse_u16;
>> typedef uint32_t fuse_u32;
>> typedef uint64_t fuse_u64;
>> typedef int8_t fuse_s8;
>> typedef int16_t fuse_s16;
>> typedef int32_t fuse_s32;
>> typedef int64_t fuse_s64;
>> #endif
>
> Unfortunately this is equivalent to the status quo.
> It contains a dependency on the libc header stdint.h when used from userspace.
>
> IMO the best way forward is to use the v2 patch and add a cast in fuse_uring.c.
libfuse is easy, but libfuse is just one library that might use/copy the
header. If libfuse breaks the others might as well.
Maybe you could explain your issue more detailed? I.e. how are you using
this include exactly?
Thanks,
Bernd
next prev parent reply other threads:[~2026-01-05 8:50 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-30 12:10 [PATCH v2] fuse: uapi: use UAPI types Thomas Weißschuh
2025-12-30 21:09 ` Arnd Bergmann
2026-01-02 22:27 ` Bernd Schubert
2026-01-03 12:44 ` Bernd Schubert
2026-01-05 8:40 ` Thomas Weißschuh
2026-01-05 8:50 ` Bernd Schubert [this message]
2026-01-05 9:57 ` Thomas Weißschuh
2026-01-05 12:09 ` Arnd Bergmann
2026-01-08 22:12 ` Bernd Schubert
2026-01-09 8:11 ` Thomas Weißschuh
2026-01-09 10:38 ` David Laight
2026-01-09 10:45 ` Bernd Schubert
2026-01-09 10:55 ` Thomas Weißschuh
2026-01-09 11:36 ` Bernd Schubert
2026-01-09 13:11 ` David Laight
2026-01-09 13:46 ` Bernd Schubert
2026-01-09 19:13 ` David Laight
2026-01-08 22:14 ` Bernd Schubert
2026-01-03 14:10 ` David Laight
2026-01-03 16:47 ` Bernd Schubert
2026-01-05 12:45 ` Miklos Szeredi
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=51731990-37fe-4821-9feb-7ee75829d3a0@bsbernd.com \
--to=bernd@bsbernd.com \
--cc=arnd@arndb.de \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=thomas.weissschuh@linutronix.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox