Age | Commit message (Collapse) | Author |
|
* dev.h (struct dev): New member `no_fileio' (flag).
* storeio.c (options): Add --no-file-io/-F.
(parse_opt): Parse it to set PARAMS->dev->no_fileio.
(trivfs_append_args): Add --no-file-io if it's set.
* dev.c (dev_open): Pass STORE_NOFILEIO flag if DEV->no_fileio is set.
|
|
* pager.c: Include <errno.h>.
(pager_read_page): Use memset, not bzero.
* storeio.c (check_open_hook): Typo fix in comment.
(trivfs_modify_stat): STORE->size is a store_offset_t.
It not a vm_size_t.
|
|
* dev.h (struct dev): New member nperopens.
* storeio.c (open_hook): Hold device lock and check if this is the
first open. If yes, activate the store.
(close_hook): Hold global_lock and check if this was the last
open. If yes, inactivate the store.
* dev.c (dev_open): Open the store with STORE_INACTIVE
(in store_parsed_open as well as in store_create).
|
|
* storeio.c (parse_opt): Set PARAMS->store_params.store_optional.
(storeio_fsys): New global variable.
(main): Use it.
* dev.h: Declare it.
* dev.c (dev_open): If DEV->store_name is null, open the underlying
node using store_create.
|
|
* 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.
|
|
* storeio.c (trivfs_modify_stat): Clear writable bits if open store is
readonly, not just if we got the --readonly switch.
|
|
* storeio.c (check_open_hook): Don't check for D_NO_SUCH_DEVICE here.
Translation to ENXIO now done in libstore.
* dev.h (struct dev): New member `enforced'.
* storeio.c (enforce_store): New variable.
(options, parse_opt, trivfs_append_args): Grok new option
--enforced/-e to set enforce_store.
(check_open_hook): Set DEVICE->enforced from enforce_store.
* io.c (trivfs_S_file_get_storage_info): If DEV->enforced is set
and the store flags lack STORE_ENFORCED, then return STORAGE_OTHER.
|
|
* storeio.c (check_open_hook): Translate D_NO_SUCH_DEVICE to ENXIO.
|
|
* storeio.c (trivfs_modify_stat): Do not assume that we have the
device open in the caculation of st_mode. If the device is not
open, only return S_IFCHR if inhibit_cache is set.
|
|
* storeio.c (trivfs_modify_stat): Return S_IFCHR if block size is 1.
|
|
* storeio.c (trivfs_modify_stat): Return S_IFCHR iff inhibit_cache
set, otherwsie S_IFBLK. For a block-addressed device, S_IFCHR means
"must do whole-block i/o".
|
|
* 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.
|
|
* storeio.c (main): Fix return type to int, and use return.
|
|
* pager.c (service_paging_requests): New args for
ports_manage_port_operations_multithread.
* storeio.c (main): Likewise.
|
|
New function (was nested in main).
(doc):
Make an initialized array.
(fsys_port_class, root_port_class, port_bucket, trivfs_protid_portclasses,
trivfs_protid_nportclasses, trivfs_cntl_portclasses,
trivfs_cntl_nportclasses):
Variables removed.
(argp, argp_kids):
New variables (were nested in main).
(main):
Don't set or use port class/bucket variables, let trivfs_startup do it.
Add FSYS variable.
(trivfs_goaway):
Get ROOT_PORT_CLASS from FSYS.
|
|
* storeio.c (trivfs_check_open_hook): New arg syntax.
(check_open_hook): Likewise.
|
|
Use elements of type `struct argp_child' for KIDS.
|
|
Function removed (trivfs default is now sufficient).
|
|
Return EROFS if O_WRITE on a readonly device.
(trivfs_S_file_check_access):
New function.
|
|
Make ARGZ_LEN of type `size_t *'.
Narrow scope of BUF.
<argz.h>:
New include.
|
|
Use STORE_PARAMS variable to get result from parsing STORE_ARGP.
(trivfs_append_args):
New function.
|
|
<version.h>: New include.
|
|
|