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.