bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH hurd] Remove default_pager_paging_file RPC from default pager


From: Flavio Cruz
Subject: [PATCH hurd] Remove default_pager_paging_file RPC from default pager
Date: Sat, 15 Apr 2023 01:12:20 -0400

The default_pager_paging_storage RPC has already it more than 20 years
ago. Given that we want to change the type of default_pager_filename_t
to use c_string, we can just remove the unused RPC.

Tested that swapon/swapoff still work with the new binaries.
---
 hurd/default_pager.defs       |  8 +----
 mach-defpager/default_pager.c | 28 -----------------
 mach-defpager/default_pager.h |  2 --
 mach-defpager/setup.c         | 50 ------------------------------
 sutils/swapon.c               | 57 +++++------------------------------
 trans/proxy-defpager.c        | 12 --------
 6 files changed, 9 insertions(+), 148 deletions(-)

diff --git a/hurd/default_pager.defs b/hurd/default_pager.defs
index 14a5ec40..6b834584 100644
--- a/hurd/default_pager.defs
+++ b/hurd/default_pager.defs
@@ -65,13 +65,7 @@ routine default_pager_object_pages(
        out     pages                   : default_pager_page_array_t,
                        CountInOut, Dealloc);
 
-/* This is the original Mach call, now deprecated in favor
-   of default_pager_paging_storage.  */
-routine default_pager_paging_file(
-               default_pager           : mach_port_t;
-               master_device_port      : mach_port_t;
-               filename                : default_pager_filename_t;
-               add                     : boolean_t);
+skip;                          /* default_pager_paging_file */
 
 skip;                          /* default_pager_register_fileserver */
 
diff --git a/mach-defpager/default_pager.c b/mach-defpager/default_pager.c
index 054820a9..a547ade8 100644
--- a/mach-defpager/default_pager.c
+++ b/mach-defpager/default_pager.c
@@ -3662,34 +3662,6 @@ S_default_pager_object_set_size (default_pager_t ds,
 extern mach_port_t bootstrap_master_device_port;
 extern mach_port_t bootstrap_master_host_port;
 
-kern_return_t
-S_default_pager_paging_file (mach_port_t                       pager,
-       mach_port_t                     mdport,
-       const_default_pager_filename_t  file_name,
-       boolean_t                       add)
-{
-       kern_return_t   kr;
-
-       if (pager != default_pager_default_port)
-               return KERN_INVALID_ARGUMENT;
-
-#if 0
-dprintf("bmd %x md %x\n", bootstrap_master_device_port, mdport);
-#endif
-       if (add) {
-               kr = add_paging_file(bootstrap_master_device_port,
-                                    file_name, 0);
-       } else {
-               kr = remove_paging_file(file_name);
-       }
-
-       /* XXXX more code needed */
-       if (mdport != bootstrap_master_device_port)
-               mach_port_deallocate( mach_task_self(), mdport);
-
-       return kr;
-}
-
 kern_return_t
 default_pager_register_fileserver(mach_port_t                  pager,
        mach_port_t                     fileserver)
diff --git a/mach-defpager/default_pager.h b/mach-defpager/default_pager.h
index 97d2a343..85bae71b 100644
--- a/mach-defpager/default_pager.h
+++ b/mach-defpager/default_pager.h
@@ -33,8 +33,6 @@ void create_paging_partition(const char *name, struct 
file_direct *fdp,
                              int isa_file, int linux_signature);
 kern_return_t destroy_paging_partition(const char *name, void **pp_private);
 
-kern_return_t add_paging_file(mach_port_t master_device_port,
-                             const char *file_name, int linux_signature);
 kern_return_t remove_paging_file (const char *file_name);
 
 void paging_space_info(vm_size_t *totp, vm_size_t *freep);
diff --git a/mach-defpager/setup.c b/mach-defpager/setup.c
index 7b32ea9f..8cd1fed2 100644
--- a/mach-defpager/setup.c
+++ b/mach-defpager/setup.c
@@ -237,56 +237,6 @@ page_write_file_direct(struct file_direct *fdp,
 }
 
 
-/* Compatibility entry points used by default_pager_paging_file RPC.  */
-
-kern_return_t
-add_paging_file(mach_port_t            master_device_port,
-       const char              *file_name,
-       int                     linux_signature)
-{
-  error_t err;
-  mach_port_t dev;
-  int sizes[DEV_GET_SIZE_COUNT];
-  natural_t count;
-  const char *devname = file_name;
-
-  assert_backtrace (linux_signature == 0);
-
-  if (!strncmp (file_name, "/dev/", 5))
-    devname += 5;
-
-  err = device_open (master_device_port, D_READ|D_WRITE, devname, &dev);
-  if (err)
-    return err;
-
-  count = DEV_GET_SIZE_COUNT;
-  err = device_get_status (dev, DEV_GET_SIZE, sizes, &count);
-  if (!err && count < DEV_GET_SIZE_COUNT)
-    err = EGRATUITOUS;
-  if (err)
-    mach_port_deallocate (mach_task_self (), dev);
-  else
-    {
-      struct file_direct *fdp;
-      fdp = malloc (offsetof (struct file_direct, runs[1]));
-      if (fdp == 0)
-       return ENOMEM;
-
-      fdp->device = dev;
-      fdp->fd_bsize = sizes[DEV_GET_SIZE_RECORD_SIZE];
-      fdp->bshift = ffs (sizes[DEV_GET_SIZE_RECORD_SIZE]) - 1;
-      fdp->fd_size = sizes[DEV_GET_SIZE_DEVICE_SIZE] >> fdp->bshift;
-      fdp->nruns = 1;
-      fdp->runs[0].start = 0;
-      fdp->runs[0].length = fdp->fd_size;
-
-      /* Now really do it.  */
-      create_paging_partition (file_name, fdp, 0, 0);
-    }
-
-  return err;
-}
-
 /*
  * Destroy a paging_partition given a file name
  */
diff --git a/sutils/swapon.c b/sutils/swapon.c
index 78a45908..2ee3cd7f 100644
--- a/sutils/swapon.c
+++ b/sutils/swapon.c
@@ -362,10 +362,8 @@ swaponoff (const char *file, int add, int skipnotexisting)
 {
   error_t err;
   struct store *store;
-  static int old_protocol;
   int quiet_now = 0;
 
- try_again:
   err = store_open (file, 0, 0, &store);
   if (err)
     {
@@ -377,23 +375,7 @@ swaponoff (const char *file, int add, int skipnotexisting)
       return err;
     }
 
-  /* Let's see what we've got.  */
-  if (old_protocol)
-    {
-      /* The default pager only lets us give a whole partition, and
-        it will read the signature page (but not insist on it).  */
-      if (! (store->flags & STORE_ENFORCED))
-       {
-         error (0, 0, "%s: Can only page to the entire device", file);
-         return EINVAL;
-       }
-      /* If we want to require the signature, we can check that it is
-        actually there even though we won't be the one interpreting it.  */
-      if (require_signature
-         && check_signature (file, &store, 1, quiet_now) != 0)
-       return EINVAL;
-    }
-  else if (ignore_signature)
+  if (ignore_signature)
     verbose ("%s: %uk swap space",
             file, (unsigned int) (store->size / 1024));
   else
@@ -420,38 +402,15 @@ swaponoff (const char *file, int add, int skipnotexisting)
 
   get_def_pager();
 
-  if (old_protocol)
-    {
-      /* The default pager does not support the new protocol.
-        We tried it in a previous call (below) and got MIG_BAD_ID.  */
-      err = default_pager_paging_file (def_pager, dev_master, file, add);
-    }
-  else
+  recnum_t runs[store->num_runs * 2];
+  size_t i, j;
+  for (i = j = 0; i < store->num_runs; ++i)
     {
-      /* Try the new protocol, which will take our list of runs.  */
-      recnum_t runs[store->num_runs * 2];
-      size_t i, j;
-      for (i = j = 0; i < store->num_runs; ++i)
-       {
-         runs[j++] = store->runs[i].start;
-         runs[j++] = store->runs[i].length;
-       }
-      err = default_pager_paging_storage (def_pager, store->port,
-                                         runs, j, file, add);
-      if (err == MIG_BAD_ID)
-       {
-         /* The default pager does not support the new protocol.
-            We'll do the whole thing over again, since we have
-            different requirements now.  */
-         old_protocol = 1;
-         store_free (store);
-         if (! ignore_signature)
-           error (0, 0, "\
-default pager uses old protocol, does its own signature checking");
-         quiet_now = 1;
-         goto try_again;
-       }
+      runs[j++] = store->runs[i].start;
+      runs[j++] = store->runs[i].length;
     }
+  err = default_pager_paging_storage (def_pager, store->port,
+                                     runs, j, file, add);
 
   store_free (store);
 
diff --git a/trans/proxy-defpager.c b/trans/proxy-defpager.c
index bfeda063..878beffe 100644
--- a/trans/proxy-defpager.c
+++ b/trans/proxy-defpager.c
@@ -99,18 +99,6 @@ S_default_pager_object_pages (mach_port_t default_pager,
                                   pages, pagesCnt);
 }
 
-
-kern_return_t
-S_default_pager_paging_file (mach_port_t default_pager,
-                            mach_port_t master_device_port,
-                            const_default_pager_filename_t filename,
-                            boolean_t add)
-{
-  return allowed (default_pager, O_WRITE)
-    ?: default_pager_paging_file (real_defpager, dev_master, filename, add)
-    ?: mach_port_deallocate (mach_task_self (), master_device_port);
-}
-
 kern_return_t
 S_default_pager_paging_storage (mach_port_t default_pager,
                                mach_port_t device,
-- 
2.39.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]