The Hurd gained[0] support for moving the translator and author fields out of the inode and into the "gnu.*" xattr namespace. In anticipation of that, an xattr INDEX was reserved[1]. In 2020, the Hurd has been brought into compliance[2] with that, and so has ext4[3]. This patch adds support for reading and writing such attributes from a Linux tmpfs; you can now do something like mkdir -p hurd-root mount -t tmpfs -o size=2M tmpfs hurd-root mkdir -p hurd-root/servers/socket touch hurd-root/servers/socket/1 setfattr --name=gnu.translator --value='"/hurd/pflocal\0"' \ hurd-root/servers/socket/1 getfattr --name=gnu.translator hurd-root/servers/socket/1 # file: 1 gnu.translator="/hurd/pflocal" to setup a pipe translator, which is being used to create an initial file-system image for the Hurd from GNU Guix[4]. [0] https://summerofcode.withgoogle.com/projects/#5869799859027968 [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3980bd3b406addb327d858aebd19e229ea340b9a [2] https://git.savannah.gnu.org/cgit/hurd/hurd.git/commit/?id=a04c7bf83172faa7cb080fbe3b6c04a8415ca645 [3] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=88ee9d571b6d8ed345f877e05f685814412e359b [4] https://codeberg.org/guix/guix/pulls/8632 --- mm/shmem.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mm/shmem.c b/mm/shmem.c index 3b5dc21b323c..5d60aa4dba92 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -15,6 +15,7 @@ * Extended attribute support for tmpfs: * Copyright (c) 2004, Luke Kenneth Casson Leighton * Copyright (c) 2004 Red Hat, Inc., James Morris + * Copyright (C) 2026 Janneke Nieuwenhuizen * * tiny-shmem: * Copyright (c) 2004, 2008 Matt Mackall @@ -4371,10 +4372,17 @@ static const struct xattr_handler shmem_user_xattr_handler = { .set = shmem_xattr_handler_set, }; +static const struct xattr_handler shmem_hurd_xattr_handler = { + .prefix = XATTR_HURD_PREFIX, + .get = shmem_xattr_handler_get, + .set = shmem_xattr_handler_set, +}; + static const struct xattr_handler * const shmem_xattr_handlers[] = { &shmem_security_xattr_handler, &shmem_trusted_xattr_handler, &shmem_user_xattr_handler, + &shmem_hurd_xattr_handler, NULL }; -- 2.54.0 -- Reasonable | Free Software for Correctness | GNU Dezyne -- https://dezyne.org +Sourcery+ | Correctness for Free Software | https://reasonable-sourcery.coop