summaryrefslogtreecommitdiff
path: root/gnu/packages
diff options
context:
space:
mode:
authorJosselin Poiret <dev@jpoiret.xyz>2023-03-20 23:10:44 +0100
committerLudovic Courtès <ludo@gnu.org>2023-03-30 12:44:19 +0200
commit2447fe8814638662c4f3768c284cd280968d61b4 (patch)
treede49f436331decf827ab92703699d70ba3f2da9c /gnu/packages
parent6cd532c9f492e6960c4be908b66696e5d13ed741 (diff)
gnu: hurd: Update to 3ff7053.
* gnu/packages/hurd.scm (hurd-headers): Do it. Also backport some patches to make it build, and remove older patches. Also stop pretending we're on i586-pc-gnu. (hurd): Remove unneeded patches. * gnu/packages/patches/hurd-add-without-rump-configure-option.patch: * gnu/packages/patches/hurd-fix-types-of-read-write-and-readables-methods-2.patch: * gnu/packages/patches/hurd-fix-types-of-read-write-and-readables-methods.patch: New files. * gnu/packages/patches/hurd-cross.patch: * gnu/packages/patches/hurd-xattr.patch: Delete files. * gnu/local.mk (dist_patch_DATA): Register and unregister them. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/hurd.scm113
-rw-r--r--gnu/packages/patches/hurd-add-without-rump-configure-option.patch82
-rw-r--r--gnu/packages/patches/hurd-cross.patch33
-rw-r--r--gnu/packages/patches/hurd-fix-types-of-read-write-and-readables-methods-2.patch155
-rw-r--r--gnu/packages/patches/hurd-fix-types-of-read-write-and-readables-methods.patch891
-rw-r--r--gnu/packages/patches/hurd-xattr.patch53
6 files changed, 1183 insertions, 144 deletions
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 97c54d3ec7..38eec8cd10 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -164,65 +164,64 @@ communication.")
(properties `((hidden? . #t)))))
(define-public hurd-headers
- ;; Resort to a post-0.9 snapshot that provides the 'file_utimens' and
- ;; 'file_exec_paths' RPCs that glibc 2.28 expects.
- (let ((revision "1")
- (commit "91a51672ff4cfe1f1a0712b4c542ded3081c825b"))
- (package
- (name "hurd-headers")
- (version (git-version "0.9" revision commit))
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://git.savannah.gnu.org/git/hurd/hurd.git")
- (commit commit)))
- (sha256
- (base32
- "16k9wkahz9wasviijz53n6i13nmiwa9fs64ikf1jqh8rl60hw7cz"))
- (file-name (git-file-name name version))))
- (build-system gnu-build-system)
- (native-inputs
- (list mig autoconf automake))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'install
- (lambda _
- (invoke "make" "install-headers" "no_deps=t")))
- (delete 'build))
-
- #:configure-flags '( ;; Pretend we're on GNU/Hurd; 'configure' wants
- ;; that.
- ,@(if (%current-target-system)
- '()
- '("--host=i586-pc-gnu"))
+ ;; This commit is now slightly behind 0.9.git20220818 as this one needs a
+ ;; newer glibc
+ (let ((revision "2")
+ (commit "3ff70531ee672f431dbb0c11f286bfe85dce98fc"))
+ (package
+ (name "hurd-headers")
+ (version (git-version "0.9" revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.savannah.gnu.org/git/hurd/hurd.git")
+ (commit commit)))
+ (sha256
+ (base32
+ "1jb9f2h2v4lf6acsji1c12aqg3pixkvjdyb4q6axkd8jp22fdgc0"))
+ (file-name (git-file-name name version))
+ (patches (search-patches "hurd-add-without-rump-configure-option.patch"
+ "hurd-fix-types-of-read-write-and-readables-methods.patch"
+ "hurd-fix-types-of-read-write-and-readables-methods-2.patch"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ (list autoconf automake mig))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'install
+ (lambda _
+ (invoke "make" "install-headers" "no_deps=t")))
+ (delete 'build))
- ;; Reduce set of dependencies.
- "--without-parted"
- "--disable-ncursesw"
- "--disable-test"
- "--without-libbz2"
- "--without-libcrypt"
- "--without-libz"
- ;; Skip the clnt_create check because it expects
- ;; a working glibc causing a circular dependency.
- "ac_cv_search_clnt_create=no"
+ #:configure-flags '( ;; Reduce set of dependencies.
+ "--without-parted"
+ "--disable-ncursesw"
+ "--disable-test"
+ "--without-libbz2"
+ "--without-libcrypt"
+ "--without-libz"
+ "--without-rump"
+ ;; Skip the clnt_create check because it expects
+ ;; a working glibc causing a circular dependency.
+ "ac_cv_search_clnt_create=no"
- ;; Annihilate the checks for the 'file_exec_paths'
- ;; & co. libc functions to avoid "link tests are
- ;; not allowed after AC_NO_EXECUTABLES" error.
- "ac_cv_func_file_exec_paths=no"
- "ac_cv_func_exec_exec_paths=no"
- "ac_cv_func__hurd_exec_paths=no"
- "ac_cv_func_file_futimens=no")
+ ;; Annihilate the checks for the 'file_exec_paths'
+ ;; & co. libc functions to avoid "link tests are
+ ;; not allowed after AC_NO_EXECUTABLES" error.
+ "ac_cv_func_file_exec_paths=no"
+ "ac_cv_func_exec_exec_paths=no"
+ "ac_cv_func__hurd_exec_paths=no"
+ "ac_cv_func__hurd_libc_proc_init=no"
+ "ac_cv_func_file_futimens=no")
- #:tests? #f))
- (home-page "https://www.gnu.org/software/hurd/hurd.html")
- (synopsis "GNU Hurd headers")
- (description
- "This package provides C headers of the GNU Hurd, used to build the GNU C
+ #:tests? #f))
+ (home-page "https://www.gnu.org/software/hurd/hurd.html")
+ (synopsis "GNU Hurd headers")
+ (description
+ "This package provides C headers of the GNU Hurd, used to build the GNU C
Library and other user programs.")
- (license gpl2+))))
+ (license gpl2+))))
(define-public hurd-minimal
(package (inherit hurd-headers)
@@ -343,10 +342,8 @@ Hurd-minimal package which are needed for both glibc and GCC.")
(define-public hurd
(package
(name "hurd")
+ (source (package-source hurd-headers))
(version (package-version hurd-headers))
- (source (origin (inherit (package-source hurd-headers))
- (patches (search-patches "hurd-cross.patch"
- "hurd-xattr.patch"))))
(arguments
`(#:phases
(modify-phases %standard-phases
diff --git a/gnu/packages/patches/hurd-add-without-rump-configure-option.patch b/gnu/packages/patches/hurd-add-without-rump-configure-option.patch
new file mode 100644
index 0000000000..14cefdeac1
--- /dev/null
+++ b/gnu/packages/patches/hurd-add-without-rump-configure-option.patch
@@ -0,0 +1,82 @@
+From 80bc1678b7b859decae536e726a3e5870cbe84eb Mon Sep 17 00:00:00 2001
+Message-Id: <80bc1678b7b859decae536e726a3e5870cbe84eb.1678657122.git.dev@jpoiret.xyz>
+In-Reply-To: <c9b816085272dd07ed762c5ae775a994fa77df56.1678657122.git.dev@jpoiret.xyz>
+References: <c9b816085272dd07ed762c5ae775a994fa77df56.1678657122.git.dev@jpoiret.xyz>
+From: Josselin Poiret <dev@jpoiret.xyz>
+Date: Mon, 31 Oct 2022 13:39:28 +0100
+Subject: [PATCH 2/2] Add --without-rump configure option
+
+From: Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+To allow cross-builds which cannot use AC_LINK_IFELSE at all.
+---
+ configure.ac | 47 ++++++++++++++++++++++++++---------------------
+ 1 file changed, 26 insertions(+), 21 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 0c1bf9b2..849b5fad 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -234,33 +234,38 @@ AS_IF([test "x$with_libz" != xno], [
+ ])
+ AC_SUBST([HAVE_LIBZ])
+
+-# Save
+-oldLIBS="$LIBS"
++AC_ARG_WITH([rump],
++ [AS_HELP_STRING([--without-rump], [disable rump])], , [with_rump=yes])
+
+-LIBS="$oldLIBS -lrump"
+-AC_LINK_IFELSE(
+- [AC_LANG_PROGRAM(
+- [[#include <hurd.h>
++AS_IF([test "x$with_rump" != xno], [
++ # Save
++ oldLIBS="$LIBS"
++
++ LIBS="$oldLIBS -lrump"
++ AC_LINK_IFELSE(
++ [AC_LANG_PROGRAM(
++ [[#include <hurd.h>
+ #define _STANDALONE
+ #include <rump/rump.h>]],
+- [])],
+- [HAVE_LIBRUMP=yes],
+- [HAVE_LIBRUMP=no])
+-AC_SUBST([HAVE_LIBRUMP])
+-
+-LIBS="$oldLIBS -lrumpvfs_nofifofs_pic"
+-AC_LINK_IFELSE(
+- [AC_LANG_PROGRAM(
+- [[#include <hurd.h>
++ [])],
++ [HAVE_LIBRUMP=yes],
++ [HAVE_LIBRUMP=no])
++ AC_SUBST([HAVE_LIBRUMP])
++
++ LIBS="$oldLIBS -lrumpvfs_nofifofs_pic"
++ AC_LINK_IFELSE(
++ [AC_LANG_PROGRAM(
++ [[#include <hurd.h>
+ #define _STANDALONE
+ #include <rump/rump.h>]],
+- [])],
+- [HAVE_LIBRUMP_VFSNOFIFO=yes],
+- [HAVE_LIBRUMP_VFSNOFIFO=no])
+-AC_SUBST([HAVE_LIBRUMP_VFSNOFIFO])
++ [])],
++ [HAVE_LIBRUMP_VFSNOFIFO=yes],
++ [HAVE_LIBRUMP_VFSNOFIFO=no])
++ AC_SUBST([HAVE_LIBRUMP_VFSNOFIFO])
+
+-# Reset
+-LIBS="$oldLIBS"
++ # Reset
++ LIBS="$oldLIBS"
++])
+
+ AC_ARG_ENABLE(boot-store-types,
+ [ --enable-boot-store-types=TYPES...
+--
+2.39.1
+
diff --git a/gnu/packages/patches/hurd-cross.patch b/gnu/packages/patches/hurd-cross.patch
deleted file mode 100644
index cc95dddccc..0000000000
--- a/gnu/packages/patches/hurd-cross.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-This fixes linking libfstest/test-fcntl (and others).
-
-As discussed with upstream: https://lists.gnu.org/archive/html/bug-hurd/2020-03/msg00018.html
-
-From 96a9f67a8685e713f25259c18306797d54cc27a5 Mon Sep 17 00:00:00 2001
-From: Jan Nieuwenhuizen <janneke@gnu.org>
-Date: Sat, 14 Mar 2020 11:28:31 +0100
-Subject: [PATCH] build: Fix cross build on Guix.
-
-As discussed in https://lists.gnu.org/archive/html/bug-hurd/2020-03/msg00018.html.
-
-* Makeconf (lpath): Add -Wl,-rpath-link=<dir> next to -L<dir>.
----
- Makeconf | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/Makeconf b/Makeconf
-index 67f7ab1c..f68ff6e3 100644
---- a/Makeconf
-+++ b/Makeconf
-@@ -325,7 +325,8 @@ _libsubst=${libsubst$(patsubst %,-override,${libsubst-override})}
-
- # Direct the linker where to find shared objects specified in the
- # dependencies of other shared objects it encounters.
--lpath := -L. $(patsubst %,-L%,$(dir $(wildcard ../lib*/lib*.so)))
-+lib_dirs := $(dir $(wildcard ../lib*/lib*.so))
-+lpath := -L. $(lib_dirs:%=-L%) $(lib_dirs:%=-Wl,-rpath-link=%)
-
- # Main rule to link executables
- #
---
-2.24.0
-
diff --git a/gnu/packages/patches/hurd-fix-types-of-read-write-and-readables-methods-2.patch b/gnu/packages/patches/hurd-fix-types-of-read-write-and-readables-methods-2.patch
new file mode 100644
index 0000000000..dda95fb3d5
--- /dev/null
+++ b/gnu/packages/patches/hurd-fix-types-of-read-write-and-readables-methods-2.patch
@@ -0,0 +1,155 @@
+From eb1b2057d839249c955189c2cba8bc37c66d4151 Mon Sep 17 00:00:00 2001
+Message-Id: <eb1b2057d839249c955189c2cba8bc37c66d4151.1678793830.git.dev@jpoiret.xyz>
+In-Reply-To: <f0cacda83293e4d792b8d12665fcb795dc11d6fc.1678793830.git.dev@jpoiret.xyz>
+References: <f0cacda83293e4d792b8d12665fcb795dc11d6fc.1678793830.git.dev@jpoiret.xyz>
+From: Josselin Poiret <dev@jpoiret.xyz>
+Date: Tue, 30 Aug 2022 00:59:59 +0200
+Subject: [PATCH 2/2] Fix types of read write and readables methods
+
+From: Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+This completes 5adb4b834b1e
+---
+ hurd/pci.defs | 2 +-
+ lwip/io-ops.c | 6 +++---
+ lwip/port/netif/hurdtunif.c | 6 +++---
+ lwip/socket-ops.c | 4 ++--
+ pci-arbiter/pci-ops.c | 4 ++--
+ storeio/open.c | 2 +-
+ 6 files changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/hurd/pci.defs b/hurd/pci.defs
+index 23c90334..e258f5ce 100644
+--- a/hurd/pci.defs
++++ b/hurd/pci.defs
+@@ -51,7 +51,7 @@ routine pci_conf_write(
+ */
+ routine pci_get_ndevs(
+ master: pci_t;
+- out ndevs: vm_size_t
++ out ndevs: mach_msg_type_number_t
+ );
+
+ /*
+diff --git a/lwip/io-ops.c b/lwip/io-ops.c
+index 5461d695..6cc724ce 100644
+--- a/lwip/io-ops.c
++++ b/lwip/io-ops.c
+@@ -36,7 +36,7 @@ error_t
+ lwip_S_io_write (struct sock_user *user,
+ const_data_t data,
+ size_t datalen,
+- off_t offset, mach_msg_type_number_t * amount)
++ off_t offset, vm_size_t * amount)
+ {
+ int sent;
+ int sockflags;
+@@ -59,7 +59,7 @@ lwip_S_io_write (struct sock_user *user,
+ error_t
+ lwip_S_io_read (struct sock_user * user,
+ data_t *data,
+- size_t * datalen, off_t offset, mach_msg_type_number_t amount)
++ size_t * datalen, off_t offset, vm_size_t amount)
+ {
+ error_t err;
+ int alloced = 0;
+@@ -112,7 +112,7 @@ lwip_S_io_seek (struct sock_user * user,
+ }
+
+ error_t
+-lwip_S_io_readable (struct sock_user * user, mach_msg_type_number_t * amount)
++lwip_S_io_readable (struct sock_user * user, vm_size_t * amount)
+ {
+ error_t err;
+ if (!user)
+diff --git a/lwip/port/netif/hurdtunif.c b/lwip/port/netif/hurdtunif.c
+index 79a082cf..c976703f 100644
+--- a/lwip/port/netif/hurdtunif.c
++++ b/lwip/port/netif/hurdtunif.c
+@@ -348,7 +348,7 @@ error_t
+ trivfs_S_io_read (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t reply_type,
+ data_t *data, mach_msg_type_number_t * data_len,
+- loff_t offs, size_t amount)
++ loff_t offs, vm_size_t amount)
+ {
+ struct hurdtunif *tunif;
+ struct pbuf *p;
+@@ -423,7 +423,7 @@ trivfs_S_io_write (struct trivfs_protid * cred,
+ mach_msg_type_name_t replytype,
+ const_data_t data,
+ mach_msg_type_number_t datalen,
+- off_t offset, mach_msg_type_number_t * amount)
++ off_t offset, vm_size_t * amount)
+ {
+ struct netif *netif;
+ struct pbuf *p, *q;
+@@ -482,7 +482,7 @@ trivfs_S_io_write (struct trivfs_protid * cred,
+ kern_return_t
+ trivfs_S_io_readable (struct trivfs_protid * cred,
+ mach_port_t reply, mach_msg_type_name_t replytype,
+- mach_msg_type_number_t * amount)
++ vm_size_t * amount)
+ {
+ struct hurdtunif *tunif;
+
+diff --git a/lwip/socket-ops.c b/lwip/socket-ops.c
+index 5b50f58c..d5e3cb07 100644
+--- a/lwip/socket-ops.c
++++ b/lwip/socket-ops.c
+@@ -342,7 +342,7 @@ lwip_S_socket_send (struct sock_user * user,
+ const mach_port_t * ports,
+ size_t nports,
+ const char *control,
+- size_t controllen, mach_msg_type_number_t * amount)
++ size_t controllen, vm_size_t * amount)
+ {
+ int sent;
+ int sockflags;
+@@ -392,7 +392,7 @@ lwip_S_socket_recv (struct sock_user * user,
+ size_t * nports,
+ char **control,
+ size_t * controllen,
+- int *outflags, mach_msg_type_number_t amount)
++ int *outflags, vm_size_t amount)
+ {
+ error_t err;
+ union { struct sockaddr_storage storage; struct sockaddr sa; } addr;
+diff --git a/pci-arbiter/pci-ops.c b/pci-arbiter/pci-ops.c
+index ef27a3cd..d721f368 100644
+--- a/pci-arbiter/pci-ops.c
++++ b/pci-arbiter/pci-ops.c
+@@ -80,7 +80,7 @@ calculate_ndevs (struct iouser *user)
+ */
+ error_t
+ S_pci_conf_read (struct protid * master, int reg, char **data,
+- size_t * datalen, mach_msg_type_number_t amount)
++ size_t * datalen, vm_size_t amount)
+ {
+ error_t err;
+ pthread_mutex_t *lock;
+@@ -129,7 +129,7 @@ S_pci_conf_read (struct protid * master, int reg, char **data,
+ /* Write `datalen' bytes from `data'. `amount' is updated. */
+ error_t
+ S_pci_conf_write (struct protid * master, int reg, const char *data, size_t datalen,
+- mach_msg_type_number_t * amount)
++ vm_size_t * amount)
+ {
+ error_t err;
+ pthread_mutex_t *lock;
+diff --git a/storeio/open.c b/storeio/open.c
+index f8eb6ce0..74902520 100644
+--- a/storeio/open.c
++++ b/storeio/open.c
+@@ -75,7 +75,7 @@ open_write (struct open *open, off_t offs, const void *buf, size_t len,
+ otherwise the error code is returned. */
+ error_t
+ open_read (struct open *open, off_t offs, vm_size_t amount,
+- void **buf, size_t *len)
++ void **buf, vm_size_t *len)
+ {
+ error_t err;
+ if (offs < 0)
+--
+2.39.1
+
diff --git a/gnu/packages/patches/hurd-fix-types-of-read-write-and-readables-methods.patch b/gnu/packages/patches/hurd-fix-types-of-read-write-and-readables-methods.patch
new file mode 100644
index 0000000000..aebe8d6847
--- /dev/null
+++ b/gnu/packages/patches/hurd-fix-types-of-read-write-and-readables-methods.patch
@@ -0,0 +1,891 @@
+From 5adb4b834b1eba82b7f3eca6324bed0355cae0af Mon Sep 17 00:00:00 2001
+Message-Id: <5adb4b834b1eba82b7f3eca6324bed0355cae0af.1678815112.git.dev@jpoiret.xyz>
+From: Josselin Poiret <dev@jpoiret.xyz>
+Date: Mon, 29 Aug 2022 21:36:17 +0200
+Subject: [PATCH] Fix types of read write and readables methods
+
+From: Etienne Brateau <etienne.brateau@gmail.com>
+
+Message-Id: <20220829193617.13481-1-etienne.brateau@gmail.com>
+---
+ boot/boot.c | 6 +++---
+ console-client/trans.c | 4 ++--
+ libdiskfs/io-read.c | 2 +-
+ libdiskfs/io-readable.c | 2 +-
+ libdiskfs/io-write.c | 2 +-
+ libnetfs/io-read.c | 2 +-
+ libnetfs/io-readable.c | 2 +-
+ libnetfs/io-write.c | 2 +-
+ libpager/data-return.c | 2 +-
+ libstore/nbd.c | 6 +++---
+ libstore/rdwr.c | 4 ++--
+ libtrivfs/io-read.c | 2 +-
+ libtrivfs/io-readable.c | 2 +-
+ libtrivfs/io-write.c | 2 +-
+ mach-defpager/default_pager.c | 4 ++--
+ pfinet/io-ops.c | 10 +++++-----
+ pfinet/socket-ops.c | 16 ++++++++--------
+ pfinet/tunnel.c | 6 +++---
+ pflocal/io.c | 6 +++---
+ pflocal/socket.c | 14 +++++++-------
+ storeio/io.c | 8 ++++----
+ storeio/open.c | 4 ++--
+ storeio/open.h | 6 +++---
+ term/ptyio.c | 4 ++--
+ term/term.h | 4 ++--
+ term/users.c | 14 +++++++-------
+ trans/fifo.c | 10 +++++-----
+ trans/firmlink.c | 4 ++--
+ trans/hello-mt.c | 2 +-
+ trans/hello.c | 2 +-
+ trans/mtab.c | 4 ++--
+ trans/new-fifo.c | 10 +++++-----
+ trans/null.c | 8 ++++----
+ trans/proxy-defpager.c | 6 +++---
+ trans/random.c | 6 +++---
+ trans/streamio.c | 6 +++---
+ 36 files changed, 97 insertions(+), 97 deletions(-)
+
+diff --git a/boot/boot.c b/boot/boot.c
+index 1b10c86b..f326e5b2 100644
+--- a/boot/boot.c
++++ b/boot/boot.c
+@@ -1412,7 +1412,7 @@ S_io_write (mach_port_t object,
+ const_data_t data,
+ mach_msg_type_number_t datalen,
+ off_t offset,
+- mach_msg_type_number_t *amtwritten)
++ vm_size_t *amtwritten)
+ {
+ if (object != pseudo_console)
+ return EOPNOTSUPP;
+@@ -1437,7 +1437,7 @@ S_io_read (mach_port_t object,
+ data_t *data,
+ mach_msg_type_number_t *datalen,
+ off_t offset,
+- mach_msg_type_number_t amount)
++ vm_size_t amount)
+ {
+ mach_msg_type_number_t avail;
+
+@@ -1489,7 +1489,7 @@ kern_return_t
+ S_io_readable (mach_port_t object,
+ mach_port_t reply_port,
+ mach_msg_type_name_t reply_type,
+- mach_msg_type_number_t *amt)
++ vm_size_t *amt)
+ {
+ if (object != pseudo_console)
+ return EOPNOTSUPP;
+diff --git a/console-client/trans.c b/console-client/trans.c
+index fe4b9ca4..49e30a61 100644
+--- a/console-client/trans.c
++++ b/console-client/trans.c
+@@ -578,7 +578,7 @@ netfs_S_io_read (struct protid *user,
+ data_t *data,
+ mach_msg_type_number_t *datalen,
+ off_t offset,
+- mach_msg_type_number_t amount)
++ vm_size_t amount)
+ {
+ struct node *np;
+
+@@ -597,7 +597,7 @@ netfs_S_io_write (struct protid *user,
+ const_data_t data,
+ mach_msg_type_number_t datalen,
+ off_t offset,
+- mach_msg_type_number_t *amount)
++ vm_size_t *amount)
+ {
+ struct node *np;
+
+diff --git a/libdiskfs/io-read.c b/libdiskfs/io-read.c
+index 71803517..a706d677 100644
+--- a/libdiskfs/io-read.c
++++ b/libdiskfs/io-read.c
+@@ -25,7 +25,7 @@ diskfs_S_io_read (struct protid *cred,
+ data_t *data,
+ mach_msg_type_number_t *datalen,
+ off_t offset,
+- mach_msg_type_number_t maxread)
++ vm_size_t maxread)
+ {
+ struct node *np;
+ int err;
+diff --git a/libdiskfs/io-readable.c b/libdiskfs/io-readable.c
+index c3debac3..03218bf3 100644
+--- a/libdiskfs/io-readable.c
++++ b/libdiskfs/io-readable.c
+@@ -22,7 +22,7 @@
+ /* Implement io_readable as described in <hurd/io.defs>. */
+ kern_return_t
+ diskfs_S_io_readable (struct protid *cred,
+- mach_msg_type_number_t *amount)
++ vm_size_t *amount)
+ {
+ struct node *np;
+
+diff --git a/libdiskfs/io-write.c b/libdiskfs/io-write.c
+index 154bc887..9efed88f 100644
+--- a/libdiskfs/io-write.c
++++ b/libdiskfs/io-write.c
+@@ -25,7 +25,7 @@ diskfs_S_io_write (struct protid *cred,
+ const_data_t data,
+ mach_msg_type_number_t datalen,
+ off_t offset,
+- mach_msg_type_number_t *amt)
++ vm_size_t *amt)
+ {
+ struct node *np;
+ error_t err;
+diff --git a/libnetfs/io-read.c b/libnetfs/io-read.c
+index 2427ce6c..688da1f6 100644
+--- a/libnetfs/io-read.c
++++ b/libnetfs/io-read.c
+@@ -28,7 +28,7 @@ netfs_S_io_read (struct protid *user,
+ data_t *data,
+ mach_msg_type_number_t *datalen,
+ off_t offset,
+- mach_msg_type_number_t amount)
++ vm_size_t amount)
+ {
+ error_t err;
+ off_t start;
+diff --git a/libnetfs/io-readable.c b/libnetfs/io-readable.c
+index 07becf66..7c365484 100644
+--- a/libnetfs/io-readable.c
++++ b/libnetfs/io-readable.c
+@@ -25,7 +25,7 @@
+
+ error_t
+ netfs_S_io_readable (struct protid *user,
+- mach_msg_type_number_t *amount)
++ vm_size_t *amount)
+ {
+ error_t err;
+
+diff --git a/libnetfs/io-write.c b/libnetfs/io-write.c
+index 482b45fc..2306d1f0 100644
+--- a/libnetfs/io-write.c
++++ b/libnetfs/io-write.c
+@@ -27,7 +27,7 @@ netfs_S_io_write (struct protid *user,
+ const_data_t data,
+ mach_msg_type_number_t datalen,
+ off_t offset,
+- mach_msg_type_number_t *amount)
++ vm_size_t *amount)
+ {
+ error_t err;
+ off_t off = offset;
+diff --git a/libpager/data-return.c b/libpager/data-return.c
+index c0f5aaf7..4c4affe8 100644
+--- a/libpager/data-return.c
++++ b/libpager/data-return.c
+@@ -258,7 +258,7 @@ _pager_S_memory_object_data_return (struct pager *p,
+ mach_port_t control,
+ vm_offset_t offset,
+ pointer_t data,
+- vm_size_t length,
++ mach_msg_type_number_t length,
+ int dirty,
+ int kcopy)
+ {
+diff --git a/libstore/nbd.c b/libstore/nbd.c
+index 3138af01..8e0892e3 100644
+--- a/libstore/nbd.c
++++ b/libstore/nbd.c
+@@ -119,7 +119,7 @@ nbd_write (struct store *store,
+ type: htonl (1), /* WRITE */
+ };
+ error_t err;
+- mach_msg_type_number_t cc;
++ vm_size_t cc;
+
+ addr <<= store->log2_block_size;
+ *amount = 0;
+@@ -178,7 +178,7 @@ nbd_read (struct store *store,
+ requested can be found in CHUNK. */
+ inline error_t request_chunk (char **buf, size_t *len)
+ {
+- mach_msg_type_number_t cc;
++ vm_size_t cc;
+
+ chunk = (amount - ofs) < NBD_IO_MAX ? (amount - ofs) : NBD_IO_MAX;
+
+@@ -435,7 +435,7 @@ nbdclose (struct store *store)
+ magic: NBD_REQUEST_MAGIC,
+ type: htonl (2), /* disconnect */
+ };
+- mach_msg_type_number_t cc;
++ vm_size_t cc;
+ (void) io_write (store->port, (char *) &req, sizeof req, -1, &cc);
+
+ /* Close the socket. */
+diff --git a/libstore/rdwr.c b/libstore/rdwr.c
+index 9737c515..f443ad9f 100644
+--- a/libstore/rdwr.c
++++ b/libstore/rdwr.c
+@@ -120,7 +120,7 @@ store_write (struct store *store,
+ else
+ /* ARGH, we've got to split up the write ... */
+ {
+- mach_msg_type_number_t try, written;
++ vm_size_t try, written;
+
+ /* Write the initial bit in the first run. Errors here are returned. */
+ try = (run->length - addr) << block_shift;
+@@ -138,7 +138,7 @@ store_write (struct store *store,
+ && run->start >= 0) /* Check for holes. */
+ /* Ok, we can write in this run, at least a bit. */
+ {
+- mach_msg_type_number_t seg_written;
++ vm_size_t seg_written;
+
+ if ((len >> block_shift) <= run->length)
+ try = len;
+diff --git a/libtrivfs/io-read.c b/libtrivfs/io-read.c
+index a911f778..4d3302e4 100644
+--- a/libtrivfs/io-read.c
++++ b/libtrivfs/io-read.c
+@@ -26,7 +26,7 @@ trivfs_S_io_read (struct trivfs_protid *cred,
+ data_t *data,
+ mach_msg_type_number_t *datalen,
+ off_t off,
+- mach_msg_type_number_t amt)
++ vm_size_t amt)
+ {
+ assert_backtrace (!trivfs_support_read);
+ return EOPNOTSUPP;
+diff --git a/libtrivfs/io-readable.c b/libtrivfs/io-readable.c
+index de4d32b8..acb3fa52 100644
+--- a/libtrivfs/io-readable.c
++++ b/libtrivfs/io-readable.c
+@@ -23,7 +23,7 @@ kern_return_t
+ trivfs_S_io_readable (struct trivfs_protid *cred,
+ mach_port_t reply,
+ mach_msg_type_name_t replytype,
+- mach_msg_type_number_t *amount)
++ vm_size_t *amount)
+ {
+ assert_backtrace (!trivfs_support_read);
+ return EOPNOTSUPP;
+diff --git a/libtrivfs/io-write.c b/libtrivfs/io-write.c
+index 74cbb32b..787b2544 100644
+--- a/libtrivfs/io-write.c
++++ b/libtrivfs/io-write.c
+@@ -27,7 +27,7 @@ trivfs_S_io_write (struct trivfs_protid *cred,
+ const_data_t data,
+ mach_msg_type_number_t datalen,
+ off_t off,
+- mach_msg_type_number_t *amt)
++ vm_size_t *amt)
+ {
+ if (!(trivfs_allow_open & O_WRITE))
+ return EBADF;
+diff --git a/mach-defpager/default_pager.c b/mach-defpager/default_pager.c
+index fd3a7b22..5c1352f4 100644
+--- a/mach-defpager/default_pager.c
++++ b/mach-defpager/default_pager.c
+@@ -2572,7 +2572,7 @@ seqnos_memory_object_data_initialize(ds, seqno, pager_request,
+ vm_offset_t offset;
+ register
+ pointer_t addr;
+- vm_size_t data_cnt;
++ mach_msg_type_number_t data_cnt;
+ {
+ vm_offset_t amount_sent;
+ static char here[] = "%sdata_initialize";
+@@ -2631,7 +2631,7 @@ seqnos_memory_object_data_return(ds, seqno, pager_request,
+ mach_port_t pager_request;
+ vm_offset_t offset;
+ pointer_t addr;
+- vm_size_t data_cnt;
++ mach_msg_type_number_t data_cnt;
+ boolean_t dirty;
+ boolean_t kernel_copy;
+ {
+diff --git a/pfinet/io-ops.c b/pfinet/io-ops.c
+index fa6350c3..6269743d 100644
+--- a/pfinet/io-ops.c
++++ b/pfinet/io-ops.c
+@@ -37,9 +37,9 @@
+ error_t
+ S_io_write (struct sock_user *user,
+ const_data_t data,
+- size_t datalen,
++ mach_msg_type_number_t datalen,
+ off_t offset,
+- mach_msg_type_number_t *amount)
++ vm_size_t *amount)
+ {
+ error_t err;
+ struct iovec iov = { (void*) data, datalen };
+@@ -70,9 +70,9 @@ S_io_write (struct sock_user *user,
+ error_t
+ S_io_read (struct sock_user *user,
+ data_t *data,
+- size_t *datalen,
++ mach_msg_type_number_t *datalen,
+ off_t offset,
+- mach_msg_type_number_t amount)
++ vm_size_t amount)
+ {
+ error_t err;
+ int alloced = 0;
+@@ -135,7 +135,7 @@ S_io_seek (struct sock_user *user,
+
+ error_t
+ S_io_readable (struct sock_user *user,
+- mach_msg_type_number_t *amount)
++ vm_size_t *amount)
+ {
+ struct sock *sk;
+ error_t err;
+diff --git a/pfinet/socket-ops.c b/pfinet/socket-ops.c
+index db1b92cd..8d27c383 100644
+--- a/pfinet/socket-ops.c
++++ b/pfinet/socket-ops.c
+@@ -431,12 +431,12 @@ S_socket_send (struct sock_user *user,
+ struct sock_addr *addr,
+ int flags,
+ const_data_t data,
+- size_t datalen,
++ mach_msg_type_number_t datalen,
+ const mach_port_t *ports,
+- size_t nports,
++ mach_msg_type_number_t nports,
+ const_data_t control,
+- size_t controllen,
+- mach_msg_type_number_t *amount)
++ mach_msg_type_number_t controllen,
++ vm_size_t *amount)
+ {
+ int sent;
+ struct iovec iov = { (void*) data, datalen };
+@@ -478,14 +478,14 @@ S_socket_recv (struct sock_user *user,
+ mach_msg_type_name_t *addrporttype,
+ int flags,
+ data_t *data,
+- size_t *datalen,
++ mach_msg_type_number_t *datalen,
+ mach_port_t **ports,
+ mach_msg_type_name_t *portstype,
+- size_t *nports,
++ mach_msg_type_number_t *nports,
+ data_t *control,
+- size_t *controllen,
++ mach_msg_type_number_t *controllen,
+ int *outflags,
+- mach_msg_type_number_t amount)
++ vm_size_t amount)
+ {
+ error_t err;
+ union { struct sockaddr_storage storage; struct sockaddr sa; } addr;
+diff --git a/pfinet/tunnel.c b/pfinet/tunnel.c
+index 1082404e..e11ab670 100644
+--- a/pfinet/tunnel.c
++++ b/pfinet/tunnel.c
+@@ -291,7 +291,7 @@ error_t
+ trivfs_S_io_read (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t reply_type,
+ data_t *data, mach_msg_type_number_t *data_len,
+- loff_t offs, size_t amount)
++ off_t offs, vm_size_t amount)
+ {
+ struct tunnel_device *tdev;
+ struct sk_buff *skb;
+@@ -372,7 +372,7 @@ trivfs_S_io_write (struct trivfs_protid *cred,
+ const_data_t data,
+ mach_msg_type_number_t datalen,
+ off_t offset,
+- mach_msg_type_number_t *amount)
++ vm_size_t *amount)
+ {
+ struct tunnel_device *tdev;
+ struct sk_buff *skb;
+@@ -415,7 +415,7 @@ trivfs_S_io_write (struct trivfs_protid *cred,
+ kern_return_t
+ trivfs_S_io_readable (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t replytype,
+- mach_msg_type_number_t *amount)
++ vm_size_t *amount)
+ {
+ struct tunnel_device *tdev;
+ struct sk_buff *skb;
+diff --git a/pflocal/io.c b/pflocal/io.c
+index 96b2fc48..06749756 100644
+--- a/pflocal/io.c
++++ b/pflocal/io.c
+@@ -44,7 +44,7 @@
+ error_t
+ S_io_read (struct sock_user *user,
+ data_t *data, mach_msg_type_number_t *data_len,
+- off_t offset, mach_msg_type_number_t amount)
++ off_t offset, vm_size_t amount)
+ {
+ error_t err;
+ struct pipe *pipe;
+@@ -80,7 +80,7 @@ S_io_read (struct sock_user *user,
+ error_t
+ S_io_write (struct sock_user *user,
+ const_data_t data, mach_msg_type_number_t data_len,
+- off_t offset, mach_msg_type_number_t *amount)
++ off_t offset, vm_size_t *amount)
+ {
+ error_t err;
+ struct pipe *pipe;
+@@ -119,7 +119,7 @@ S_io_write (struct sock_user *user,
+ a "long time" (this should be the same meaning of "long time" used
+ by the nonblocking flag. */
+ error_t
+-S_io_readable (struct sock_user *user, mach_msg_type_number_t *amount)
++S_io_readable (struct sock_user *user, vm_size_t *amount)
+ {
+ error_t err;
+ struct pipe *pipe;
+diff --git a/pflocal/socket.c b/pflocal/socket.c
+index 8c1ee3e9..8c240e09 100644
+--- a/pflocal/socket.c
++++ b/pflocal/socket.c
+@@ -287,10 +287,10 @@ S_socket_peername (struct sock_user *user,
+ /* Send data over a socket, possibly including Mach ports. */
+ error_t
+ S_socket_send (struct sock_user *user, struct addr *dest_addr, int flags,
+- const_data_t data, size_t data_len,
+- const mach_port_t *ports, size_t num_ports,
+- const_data_t control, size_t control_len,
+- size_t *amount)
++ const_data_t data, mach_msg_type_number_t data_len,
++ const mach_port_t *ports, mach_msg_type_number_t num_ports,
++ const_data_t control, mach_msg_type_number_t control_len,
++ vm_size_t *amount)
+ {
+ error_t err = 0;
+ int noblock;
+@@ -378,11 +378,11 @@ error_t
+ S_socket_recv (struct sock_user *user,
+ mach_port_t *addr, mach_msg_type_name_t *addr_type,
+ int in_flags,
+- data_t *data, size_t *data_len,
++ data_t *data, mach_msg_type_name_t *data_len,
+ mach_port_t **ports, mach_msg_type_name_t *ports_type,
+ size_t *num_ports,
+- data_t *control, size_t *control_len,
+- int *out_flags, size_t amount)
++ data_t *control, mach_msg_type_name_t *control_len,
++ int *out_flags, vm_size_t amount)
+ {
+ error_t err;
+ unsigned flags;
+diff --git a/storeio/io.c b/storeio/io.c
+index 634185f7..3c4cb9ff 100644
+--- a/storeio/io.c
++++ b/storeio/io.c
+@@ -83,8 +83,8 @@ trivfs_S_io_map (struct trivfs_protid *cred,
+ error_t
+ trivfs_S_io_read (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t reply_type,
+- data_t *data, mach_msg_type_number_t *data_len,
+- loff_t offs, mach_msg_type_number_t amount)
++ data_t *data, mach_msg_type_name_t *data_len,
++ off_t offs, vm_size_t amount)
+ {
+ if (! cred)
+ return EOPNOTSUPP;
+@@ -101,7 +101,7 @@ trivfs_S_io_read (struct trivfs_protid *cred,
+ error_t
+ trivfs_S_io_readable (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t reply_type,
+- mach_msg_type_number_t *amount)
++ vm_size_t *amount)
+ {
+ if (! cred)
+ return EOPNOTSUPP;
+@@ -126,7 +126,7 @@ error_t
+ trivfs_S_io_write (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t reply_type,
+ const_data_t data, mach_msg_type_number_t data_len,
+- loff_t offs, mach_msg_type_number_t *amount)
++ off_t offs, vm_size_t *amount)
+ {
+ if (! cred)
+ return EOPNOTSUPP;
+diff --git a/storeio/open.c b/storeio/open.c
+index 4c2870c6..f8eb6ce0 100644
+--- a/storeio/open.c
++++ b/storeio/open.c
+@@ -74,8 +74,8 @@ open_write (struct open *open, off_t offs, const void *buf, size_t len,
+ standard mach out-array convention. If no error occurs, zero is returned,
+ otherwise the error code is returned. */
+ error_t
+-open_read (struct open *open, off_t offs, size_t amount,
+- void **buf, vm_size_t *len)
++open_read (struct open *open, off_t offs, vm_size_t amount,
++ void **buf, size_t *len)
+ {
+ error_t err;
+ if (offs < 0)
+diff --git a/storeio/open.h b/storeio/open.h
+index 6be930a6..ad2678ff 100644
+--- a/storeio/open.h
++++ b/storeio/open.h
+@@ -51,13 +51,13 @@ void open_free (struct open *open);
+ and returns the number of bytes written in AMOUNT. If no error occurs,
+ zero is returned, otherwise the error code is returned. */
+ error_t open_write (struct open *open, off_t offs, const void *buf, size_t len,
+- size_t *amount);
++ vm_size_t *amount);
+
+ /* Reads up to AMOUNT bytes from the device into BUF and BUF_LEN using the
+ standard mach out-array convention. If no error occurs, zero is returned,
+ otherwise the error code is returned. */
+-error_t open_read (struct open *open, off_t offs, size_t amount,
+- void **buf, size_t *buf_len);
++error_t open_read (struct open *open, off_t offs, vm_size_t amount,
++ void **buf, vm_size_t *buf_len);
+
+ /* Set OPEN's location to OFFS, interpreted according to WHENCE as by seek.
+ The new absolute location is returned in NEW_OFFS (and may not be the same
+diff --git a/term/ptyio.c b/term/ptyio.c
+index 928ae0ac..acd1015a 100644
+--- a/term/ptyio.c
++++ b/term/ptyio.c
+@@ -302,7 +302,7 @@ error_t
+ pty_io_read (struct trivfs_protid *cred,
+ data_t *data,
+ mach_msg_type_number_t *datalen,
+- mach_msg_type_number_t amount)
++ vm_size_t amount)
+ {
+ int size;
+
+@@ -386,7 +386,7 @@ error_t
+ pty_io_write (struct trivfs_protid *cred,
+ const_data_t data,
+ mach_msg_type_number_t datalen,
+- mach_msg_type_number_t *amount)
++ vm_size_t *amount)
+ {
+ int i, flush;
+ int cancel = 0;
+diff --git a/term/term.h b/term/term.h
+index efe27ffa..1e6be5f2 100644
+--- a/term/term.h
++++ b/term/term.h
+@@ -387,9 +387,9 @@ extern dev_t rdev;
+ /* kludge--these are pty versions of trivfs_S_io_* functions called by
+ the real functions in users.c to do work for ptys. */
+ error_t pty_io_write (struct trivfs_protid *, const char *,
+- mach_msg_type_number_t, mach_msg_type_number_t *);
++ mach_msg_type_number_t, vm_size_t *);
+ error_t pty_io_read (struct trivfs_protid *, char **,
+- mach_msg_type_number_t *, mach_msg_type_number_t);
++ mach_msg_type_number_t *, vm_size_t);
+ error_t pty_io_readable (size_t *);
+ error_t pty_io_select (struct trivfs_protid *, mach_port_t,
+ struct timespec *, int *);
+diff --git a/term/users.c b/term/users.c
+index 72f5507d..59f02b66 100644
+--- a/term/users.c
++++ b/term/users.c
+@@ -562,9 +562,9 @@ trivfs_S_io_write (struct trivfs_protid *cred,
+ mach_port_t reply,
+ mach_msg_type_name_t replytype,
+ const_data_t data,
+- size_t datalen,
+- loff_t offset,
+- size_t *amt)
++ mach_msg_type_name_t datalen,
++ off_t offset,
++ vm_size_t *amt)
+ {
+ int i;
+ int cancel;
+@@ -640,9 +640,9 @@ trivfs_S_io_read (struct trivfs_protid *cred,
+ mach_port_t reply,
+ mach_msg_type_name_t replytype,
+ data_t *data,
+- size_t *datalen,
+- loff_t offset,
+- size_t amount)
++ mach_msg_type_name_t *datalen,
++ off_t offset,
++ vm_size_t amount)
+ {
+ int cancel;
+ int i, max;
+@@ -820,7 +820,7 @@ error_t
+ trivfs_S_io_readable (struct trivfs_protid *cred,
+ mach_port_t reply,
+ mach_msg_type_name_t replytype,
+- size_t *amt)
++ vm_size_t *amt)
+ {
+ if (!cred)
+ return EOPNOTSUPP;
+diff --git a/trans/fifo.c b/trans/fifo.c
+index ce7c7729..894565f6 100644
+--- a/trans/fifo.c
++++ b/trans/fifo.c
+@@ -339,8 +339,8 @@ trivfs_S_io_map (struct trivfs_protid *cred,
+ error_t
+ trivfs_S_io_read (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t reply_type,
+- data_t *data, size_t *data_len,
+- off_t offs, size_t amount)
++ data_t *data, mach_msg_type_name_t *data_len,
++ off_t offs, vm_size_t amount)
+ {
+ error_t err;
+
+@@ -368,7 +368,7 @@ trivfs_S_io_read (struct trivfs_protid *cred,
+ error_t
+ trivfs_S_io_readable (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t reply_type,
+- size_t *amount)
++ vm_size_t *amount)
+ {
+ error_t err;
+
+@@ -502,8 +502,8 @@ trivfs_S_io_select_timeout (struct trivfs_protid *cred,
+ error_t
+ trivfs_S_io_write (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t reply_type,
+- const_data_t data, size_t data_len,
+- off_t offs, size_t *amount)
++ const_data_t data, mach_msg_type_name_t data_len,
++ off_t offs, vm_size_t *amount)
+ {
+ error_t err;
+
+diff --git a/trans/firmlink.c b/trans/firmlink.c
+index 8a5d01a8..e216146a 100644
+--- a/trans/firmlink.c
++++ b/trans/firmlink.c
+@@ -207,7 +207,7 @@ error_t
+ trivfs_S_io_read (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t reply_type,
+ data_t *data, mach_msg_type_number_t *data_len,
+- loff_t offs, mach_msg_type_number_t amount)
++ off_t offs, vm_size_t amount)
+ {
+ error_t err = 0;
+
+@@ -244,7 +244,7 @@ trivfs_S_io_read (struct trivfs_protid *cred,
+ error_t
+ trivfs_S_io_readable (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t reply_type,
+- mach_msg_type_number_t *amount)
++ vm_size_t *amount)
+ {
+ if (! cred)
+ return EOPNOTSUPP;
+diff --git a/trans/hello-mt.c b/trans/hello-mt.c
+index 92f814d6..e99ba754 100644
+--- a/trans/hello-mt.c
++++ b/trans/hello-mt.c
+@@ -125,7 +125,7 @@ error_t
+ trivfs_S_io_read (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t reply_type,
+ data_t *data, mach_msg_type_number_t *data_len,
+- loff_t offs, mach_msg_type_number_t amount)
++ off_t offs, vm_size_t amount)
+ {
+ struct open *op;
+
+diff --git a/trans/hello.c b/trans/hello.c
+index f8f9e7ab..0405fad3 100644
+--- a/trans/hello.c
++++ b/trans/hello.c
+@@ -116,7 +116,7 @@ error_t
+ trivfs_S_io_read (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t reply_type,
+ data_t *data, mach_msg_type_number_t *data_len,
+- loff_t offs, mach_msg_type_number_t amount)
++ off_t offs, vm_size_t amount)
+ {
+ struct open *op;
+
+diff --git a/trans/mtab.c b/trans/mtab.c
+index caff3385..a2feee7d 100644
+--- a/trans/mtab.c
++++ b/trans/mtab.c
+@@ -657,7 +657,7 @@ error_t
+ trivfs_S_io_read (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t reply_type,
+ data_t *data, mach_msg_type_number_t *data_len,
+- loff_t offs, mach_msg_type_number_t amount)
++ off_t offs, vm_size_t amount)
+ {
+ error_t err = 0;
+ struct mtab *op;
+@@ -774,7 +774,7 @@ void (*trivfs_peropen_destroy_hook) (struct trivfs_peropen *) = close_hook;
+ kern_return_t
+ trivfs_S_io_readable (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t replytype,
+- mach_msg_type_number_t *amount)
++ vm_size_t *amount)
+ {
+ error_t err = 0;
+ if (!cred)
+diff --git a/trans/new-fifo.c b/trans/new-fifo.c
+index 9a959a39..3e9a886c 100644
+--- a/trans/new-fifo.c
++++ b/trans/new-fifo.c
+@@ -524,8 +524,8 @@ trivfs_S_io_map (struct trivfs_protid *cred,
+ error_t
+ trivfs_S_io_read (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t reply_type,
+- data_t *data, size_t *data_len,
+- off_t offs, size_t amount)
++ data_t *data, mach_msg_type_name_t *data_len,
++ off_t offs, vm_size_t amount)
+ {
+ error_t err;
+
+@@ -554,7 +554,7 @@ trivfs_S_io_read (struct trivfs_protid *cred,
+ error_t
+ trivfs_S_io_readable (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t reply_type,
+- size_t *amount)
++ vm_size_t *amount)
+ {
+ error_t err;
+
+@@ -689,8 +689,8 @@ trivfs_S_io_select_timeout (struct trivfs_protid *cred,
+ error_t
+ trivfs_S_io_write (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t reply_type,
+- const_data_t data, size_t data_len,
+- off_t offs, size_t *amount)
++ const_data_t data, mach_msg_type_name_t data_len,
++ off_t offs, vm_size_t *amount)
+ {
+ error_t err;
+
+diff --git a/trans/null.c b/trans/null.c
+index 034bb103..f4ba5582 100644
+--- a/trans/null.c
++++ b/trans/null.c
+@@ -149,8 +149,8 @@ trivfs_S_io_read(struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t replytype,
+ data_t *data,
+ mach_msg_type_number_t *datalen,
+- loff_t offs,
+- mach_msg_type_number_t amt)
++ off_t offs,
++ vm_size_t amt)
+ {
+ if (!cred)
+ return EOPNOTSUPP;
+@@ -169,7 +169,7 @@ trivfs_S_io_read(struct trivfs_protid *cred,
+ kern_return_t
+ trivfs_S_io_readable (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t replytype,
+- mach_msg_type_number_t *amount)
++ vm_size_t *amount)
+ {
+ if (!cred)
+ return EOPNOTSUPP;
+@@ -228,7 +228,7 @@ kern_return_t
+ trivfs_S_io_write (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t replytype,
+ const_data_t data, mach_msg_type_number_t datalen,
+- loff_t offs, mach_msg_type_number_t *amt)
++ off_t offs, vm_size_t *amt)
+ {
+ if (!cred)
+ return EOPNOTSUPP;
+diff --git a/trans/proxy-defpager.c b/trans/proxy-defpager.c
+index 8ca25b72..bfeda063 100644
+--- a/trans/proxy-defpager.c
++++ b/trans/proxy-defpager.c
+@@ -169,8 +169,8 @@ trivfs_S_io_read (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t replytype,
+ data_t *data,
+ mach_msg_type_number_t *datalen,
+- loff_t offs,
+- mach_msg_type_number_t amt)
++ off_t offs,
++ vm_size_t amt)
+ {
+ if (!cred)
+ return EOPNOTSUPP;
+@@ -181,7 +181,7 @@ kern_return_t
+ trivfs_S_io_write (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t replytype,
+ const_data_t data, mach_msg_type_number_t datalen,
+- loff_t offs, mach_msg_type_number_t *amt)
++ loff_t offs, vm_size_t *amt)
+ {
+ if (!cred)
+ return EOPNOTSUPP;
+diff --git a/trans/random.c b/trans/random.c
+index c230280a..297253e4 100644
+--- a/trans/random.c
++++ b/trans/random.c
+@@ -318,7 +318,7 @@ error_t
+ trivfs_S_io_read (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t reply_type,
+ data_t *data, mach_msg_type_number_t *data_len,
+- loff_t offs, mach_msg_type_number_t amount)
++ off_t offs, vm_size_t amount)
+ {
+ error_t err;
+ void *buf = NULL;
+@@ -377,8 +377,8 @@ trivfs_S_io_write (struct trivfs_protid *cred,
+ mach_msg_type_name_t replytype,
+ const_data_t data,
+ mach_msg_type_number_t datalen,
+- loff_t offset,
+- mach_msg_type_number_t *amount)
++ off_t offset,
++ vm_size_t *amount)
+ {
+ /* Deny access if they have bad credentials. */
+ if (! cred)
+diff --git a/trans/streamio.c b/trans/streamio.c
+index 30b8b20e..acd5d674 100644
+--- a/trans/streamio.c
++++ b/trans/streamio.c
+@@ -482,7 +482,7 @@ error_t
+ trivfs_S_io_read (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t reply_type,
+ data_t *data, mach_msg_type_number_t *data_len,
+- loff_t offs, mach_msg_type_number_t amount)
++ off_t offs, vm_size_t amount)
+ {
+ error_t err;
+
+@@ -501,7 +501,7 @@ trivfs_S_io_read (struct trivfs_protid *cred,
+ error_t
+ trivfs_S_io_readable (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t reply_type,
+- mach_msg_type_number_t *amount)
++ vm_size_t *amount)
+ {
+ error_t err;
+
+@@ -521,7 +521,7 @@ error_t
+ trivfs_S_io_write (struct trivfs_protid *cred,
+ mach_port_t reply, mach_msg_type_name_t reply_type,
+ const_data_t data, mach_msg_type_number_t data_len,
+- loff_t offs, mach_msg_type_number_t *amount)
++ off_t offs, vm_size_t *amount)
+ {
+ error_t err;
+
+
+base-commit: b6509385bb1dd2a6d47401465bfb98b6339c5c2b
+prerequisite-patch-id: 33c640aa0fcf19d49fff88cc58cecd3be8f7892d
+prerequisite-patch-id: 411256b31780cf9ea0b24efe9f2b20f82c6ce9c1
+prerequisite-patch-id: 830470d11762c6c5e09488a2b834dff0f4f6e434
+prerequisite-patch-id: 1a1293bebf97550d54d9dba3a1817f20a3ef6a2a
+prerequisite-patch-id: f12e5842dea12ed7b0ff4ae3fa2afe78f3647288
+prerequisite-patch-id: 4436fa0181c5e21580e6656634e35febf251dc5b
+prerequisite-patch-id: a938f788841d96151e9e4cc134114dc7652e4f27
+prerequisite-patch-id: bfc7264e11d3ca2dbc520f221cf8bf13857d4732
+prerequisite-patch-id: 50393cc222a3e9de9cfab0762f5acf10e394c9f0
+--
+2.39.1
+
diff --git a/gnu/packages/patches/hurd-xattr.patch b/gnu/packages/patches/hurd-xattr.patch
deleted file mode 100644
index 0a922c91b5..0000000000
--- a/gnu/packages/patches/hurd-xattr.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 75cb948c575fca3962c4cce115d31dd178bc389f Mon Sep 17 00:00:00 2001
-From: "Jan (janneke) Nieuwenhuizen" <janneke@gnu.org>
-Date: Tue, 12 May 2020 07:39:59 +0200
-Subject: [PATCH] ext2fs: Update to upstream Hurd-reserved xattr index for
- "gnu.*".
-
-See
- https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3980bd3b406addb327d858aebd19e229ea340b9a
-
-This supports setting (and reading) of passive trasnlators from
-GNU/Linux, e.g.
-
- dd if=/dev/zero of=file bs=1k count=1000
- losetup /dev/loop0 file
- mke2fs -t ext2 -o hurd -O ext_attr /dev/loop0
- mount -t ext2 -o x-xattr-translator-records /dev/loop0 /mnt
- mkdir -p /mnt/servers/socket
- touch /mnt/servers/socket/1
- setfattr --name=gnu.translator --value='/hurd/pflocal\0' /mnt/servers/socket/1
- getfattr --name=gnu.translator /mnt/servers/socket/1
- # file: 1
- gnu.translator="/hurd/pflocal"
-
-* ext2fs/xattr.c (struct _xattr_prefix): For "gnu.*", use index for
-the Hurd (10).
----
- ext2fs/xattr.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/ext2fs/xattr.c b/ext2fs/xattr.c
-index f6ea0f39..78458214 100644
---- a/ext2fs/xattr.c
-+++ b/ext2fs/xattr.c
-@@ -1,6 +1,6 @@
- /* Ext2 support for extended attributes
-
-- Copyright (C) 2006, 2016 Free Software Foundation, Inc.
-+ Copyright (C) 2006, 2016, 2020 Free Software Foundation, Inc.
-
- Written by Thadeu Lima de Souza Cascardo <cascardo@dcc.ufmg.br>
- and Shengyu Zhang <lastavengers@outlook.com>
-@@ -39,7 +39,7 @@ xattr_prefixes[] =
- {
- 1, "user.", sizeof "user." - 1},
- {
-- 7, "gnu.", sizeof "gnu." - 1},
-+ 10, "gnu.", sizeof "gnu." - 1},
- {
- 0, NULL, 0}
- };
---
-2.26.0
-