commit 884a0bfc2b0ec1ff25d5120f9bfbccfeee8e5b0e
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date:   Sun Mar 16 11:52:04 2025 +0100

    tmpfs: also try to start the default pager
    
    initscripts apparently tries to mount /run before calling swapon

diff --git a/sutils/swapon.c b/sutils/swapon.c
index b699b933..9f0b0163 100644
--- a/sutils/swapon.c
+++ b/sutils/swapon.c
@@ -110,7 +110,6 @@ static void get_def_pager(int autostart)
 	error (12, err, "Cannot get privileged ports");
 
       err = vm_set_default_memory_manager (host, &def_pager);
-      mach_port_deallocate (mach_task_self (), host);
       if (err)
 	error (13, err, "Cannot get default pager port");
       if (def_pager == MACH_PORT_NULL)
@@ -127,12 +126,12 @@ static void get_def_pager(int autostart)
 		{
 		  fprintf (stderr, "Started it\n");
 		  err = vm_set_default_memory_manager (host, &def_pager);
-		  mach_port_deallocate (mach_task_self (), host);
 		  if (err)
 		    error (16, err, "Cannot get default pager port");
 		}
 	    }
 	}
+      mach_port_deallocate (mach_task_self (), host);
     }
 }
 
diff --git a/tmpfs/tmpfs.c b/tmpfs/tmpfs.c
index 08356803..ad5e2983 100644
--- a/tmpfs/tmpfs.c
+++ b/tmpfs/tmpfs.c
@@ -364,9 +364,25 @@ main (int argc, char **argv)
   else
     {
       err = vm_set_default_memory_manager (host_priv, &default_pager);
-      mach_port_deallocate (mach_task_self (), host_priv);
       if (err)
 	error (0, err, "Cannot get default pager port");
+      else
+	if (default_pager == MACH_PORT_NULL)
+	  {
+	    error (0, 0, "No default pager (memory manager) is running");
+	    /* Try to auto-start it.  */
+	    err = system ("/hurd/mach-defpager");
+	    if (err)
+	      error (0, err, "Could not start it");
+	    else
+	      {
+		fprintf (stderr, "Started it\n");
+		err = vm_set_default_memory_manager (host_priv, &default_pager);
+		if (err)
+		  error(0, err, "Cannot get default pager port");
+	      }
+	  }
+      mach_port_deallocate (mach_task_self (), host_priv);
     }
   if (default_pager == MACH_PORT_NULL)
     error (0, 0, "files cannot have contents with no default pager port");
