Age | Commit message (Collapse) | Author |
|
* dev.h (struct dev): New members store_name, readonly, rdev.
(dev_is_readonly): New inline function.
* dev.c (dev_open): Take just one arg, a struct dev whose store==0.
(dev_close): Shut down the store, but leave DEV intact with store==0.
* storeio.c (struct storeio_argp_params): New type.
(device, device_lock, store_name): Variables removed.
(readonly, inhibit_cache, enforce_store, rdev): Likewise.
These are all now members in struct storeio_argp_params or struct dev;
rdev now uses dev_t instead of int.
(parse_opt): Find a struct storeio_argp_params in STATE->input
and fill it in accordingly. Use makedev macro to construct rdev.
(trivfs_append_args): Find options in struct dev off control hook.
Use major, minor macros.
(main): Make DEVICE a local here, and point FSYS->hook at it.
Don't modify trivfs_allow_open.
(getroot_hook): New static function.
(trivfs_getroot_hook): New variable, initialized to that.
(check_open_hook): Find struct dev in CNTL->hook and
use new dev_open interface. Use dev_is_readonly.
(open_hook): Find struct dev in PEROPEN->cntl->hook and
check DEV->store.
(trivfs_modify_stat): Find struct dev in CRED->po->cntl->hook.
Use dev_is_readonly.
(trivfs_goaway): Find struct dev in FSYS->hook and use its lock.
(trivfs_S_fsys_syncfs): Find struct dev in CNTL->hook.
|
|
* dev.c (dev_read, dev_write): In DEV->inhibit_cache case,
handle zero (i.e. unknown) block_size by treating it as 1.
Use shift and bitwise-and rather than multiply and modulus
for block size arithmetic, since it's a known power of two.
|
|
* dev.c (dev_read: ensure_buf): Fix sloppy bugs in last change.
|
|
* dev.c (dev_open): Use mmap instead of vm_allocate.
(dev_read): Likewise.
|
|
* dev.c: Add #include <sys/mman.h> for munmap decl.
* pager.c: Likewise.
|
|
* dev.c (dev_buf_fill): Use munmap instead of vm_deallocate.
(dev_close): Likewise.
(dev_read): Likewise.
* pager.c (pager_write_page): Likewise.
|
|
* storeio.c (options): New option -c/--no-cache.
(inhibit_cache): New variable.
(parse_opt): Make -c set it.
(trivfs_append_args): Report --no-cache if set.
(check_open_hook): Pass inhibit_cache flag to dev_open.
* dev.h (struct dev): New member `inhibit_cache'.
(dev_open): Update decl.
* dev.c (dev_open): Take new arg inhibit_cache, store in new dev.
If set, don't initialize buf_offs, io_lock, pager, pager_lock.
(dev_read, dev_write): If DEV->inhibit_cache is set, allow only
whole-block i/o: EINVAL for non-whole-block attempts.
* pager.c (dev_get_memory_object): If DEV->inhibit_cache is set, don't
make our own pager; if store_map returns EOPNOTSUPP, so do we.
|
|
|
|
Remove CLASSES argument to store_parsed_open.
(dev_buf_fill, dev_read, dev_write):
Use void * buffers.
|
|
(dev_open, dev_close): Remove ifdef'd-out code for allocating
DEV's buffer with valloc; other things depend on it being vm_allocated.
|
|
|