2001-12-28 Roland McGrath * 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. 2001-08-12 Neal H Walfield * pager.c: Include . (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. 2001-05-06 Marcus Brinkmann * dev.c (dev_open): Do not create/open the store with STORE_INACTIVE, as this doesn't work correctly. Inactivate the store afterwards instead. 2001-02-18 Marcus Brinkmann * 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). 2001-01-17 Roland McGrath * dev.c (dev_buf_discard): Don't check AMOUNT if store_write failed. 2001-01-16 Marcus Brinkmann * dev.c (dev_open): Add missing argument `classes' to invocation of store_create. * dev.h: Include for struct trivfs_control. 2001-01-16 Roland McGrath * 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. 2000-07-26 Mark Kettenis * Makefile (HURDLIBS): Reorder libs such that the threads lib comes before the ports lib. This makes sure the functions in libthreads properly override the stubs in libports with the new dynamic linker semantics in glibc 2.2. 2000-03-19 Roland McGrath * io.c: Comments. * 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. 1999-11-24 Roland McGrath * storeio.c (trivfs_modify_stat): Clear writable bits if open store is readonly, not just if we got the --readonly switch. 1999-11-20 Roland McGrath * 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. 1999-11-14 Roland McGrath * io.c (trivfs_S_file_get_storage_info): Fail with EOPNOTSUPP when there is no store open. * 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. 1999-09-13 Roland McGrath * io.c: Reverted changes related to io_map_segment. 1999-09-07 Thomas Bushnell, BSG * io.c (trivfs_S_io_map): Renamed to ... (trivfs_S_io_map_segment): ... here, and accept parameter `index'. 1999-07-11 Roland McGrath * dev.c (dev_read: ensure_buf): Fix sloppy bugs in last change. 1999-07-09 Thomas Bushnell, BSG * dev.c (dev_open): Use mmap instead of vm_allocate. (dev_read): Likewise. 1999-07-10 Roland McGrath * dev.c: Add #include for munmap decl. * pager.c: Likewise. 1999-07-03 Thomas Bushnell, BSG * dev.c (dev_buf_fill): Use munmap instead of vm_deallocate. (dev_close): Likewise. (dev_read): Likewise. * pager.c (pager_write_page): Likewise. 1999-05-23 Roland McGrath * storeio.c (check_open_hook): Translate D_NO_SUCH_DEVICE to ENXIO. 1999-05-09 Mark Kettenis * pager.c (dev_stop_paging): Do not try to count ports in PAGER_PORT_BUCKET if it has not been created. 1999-04-30 Mark Kettenis * 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. 1999-01-31 Roland McGrath * 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". 1999-01-28 Roland McGrath * io.c (trivfs_S_file_syncfs): Fix inverted test. Reported by OKUJI Yoshinori . 1999-01-27 Roland McGrath * 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. 1998-10-20 Roland McGrath * dev.c (dev_buf_fill): Add braces to silence gcc warning. 1998-07-20 Roland McGrath * storeio.c (main): Fix return type to int, and use return. Wed Aug 20 14:07:05 1997 Thomas Bushnell, n/BSG * pager.c (dev_get_memory_object): Deal with errors from pager_create properly. * pager.c (service_paging_requests): New args for ports_manage_port_operations_multithread. * storeio.c (main): Likewise. 1997-07-23 Miles Bader * io.c (trivfs_S_io_readable, trivfs_S_io_read, trivfs_S_io_map): Return EBADF instead of EINVAL. (trivfs_S_io_select): Don't bother returning EBADF. 1997-07-22 Miles Bader * io.c (trivfs_S_io_read): Return EINVAL instead of EBADF. (trivfs_S_io_map): Return EINVAL if CRED cannot be read or written. 1997-07-21 Miles Bader * Makefile (HURDLIBS): Add iohelp. 1997-07-17 Miles Bader * io.c (trivfs_S_io_map): Pass PROT argument to dev_get_memory_object. * pager.c (dev_get_memory_object): Add PROT arg. Use store_map. * dev.h (dev_get_memory_object): Add PROT arg. 1997-07-16 Miles Bader * pager.c (pager_read_page): Initialize READ to 0. * pager.c (dev_get_memory_object): Implement correctly. (dev_stop_paging): Work entirely by flushing user pagers; don't kill pager. (pager_clear_user_data): Zero our pointer to the pager. * io.c (trivfs_S_io_map): Make sure there are enough references to MEMOBJ for both read & write ports. Wed Feb 19 21:42:45 1997 Miles Bader * storeio.c (fsys_port_class, root_port_class, port_bucket, trivfs_protid_portclasses, trivfs_protid_nportclasses, trivfs_cntl_portclasses, trivfs_cntl_nportclasses): Variables removed. (main): Don't set or use port class/bucket variables, let trivfs_startup do it. Add FSYS variable. (doc): Make an initialized array. (parse_opt): New function (was nested in main). (argp, argp_kids): New variables (were nested in main). (trivfs_goaway): Get ROOT_PORT_CLASS from FSYS. Fri Nov 15 17:54:10 1996 Thomas Bushnell, n/BSG * storeio.c (trivfs_check_open_hook): New arg syntax. (check_open_hook): Likewise. Thu Oct 24 16:24:53 1996 Miles Bader * storeio.c (main): Use elements of type `struct argp_child' for KIDS. Mon Oct 7 16:38:06 1996 Miles Bader * io.c (trivfs_S_file_get_storage_info): If necessary to enforce security, make a copy of STORE and inactivate it before returning. Thu Sep 26 14:26:17 1996 Miles Bader * storeio.c (trivfs_S_file_check_access): Function removed (trivfs default is now sufficient). Tue Sep 24 15:52:04 1996 Miles Bader * storeio.c (trivfs_S_file_check_access): New function. (check_open_hook): Return EROFS if O_WRITE on a readonly device. Mon Sep 23 17:21:23 1996 Miles Bader * storeio.c (trivfs_append_args): Make ARGZ_LEN of type `size_t *'. Narrow scope of BUF. : New include. Thu Sep 19 18:12:48 1996 Miles Bader * storeio.c (trivfs_append_args): New function. Wed Sep 18 15:16:27 1996 Miles Bader * io.c (trivfs_S_io_read, trivfs_S_io_write): Use void * buffers. * open.h (open_read, open_write): Likewise. * open.c (open_read, open_write): Likewise. * dev.h (struct dev, dev_read, dev_write): Likewise. * dev.c (dev_buf_fill, dev_read, dev_write): Likewise. * pager.c (pager_read_page): Cast BUF into void ** for dev_read. * storeio.c (main): Use STORE_PARAMS variable to get result from parsing STORE_ARGP. * dev.c (dev_open): Remove CLASSES argument to store_parsed_open. Thu Sep 19 17:18:11 1996 Thomas Bushnell, n/BSG * Makefile (HURDLIBS): New variable. (storeio): Deleted special dependencies. Fri Sep 13 11:05:06 1996 Miles Bader * storeio.c (argp_program_version): New variable. : New include. Tue Sep 10 17:13:55 1996 Miles Bader * dev.c (dev_rw): Return EINVAL instead of EIO for too-large offsets. * dev.c (dev_open, dev_close): Remove ifdef'd-out code for allocating DEV's buffer with valloc; other things depend on it being vm_allocated. * io.c (trivfs_S_file_get_storage_info): Use store_return.