bug-hurd
[Top][All Lists]
Advanced

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

Re: [PATCH hurd] Remove default_pager_paging_file RPC from default pager


From: Samuel Thibault
Subject: Re: [PATCH hurd] Remove default_pager_paging_file RPC from default pager
Date: Sat, 15 Apr 2023 08:34:33 +0200
User-agent: NeoMutt/20170609 (1.8.3)

Applied, thanks!

Flavio Cruz, le sam. 15 avril 2023 01:12:20 -0400, a ecrit:
> 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
> 
> 

-- 
Samuel
---
Pour une évaluation indépendante, transparente et rigoureuse !
Je soutiens la Commission d'Évaluation de l'Inria.



reply via email to

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