[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.