2007-08-16 Samuel Thibault * dir.c (diskfs_lookup_hard, diskfs_dirempty): Call diskfs_set_node_atime instead of setting dp->dn_set_atime. 2005-07-12 Marcus Brinkmann * pager.c (diskfs_get_filemap): Initialize upi->max_prot to PROT. 2004-11-08 Ognyan Kulev * storeinfo.c (diskfs_S_file_get_storage_info): Cast -1 to store_offset_t in conditional operator, instead of implicitly cast to uint32_t. 2004-01-10 Roberto Reale * ext2fs.h (ext2_getblk): Fix typo in comment. * getblk.c (ext2_getblk): Likewise. * dir.c (diskfs_get_directs): Likewise. 2002-10-08 Roland McGrath * ext2fs.h (struct disknode): New member `info_i_translator'. * inode.c (diskfs_set_translator): Update NP->dn->info_i_translator. * ialloc.c (diskfs_alloc_node): Clear a nonzero translator block in the on-disk inode just as we do for data blocks. 2002-07-31 Roland McGrath * dir.c (diskfs_direnter_hard): Fix test in last change. 2002-06-08 Roland McGrath * inode.c (diskfs_cached_lookup): Use ino_t for argument. * ialloc.c (diskfs_free_node): Use %Ld format for ino_t/off_t values. * pager.c (diskfs_grow, pager_unlock_page): Likewise. * inode.c (read_node): Likewise. * dir.c (diskfs_get_directs): Likewise. * dir.c (diskfs_direnter_hard): Use size_t for OLDSIZE. Fail with EOVERFLOW when it would exceed that width. 2002-04-05 Neal H Walfield * pager.c (diskfs_grow): Correctly recalculate NEW_SIZE. 2002-05-29 Roland McGrath * dir.c (dirscanblock): Use %z format. (diskfs_get_directs): Likewise. * ext2fs.c (main): Likewise. * hyper.c (get_hypermetadata): Likewise. * pager.c (pager_unlock_page): Likewise. 2002-05-28 Roland McGrath * ext2fs.c (diskfs_append_args): unsigned -> size_t * dir.c (count_dirents): int -> size_t (diskfs_get_directs): u_int -> size_t 2001-11-20 Neal H Walfield * ext2fs.c (diskfs_synchronous): Removing superfluous zero initializer. (store): Likewise. (store_parsed): Likewise. (diskfs_disk_name): Likewise. (ext2_debug_flag): Likewise. 2002-04-01 Neal H Walfield * pager.c (diskfs_grow): Fix inverted logic. 2001-11-20 Neal H Walfield * pager.c (MAX_FREE_PAGE_BUFS): Remove obsolete macro. (FREE_PAGE_BUFS): New macro. (free_page_bufs_lock): Make this global variable local to get_page_buf. (free_page_bufs): Likewise. (num_free_page_bufs): Likewise. (get_page_buf): Reimplement using a new caching algorithm based on preallocation of COW zero pages. (free_page_buf): Likewise. (find_block): Documentation fixes. 2002-03-11 Roland McGrath * Makefile (ext2fs.static): Depend on $(boot-store-types:%=../libstore/libstore_%.a). 2002-01-03 Roland McGrath * inode.c (write_node): Never clear i_translator here. That is only done by diskfs_set_translator. 2001-11-21 Roland McGrath * inode.c (read_node): Just always call getpid for the fsid value. 2001-08-17 Marcus Brinkmann * ialloc.c (diskfs_alloc_node): Remove warnings about stale nonzero st_blocks or st_size. 2001-08-16 Roland McGrath * inode.c (write_node): Leave i_size, i_blocks, i_translator unchanged when the inode has been deleted. Suggested by Marcus Brinkmann. * dir.c (diskfs_dirremove_hard): Remove redundant DP->dn_set_mtime set. Noticed by Marcus Brinkmann. 2001-08-09 Roland McGrath * inode.c (diskfs_get_translator): Fail with EFTYPE if the length field stored on disk is unreasonable. Don't crash on ENOMEM. Use memcpy instead of bcopy. 2001-06-09 Mark Kettenis * inode.c (diskfs_set_statfs): If number of free blocks is less than the number of reserved blocks, set the number of available blocks to 0. 2001-03-03 Roland McGrath * hyper.c (zeroblock, modified_global_blocks): Remove superfluous zero initializers. (allocate_mod_map): Likewise for static here. (get_hypermetadata): Don't munmap old ZEROBLOCK, just keep it. Allocate ZEROBLOCK with PROT_READ. 2001-02-28 Roland McGrath * dir.c (count_dirents): Check for bogus rec_len having pushed us past the end. 2001-01-08 Marcus Brinkmann * ext2fs.c (main): Use %Ld instead %ld to print store->size. * hyper.c (get_hypermetadata): Likewise. 2001-01-07 Marcus Brinkmann * dir.c: Make diskfs_dirstat_size const. 2000-12-21 Marcus Brinkmann * pager.c: Include . (create_disk_pager): Panic if malloc fails. Reported by Igor Khavkine . * inode.c (diskfs_get_translator): If malloc fails, set err to ENOMEM. Initialize err with 0, and return it at the end of the function. Reported by Igor Khavkine . 2000-12-02 Roland McGrath * inode.c (write_all_disknodes): Call diskfs_set_node_times after pokel_sync, since it might delay a little. (write_node): Remove assert that dn_set_mtime et al are clear. It is ok if they are set in parallel, because the latter setting will be carried out eventually. 2000-10-01 Roland McGrath * truncate.c (diskfs_truncate): Use & instead of %. 2000-11-30 Marcus Brinkmann * dir.c (diskfs_lookup_hard): If name is too long, clear DS before returning ENAMETOOLONG. 2000-10-01 Roland McGrath * inode.c (write_node): Use memcpy instead of a loop. 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-07-26 Marcus Brinkmann * truncate.c (trunc_indirect): Add missing argument to pager_flush_some. 2000-07-25 Thomas Bushnell, BSG * truncate.c (trunc_indirect): Before freeing an indirect block, remove it from the disk pager's kernel cache. 2000-03-09 Roland McGrath * balloc.c (ext2_free_blocks, ext2_new_block): Fix formats to avoid -Wformat warnings. * getblk.c (ext2_alloc_block, inode_getblk, ext2_getblk): Likewise. * ialloc.c (ext2_count_free_inodes): Likewise. * truncate.c (trunc_direct): Likewise. * pager.c (pending_blocks_write, diskfs_grow): Likewise. 2000-03-03 Roland McGrath * dir.c (diskfs_get_directs): Don't allocate buffer for *DATA until after scanning for ENTRY and possibly returning EOF. 2000-02-05 Roland McGrath * ext2_fs.h: Update from Linux 2.3.42 version (ext2_fs_i.h unchanged). * inode.c (check_high_bits): In accordance with Linux 2.3.42 behavior, permit 32-bit uids on non-hurd filesystems unless i_dtime is zero (which indicates an extra old Linux ext2 implementation I guess). 2000-01-16 Mark Kettenis * pager.c (file_pager_write_page): Lock NODE->dn->alloc_lock before accessing NODE->allocsize. Fixes Debian bug #40302. 1999-10-13 Roland McGrath * ext2fs.c (diskfs_name_max): New variable. 1999-10-06 Roland McGrath * hyper.c (get_hypermetadata): Avoid overflow in calculation of disk size vs superblock-specified requirement. Add a warning for wasted disk blocks after last filesystem block. 1999-10-03 Roland McGrath * dir.c (ext2_file_type): #if 0 out this variable. (diskfs_get_directs): #if 0 out code to interpret file_type field and set d_type. Instead, always return DT_UNKNOWN for now. * dir.c (file_type_ext2): #if 0 out. (diskfs_direnter_hard): #if 0 out code to set file_type field in directory entries. Instead, always set it to zero. 1999-10-03 Roland McGrath * bitmap.c (ffz): Subtract one from (1-origin) result of ffs to get our (0-origin) result. * Makefile (LCLHDRS): bitmap.h -> bitmap.c * ext2fs.h (test_bit, set_bit, clear_bit): Rewritten to operate on 32-bit words instead of bytes. * truncate.c (diskfs_truncate): Add missing call to diskfs_end_catch_exception. * ext2fs.h (group_desc): Inline function replaced with macro. (group_desc_image): New variable. * hyper.c (get_hypermetadata): Initialize it. * ext2fs.h (sblock_block): Declare new variable. (SBLOCK_LBLOCK): Macro removed. (SBLOCK_OFFS): Define in terms of sblock_block. * ext2fs.c (options): Add --sblock/-S. (parse_opt): Parse it to set sblock_block. * hyper.c (sblock_block): New variable. (get_hypermetadata): Use sblock_block instead of constant SBLOCK_BLOCK. * ext2fs.c (options): List --debug/-D unconditionally, adding to help text #ifndef EXT2FS_DEBUG (parse_opt): Always grok -D. #ifndef EXT2FS_DEBUG, reject it with message saying debugging support not compiled in. * hyper.c (get_hypermetadata): Use EXT2_MAX_BLOCK_SIZE instead of hard-wired 8192. Don't use ffs to compute log2_block_size, and don't check for the impossible case of non-power-of-two block size (the block size specification we start with is given as a power of two!). * ext2fs.h (block_size): Change type to unsigned int. (BLOCKSIZE_SCALE): Just use SBLOCK->s_log_block_size directly. * hyper.c (get_hypermetadata): Fix printf formats to silence warning. * dir.c (dirscanblock): Likewise. * dir.c (file_type_ext2): New const variable, map DT_* -> EXT2_FT_*. (diskfs_direnter_hard): Move initialization of directory entry content fields out of switch; use memcpy or memmove as appropriate, instead of bcopy. Set file_type field in new directory entry to appropriate type for the node, or to zero if the filesystem doesn't have the EXT2_FEATURE_INCOMPAT_FILETYPE flag set. 1999-10-02 Roland McGrath * ext2fs.h (SBLOCK_LBLOCK): New macro, filesystem block number of sb. (BLOCKSIZE_SCALE): New macro for converting min-blocks to fs blocks. (group_desc): Fix calculation of offset from superblock, so it works properly with block_size != EXT2_MIN_BLOCK_SIZE. * ext2fs.h (EXT2FS_EI): New macro, use it for all extern inlines. * bitmap.c (count_free, find_next_zero_bit, find_first_zero_bit): Make these all static inline. (ffz, ffz_nibble_map): Function and variable removed. (ffz): Replace decl with macro defined in terms of ffs. * ext2fs.h (count_free, find_next_zero_bit, find_first_zero_bit, ffz): Remove these declarations. * Makefile (SRCS): Remove bitmap.c. (LCLHDRS): Add bitmap.c here instead. * balloc.c, ialloc.c: #include "bitmap.c" here. 1999-10-01 Roland McGrath * bitmap.c (memscan): Function removed. * ext2fs.h: Removed its decl. * balloc.c (memscan): New static function, defined using memchr. 1999-09-13 Roland McGrath * dir.c, truncate.c, pager.c: Reverted changes related to io_map_segment. 1999-09-09 Roland McGrath * Makefile (makemode): server -> servers. (targets): Replaced with target; remove ext2fs.static. (ext2fs.static-LDFLAGS): Variable removed. (ext2fs, ext2fs.static): Remove deps. 1999-09-07 Thomas Bushnell, BSG * dir.c (diskfs_lookup_hard): Pass additional parameter to diskfs_get_filemap. (diskfs_dirempty): Likewise. * truncate.c (force_delayed_copies): Likewise. * pager.c (diskfs_get_filemap): Accept additional parameter. 1999-09-04 Thomas Bushnell, BSG * pager.c (file_pager_write_page): Don't report errors on writes that extend past NODE->allocsize. This avoids a race between sync and truncate. Reported by Mark Kettenis . 1999-08-23 Roland McGrath * ext2_fs.h, ext2_fs_i.h: Replaced with Linux 2.3.14 versions. * ext2fs.h (i_mode_high): New macro, missing from ext2_fs.h. * inode.c (read_node): Don't set INFO->i_version. Extract INFO->i_dir_acl value only for a directory; otherwise use zero and instead extract INFO->i_high_size. Fail with EFBIG if INFO->i_high_size is nonzero. * ialloc.c (diskfs_alloc_node): Propagate initial value of i_flags from directory, as Linux 2.3.14 does. * inode.c (write_node): Get i_flags from NP->dn->info instead of from the disk inode, so we can have modified the in-core version. * dir.c (diskfs_direnter_hard, diskfs_dirremove_hard, diskfs_dirrewrite_hard): Clear EXT2_BTREE_FL flag bit from DP->dn->info.i_flags after modifying the directory (this is what Linux 2.3.14 does). * inode.c (read_node): i_version -> i_generation * inode.c (write_node): Likewise. * balloc.c (ext2_free_blocks): Handle freeing across group boundary, as Linux 2.3.14 does. * balloc.c (ext2_check_blocks_bitmap): If RO_COMPAT_SPARSE_SUPER feature flag is set, or if group number is not a power of 3, 5, or 7 (I don't know why; this is what Linux 2.3.14 does), skip tests for superblocks and descriptor blocks being free in bitmap. * dir.c: Replace `struct ext2_dir_entry' with `struct ext2_dir_entry_2' in all uses. (ext2_file_type): New static const variable. (diskfs_get_directs): Set d_type member based on file_type field in directory entry. * balloc.c (ext2_new_block): Take new arg PREALLOC_GOAL. Use that instead of hard-coded 8 as maximum of blocks to preallocate. Also test that instead of PREALLOC_COUNT to decide whether to try any preallocation at all. * getblk.c (ext2_alloc_block): Pass new arg to ext2_new_block. Use EXT2_DEFAULT_PREALLOC_BLOCKS as default (replaces hard-coded 8); For a regular file, use SBLOCK->s_prealloc_blocks before default. For a directory, use SBLOCK->s_dir_prealloc_blocks if the EXT2_FEATURE_COMPAT_DIR_PREALLOC flag is set, otherwise zero. * inode.c (diskfs_set_translator): Pass new arg (zero). 1999-07-11 Roland McGrath * dir.c (diskfs_get_directs): Fix sloppy bugs in last change. * hyper.c (allocate_mod_map): Likewise. * pager.c (get_page_buf): Likewise. 1999-07-10 Roland McGrath * ext2fs.h: Add #include for munmap decl. 1999-07-06 Thomas Bushnell, BSG * dir.c (diskfs_get_directs): Use mmap instead of vm_allocate. * hyper.c (allocate_mod_map): Likewise. (get_hypermetadata): Likewise. * pager.c (get_page_buf): Likewise. * hyper.c (diskfs_readonly_changed): Use mprotect instead of vm_protect. 1999-07-03 Thomas Bushnell, BSG * dir.c (diskfs_lookup_hard): Use munmap instead of vm_deallocate. (diskfs_direnter_hard): Likewise. (diskfs_dirremove_hard): Likewise. (diskfs_dirrewrite_hard): Likewise. (diskfs_dirempty): Likewise. (diskfs_drop_dirstat): Likewise. (diskfs_get_directs): Likewise. * hyper.c (allocate_mod_map): Likewise. (get_hypermetadata): Likewise. * pager.c (free_page_buf): Likewise. * truncate.c (poke_pages): Likewise. 1999-06-29 Thomas Bushnell, BSG * hyper.c (diskfs_readonly_changed): Adjust whether the store should permit writes too. 1999-06-19 Roland McGrath * pager.c (free_page_buf): Fix type cast. Tue Jun 15 21:51:58 1999 Thomas Bushnell, BSG * pager.c: Clamp the number of free pages we keep around to some reasonably small value. Patch from Mark Kettenis . 1999-06-15 Thomas Bushnell, BSG * inode.c (diskfs_validate_flags_change): Invert sense of test wrt bits that haven't yet been defined. Reported by Kalle Olavi Niemitalo . 1999-05-23 Roland McGrath * ialloc.c (diskfs_alloc_node): Frob printf format to suppress warning. * getblk.c (ext2_getblk): Likewise. * balloc.c (ext2_free_blocks): Likewise. * hyper.c (get_hypermetadata): Likewise. * ialloc.c (diskfs_alloc_node): If creator_os is not EXT2_OS_HURD, suppress warnings about stale nonzero st_blocks or st_size. 1999-05-19 Roland McGrath * ext2fs.c (main): Include store size in panic msg when it's too small. 1999-01-23 Roland McGrath * ext2fs.c (main): Use diskfs_init_main. 1998-12-27 Roland McGrath * inode.c (diskfs_set_statfs): Remove __ from struct members. 1998-12-21 Mark Kettenis * inode.c (diskfs_set_statfs): Fill in statfs members that are used to implement statvfs. 1998-12-27 Roland McGrath * ext2fs.c (main): Pass ARGP_IN_ORDER flag to argp_parse because diskfs options need it. 1998-12-20 Roland McGrath * inode.c (diskfs_write_disknode): Add braces to silence warning. * pager.c (file_pager_read_page): Likewise. * storeinfo.c: Don't include . 1998-09-04 Roland McGrath * dir.c (dirscanblock): Fix defn with `const'. (diskfs_direnter_hard): Likewise. * inode.c (diskfs_create_symlink_hook): Likewise. (write_symlink): Likewise. * pager.c: strings.h -> string.h; gets strerror decl. * ext2fs.c (main): Fix return type to int. * dir.c (diskfs_lookup_hard): Fix defn with `const'. * inode.c (diskfs_set_translator): Likewise. Wed Aug 20 14:28:00 1997 Thomas Bushnell, n/BSG * dir.c (diskfs_lookup_hard): Cope with error return from diskfs_get_filemap. (diskfs_dirempty): Cope (poorly) with error return from diskfs_get_filemap. * truncate.c (force_delayed_copies): Likewise. * pager.c (diskfs_get_filemap): If pager_create fails, return error to caller. Mon Jun 30 17:34:27 1997 Thomas Bushnell, n/BSG * ext2fs.c (diskfs_readonly): Delete variable definition. (main): If the store cannot be made writable, then set diskfs_hard_readonly and diskfs_readonly. 1997-06-20 Miles Bader * pager.c (disk_pager_read_page): Initialize READ to 0 to force store_read to allocate a buffer. 1997-06-18 Miles Bader * ext2fs.c (main): Get rid of device-block-size-is-power-of-2 check. Tue Jun 3 17:18:35 1997 Miles Bader * inode.c (read_node): Don't assert that st_blocks is zero for non-dir/file/long-symlink inodes. Tue Nov 19 18:30:37 1996 Miles Bader * inode.c (read_node): If SBLOCK->s_creator_os != EXT2_OS_HURD, set NP->author_tracks_uid to true. Mon Nov 18 17:14:31 1996 Miles Bader * ialloc.c (diskfs_alloc_node): Clear S_IPTRANS bit in ST->st_mode instead of NP->istranslated. * inode.c (read_node): Set S_IPTRANS bit in ST->st_mode (and clear S_ITRANS) rather than NP->istranslated. (write_node): Don't write S_IPTRANS to disk. (diskfs_set_translator): Frob S_IPTRANS bit rather than istranslated field. Sat Nov 16 17:26:20 1996 Thomas Bushnell, n/BSG * storeinfo.c (diskfs_S_file_get_storage_info): diskfs_isuid -> idvec_contains. Tue Nov 12 17:53:08 1996 Miles Bader * inode.c (diskfs_validate_flags_change): New function. (write_node): Convert generic flags in ST->st_flags to ext2- specific flags in DI->i_flags. (read_node): Renamed from read_disknode; all callers changed. Convert ext2-specific flags on disk to generic flags in ST. [!UF_APPEND] (UF_APPEND): New macro (temporary). [!UF_NODUMP] (UF_NODUMP): New macro (temporary). [!UF_IMMUTABLE] (UF_IMMUTABLE): New macro (temporary). : New include. Thu Oct 24 16:24:05 1996 Miles Bader * ext2fs.c (startup_children, runtime_children): New variables. (startup_parents, runtime_parents): Variables removed. (startup_argp, runtime_argp): Use new *_CHILDREN variables instead of corresponding *_PARENT ones. Wed Oct 9 13:30:15 1996 Miles Bader * storeinfo.c (diskfs_S_file_get_storage_info): Return ports with MACH_MSG_TYPE_COPY_SEND, not MACH_MSG_TYPE_MAKE_SEND. Tue Oct 8 23:25:53 1996 Miles Bader * storeinfo.c (diskfs_S_file_get_storage_info): If st_size indicates a lower value for NUM_FS_BLOCK, use it instead of the value derived from st_blocks. Mon Oct 7 15:48:49 1996 Miles Bader * storeinfo.c (diskfs_S_file_get_storage_info): Typo. Fri Oct 4 23:51:05 1996 Miles Bader * storeinfo.c (diskfs_S_file_get_storage_info): Add security check, and deactivate FILE_STORE if necessary. Mon Sep 30 15:40:53 1996 Miles Bader * storeinfo.c (diskfs_S_file_get_storage_info): Set *PORTS_TYPE. Thu Sep 19 17:57:07 1996 Miles Bader * Makefile (HURDLIBS): Add store. Wed Sep 18 15:28:32 1996 Miles Bader * ext2fs.c (main): Remove CLASSES argument to store_parsed_open. Use STORE_PARAMS variable to get result from parsing STORE_ARGP. (diskfs_extra_version): Put `GNU Hurd' in here. Fri Sep 13 00:15:56 1996 Miles Bader * ext2fs.c (diskfs_append_args): Renamed from diskfs_get_options. Don't initialize *ARGZ & *ARGZ_LEN anymore, or deallocate on errors. Append store args too. * pager.c (file_pager_read_page:do_pending_reads, pager_unlock_page, pending_blocks_write, diskfs_grow, find_block): Use filesystem blocks, not device blocks, in block<->offset/size conversions. * Makefile (ext2fs ext2fs.static): Add ../libstore/libstore.a. 1996-09-12 Miles Bader * ext2fs.c (diskfs_disk_name): Renamed from STORE_NAME. Wed Sep 11 12:59:28 1996 Miles Bader * pager.c (create_disk_pager): Create PAGER_BUCKET. Pass in new args to diskfs_pager_setup (renamed from disk_pager_setup). (disk_image): New variable. (service_paging_request): Function removed. (diskfs_shutdown_pager): Use DISKFS_DISK_PAGER instead of DISK_PAGER. * ext2fs.h (disk_image): New declaration. (sync_global_ptr): Use DISKFS_DISK_PAGER instead of DISK_PAGER. * ext2fs.c (main, diskfs_reload_global_state): Use DISKFS_DISK_PAGER instead of DISK_PAGER. * ext2fs.c (main): Change store_parsed_get_name to store_parsed_name. * storeinfo.c (diskfs_S_file_get_storage_info): Clone STORE before remapping it. Tue Sep 10 17:12:16 1996 Miles Bader * storeinfo.c (diskfs_S_file_get_storage_info): Rewritten to use store functions. Mon Sep 9 11:10:11 1996 Miles Bader * ext2fs.c (main): Use store fields instead of diskfs variables. (store, store_parsed, store_name): New variables. (free_page_bufs, free_page_bufs_lock): Variables removed. (get_page_buf, free_page_buf): Functions removed. , : New includes. * ext2fs.h (store_parsed, store_name): New declarations. (get_page_buf, free_page_buf): Declarations removed. * hyper.c : New include. * pager.c : New include. (file_pager_write_pager): Make BUF void *. (file_pager_read_page): Make BUF void **, NEW_BUF void *, and LENGTH size_t. Pass &LENGTH to store_read, not LENGTH. (pending_blocks_write): Make PAGE_BUF void *, and LENGTH size_t. Check amount written, and return EIO if it's wrong. (disk_pager_read_page): Make BUF void **, and LENGTH size_t. Check amount read, and return EIO if it's wrong. (disk_pager_write_page): Make BUF void *, and LENGTH size_t. Check amount written, and return EIO if it's wrong. (pager_read_page, pager_read_page): Convert BUF to a pointer when calling work functions. (struct pending_blocks): Make BUF void *. (free_page_bufs, free_page_bufs_lock): New variables. (get_page_buf, free_page_buf): New functions. Sun Sep 8 18:47:10 1996 Miles Bader * hyper.c (diskfs_readonly_changed): Use STORE->size. (get_hypermetadata): Use STORE->size & STORE->block_size. * pager.c (file_pager_read_page, pending_blocks_write, disk_pager_read_page, disk_pager_read_page, disk_pager_write_page, pager_report_extent, find_block, pager_unlock_page, diskfs_grow): Use store_ operations instead of the old device ones, and some store fields instead of globals. * inode.c (read_disknode): Use STORE->log2_block_size instead of LOG2_BLOCK_SIZE. * ext2fs.h (store): New declaration. * ext2fs.c (startup_parents): Use diskfs_store_startup_argp instead of diskfs_std_device_startup_argp. (startup_parents, startup_argp, runtime_parents, runtime_argp, options, parse_opt, diskfs_get_options): Define always, not just when EXT2FS_DEBUG is defined. (parse_opt): Propagate our input to the first child argp. (parse_opt, diskfs_get_options): Guard debug-specific bits with #ifdef EXT2FS_DEBUG. Thu Sep 12 16:41:20 1996 Thomas Bushnell, n/BSG * Makefile (HURDLIBS): New variable. (ext2fs ext2fs.static): Depend on $(library_deps) instead of explicit list. Fri Sep 6 16:03:11 1996 Thomas Bushnell, n/BSG * ext2fs.c: Include . (diskfs_major_version, diskfs_minor_version, diskfs_edit_version): Deleted variables. (diskfs_server_version): New variable. Thu Aug 29 16:59:51 1996 Miles Bader Changes from ufs/dir.c: * dir.c (diskfs_lookup_hard): When setting ds->stat to EXTEND, set ds->idx by looking at the size of the file. After successful dirscanblock, record index where we finished in DP->dn->dir_idx. Start searches at that index. (dirscanblock): Size dirents correctly when mallocing it. (diskfs_direnter_hard): Be more careful when sizing or resizing dirents. Correctly set to -1 all the new entries we create after realloc call. * ext2fs.h (struct disknode): New member `dir_idx'. * inode.c (diskfs_cached_lookup): Initialize DN->dir_idx. * dir.c (diskfs_direnter_hard): Initialize OLDSIZE to quiet gcc. Sun Aug 18 01:45:42 1996 Miles Bader * pager.c (file_pager_read_page): Use get_page_buf to get a free page. (file_pager_read_page): Use free_page_buf to deallocate pages. * ext2fs.c (get_page_buf): Return 0 if we can't allocate. Thu Aug 15 14:55:01 1996 Miles Bader * ext2fs.c (diskfs_edit_version): Change to `1'. (diskfs_version_extra): New variable. * inode.c (read_disknode): Change assertion to allow non-zero st_size for anything, but assert that st_blocks == 0 for any case where we set allocsize to 0. * truncate.c (diskfs_truncate): Allow any sort of node to have a size without any blocks (as linux apparently does this sometimes with devices). Wed Aug 14 14:03:33 1996 Miles Bader * ext2fs.c (diskfs_minor_version): Change to `2'. Tue Aug 13 15:11:42 1996 Miles Bader * ext2_fs.h: Update to version from linux-2.0.12. * ialloc.c (ext2_alloc_inode, diskfs_free_node): Pass SBLOCK as a parameter to EXT2_FIRST_INO (v2.x change). * hyper.c (get_hypermetadata): Use EXT2_INODE_SIZE instead of sizeof (struct ext2_inode). Deal with various version 2.x features. * ext2fs.h (dino): Dont recalculate INODES_PER_BLOCK here. (ext2_debug): redefine macro after including ext2_fs.h. Mon Aug 12 13:48:17 1996 Miles Bader * ext2fs.c (diskfs_minor_version): Changed to `1'. * inode.c (read_disknode): Don't set allocsize for in-inode symlinks. (MAX_INODE_SYMLINK): New macro. (write_symlink, read_symlink): New functions. (diskfs_create_symlink_hook, diskfs_read_symlink_hook): New variables. * truncate.c (diskfs_truncate): For in-inode symlinks, just frob the size. * ext2fs.h (__u32, __u16, __u8, __s32, __s16, __s8): New types. * ext2_fs.h (u32, u16, u8, s32, s16, s8): All uses of these types changed to have a leading `__', and the definitions removed. * ext2_fs_i.h (u32, u16, u8, s32, s16, s8): All uses of these types changed to have a leading `__'. Mon Aug 12 11:18:37 1996 Thomas Bushnell, n/BSG * hyper.c (diskfs_set_hypermetadata): Return an error code now. Fri Aug 2 12:10:40 1996 Miles Bader * inode.c (diskfs_write_disknode): If WAIT is false, still record the write for later, using record_global_poke. Thu Aug 1 16:18:59 1996 Miles Bader * ext2_fs.h (ext2_debug_flag): New decl. (ext2_debug): Pay attention to EXT2_DEBUG_FLAG. * ext2fs.c [EXT2FS_DEBUG] (options, ext2_debug_flag): New variables. [EXT2FS_DEBUG] (parse_opt, diskfs_get_options): New functions. [EXT2FS_DEBUG] (startup_parents, startup_argp, runtime_parents, diskfs_runtime_argp): New variables. [!EXT2FS_DEBUG] (startup_argp): New macro. (main): Use STARTUP_ARGP instead of DISKFS_STD_DEVICE_STARTUP_ARGP. * pager.c (diskfs_grow): Fix ext2_debug format strings. * truncate.c (trunc_direct): Fix ext2_debug call. Sat Jul 20 00:58:44 1996 Miles Bader * ext2fs.h (struct disknode): Remove debugging info. (RECORD_LAST): Function removed. (LAST_BUFSZ): Macro removed. (enum last_act): Type removed. * inode.c (diskfs_cached_lookup): Don't initialize debugging info. * pager.c (file_pager_read_page, file_pager_write_page, pager_unlock_page, diskfs_grow): Don't record debugging info. * truncate.c (diskfs_truncate): Likewise. * pager.c (file_pager_read_page): Set NODE->dn->last_page_partially_writable if we return such a page. Fri Jul 19 15:02:24 1996 Miles Bader * pager.c (diskfs_grow): Rename OLD_END_BLOCK to END_BLOCK. Correctly determine whether to set DN->last_page_partially_writable after allocating new blocks. * pager.c (file_pager_read_page, file_pager_write_page): Pass NODE->dn, not &NODE->dn to RECORD_LAST. Mon Jul 15 18:00:26 1996 Miles Bader * ext2fs.h (struct disknode): Add debugging info. (RECORD_LAST): New function. (LAST_BUFSZ): New macro. (enum last_act): New type. * pager.c (pager_unlock_page, diskfs_grow, file_pager_read_page, file_pager_write_page): Record debugging info. * truncate.c (diskfs_truncate): Likewise. * inode.c (diskfs_cached_lookup): Initialize debugging info. * pager.c (file_pager_read_page): Initialize *WRITELOCK to 0. Tue Jun 25 12:22:21 1996 Miles Bader * ext2fs.h (sync_global): Renamed from sync_global_data. Add WAIT flag. Don't call diskfs_set_hypermetadata. (alloc_sync): Call diskfs_set_hypermetadata instead of sync_global_data. (sync_super_block): Function removed. * hyper.c (diskfs_readonly_changed): No longer clear the clean bit. (diskfs_set_hypermetadata): Work correctly. * truncate.c (diskfs_truncate): Add call diskfs_check_readonly to clear clean bit. * inode.c (diskfs_cached_lookup): Use diskfs_check_readonly instead of diskfs_readonly. * dir.c (diskfs_lookup_hard, diskfs_dirempty): Likewise. * pager.c (diskfs_shutdown_pager): Don't shutdown the disk pager, just sync it. (diskfs_sync_everything): Call sync_global instead of pokel_sync. (final_sblock): Variable removed. (diskfs_grow): Add call diskfs_check_readonly to clear clean bit. Mon Jun 24 17:14:25 1996 Miles Bader * inode.c (check_high_bits, diskfs_validate_owner_change, diskfs_validate_group_change, diskfs_validate_mode_change, diskfs_validate_author_change): New functions. (write_node): For non-hurd filesystems, assert that no hurd extensions should be used. Thu Jun 20 22:36:23 1996 Miles Bader * ext2fs.c (main): Rename diskfs_device_startup_argp to diskfs_std_device_startup_argp. Sat Jun 15 15:56:01 1996 Miles Bader * inode.c (read_disknode, write_inode): Use hurd-specific fields only on a hurd filesystem. Fri May 10 09:32:43 1996 Michael I. Bushnell, p/BSG * inode.c (diskfs_set_statfs): Fix one reference to old name of ST member. Thu May 9 11:52:20 1996 Michael I. Bushnell, p/BSG * inode.c (diskfs_set_statfs): Expect and fill in new format statfs buffer. * Makefile (ext2fs ext2fs.static): s/ioserver/iohelp/g. * ext2fs.h: ioserver.h -> iohelp.h. Tue May 7 16:22:56 1996 Miles Bader * storeinfo.c (diskfs_S_file_get_storage_info): Rewrite for new interface. Tue Apr 30 12:51:09 1996 Michael I. Bushnell, p/BSG * Makefile (targets): Renamed from `target'. Fri Apr 26 16:10:19 1996 Michael I. Bushnell, p/BSG * Makefile (makemode): Now `servers'. (targets): Renamed from `target'; now include ext2fs.static. (ext2fs.static-LDFLAGS): Renamed from `LDFLAGS'. (ext2fs.static): Depend on same things as `ext2fs'. (include ../Makeconf): Must come before dependency information. Wed Apr 17 13:30:49 1996 Miles Bader * inode.c (diskfs_write_disknode): Only sync DI if WAIT. * dir.c (diskfs_lookup_hard): Set atime appropriately, and sync the new atime if we are running synchronously (!). (diskfs_dirempty): Likewise. (diskfs_direnter_hard): Set mtime appropriately. (diskfs_dirremove_hard): Likewise. (diskfs_dirrewrite_hard): Likewise. Thu Apr 4 18:51:19 1996 Miles Bader * inode.c (diskfs_cached_lookup): Renamed from iget; all uses updated. Initialize the CACHE_ID field in the new node. * ext2fs.h (struct disknode): Get rid of NUMBER field; all references replaced by references to the CACHE_ID field in the corresponding node. Fri Mar 29 11:03:58 1996 Miles Bader * dir.c (diskfs_null_dirstat): New function. (diskfs_lookup_hard, diskfs_direnter, diskfs_dirremove_hard, diskfs_dirrewrite_hard): Renamed from versions without `_hard' suffix. Get rid of stuff now done by diskfs. * ext2fs.c (main): Pass new argument to argp_parse. Tue Mar 19 17:52:04 1996 Miles Bader * pager.c (pager_unlock_page, diskfs_grow): Try to make the logic a bit simpler and more robust. Fri Feb 16 17:05:01 1996 Miles Bader * ext2fs.c (main): Check error return from diskfs_init_diskfs. Tue Feb 6 14:49:40 1996 Miles Bader * ext2fs.h (ext2_warning): Make a declaration, not a macro. * msg.c (ext2_warning): Rename from _ext2_warning; don't take (or print) a function argument any more. * dir.c (diskfs_get_directs): When BUFSIZ is 0, allocate enough extra space over the directory size to account for the worst case difference between the ext2 and canonical formats. Sat Feb 3 11:27:07 1996 Miles Bader * hyper.c (get_hypermetadata, diskfs_readonly_changed): Use ext2_warning to print warnings instead of error(). * msg.c (_ext2_warning): Include `warning:' in message. Sat Feb 3 06:10:43 1996 Roland McGrath * hyper.c: Fixed handling of the filesystem `clean bit'. (ext2fs_clean): New boolean variable. (get_hypermetadata): Set it iff the clean bit is set on entry. If not clean, complain and force read-only. (diskfs_set_hypermetadata): Set clean bit only if ext2fs_clean is set. (diskfs_readonly_changed): Complain if going writable and clean bit clear. * ext2fs.c: Include string.h for strerror decl. Tue Jan 30 22:25:19 1996 Miles Bader * hyper.c (get_hypermetadata): Don't return any error value, just panic if we can't read the superblock. * ext2fs.c (main): Move warp_inode() inline. Make sure root inode is really there. Don't check return value from get_hypermetadata. (warp_inode): Function removed. * ext2fs.h (get_hypermetadata): Returns void now. Tue Jan 30 17:04:41 1996 Roland McGrath * pager.c (file_pager_read_page, file_pager_write_page): Check for a page offset beyond the allocsize and return EIO. Wed Jan 17 15:11:55 1996 Miles Bader * storeinfo.c (diskfs_S_file_get_storage_info): Calculate the right value for *RUNS_LEN. Tue Jan 16 17:37:00 1996 Miles Bader * pager.c (diskfs_file_update): Ext2fs doesn't require that the last block in the file always be allocated, so don't. (diskfs_grow, pager_unlock_page): Don't set last_block_allocated. * ext2fs.h (struct disknode): Get rid of last_block_allocated field. * inode.c (read_disknode): Don't set last_block_allocated. * truncate.c (diskfs_truncate): Likewise. * Makefile (LDFLAGS): Add -static. Mon Jan 15 10:25:19 1996 Miles Bader * pager.c (pager_unlock_page, diskfs_grow): Leave things in a slightly more consistent state when block allocation errors happen. * dir.c (diskfs_direnter): Don't include the terminating '\0' in on-disk directory entry names. * inode.c (diskfs_node_norefs): When losing our in-core copy of an inode, remember which indirect blocks still have to be written. * pokel.c (pokel_inherit, pokel_finalize): New functions. * ext2fs.h (pokel_inherit, pokel_finalize): New declarations. * dir.c (diskfs_lookup): Patch from ufs/dir.c: If we are returning an error, then set the dirstat to be ignored by drop_dirstat. Sun Jan 14 13:17:33 1996 Miles Bader * ialloc.c (diskfs_alloc_node): Set NP->istranslated to 0. * inode.c (write_node): If NP isn't translated, force DI->i_translator to 0. * getblk.c (inode_getblk, block_getblk): Set dn_set_mtime too. Sat Jan 6 11:57:26 1996 Roland McGrath * pager.c (pager_bucket): Made global. (create_disk_pager): Pass MAY_CACHE to disk_pager_setup. * ext2fs.c (main): Don't map in disk image here; create_disk_pager now does it. Fri Jan 5 16:57:54 1996 Roland McGrath * ext2fs.h: Declare create_disk_pager. Thu Jan 4 18:46:40 1996 Roland McGrath * ext2fs.h (disk_pager, disk_pager_port, disk_image, create_disk_pager): Decls removed. Include hurd/diskfs-pager.h instead. * pager.c (create_disk_pager): Use disk_pager_setup. Tue Nov 14 14:59:32 1995 Miles Bader * dir.c (dirscanblock): Apply mib's changes to ufs/dir.c. Sat Nov 4 20:01:01 1995 Miles Bader * storeinfo.c (diskfs_S_file_get_storage_info): Add FLAGS argument. Wed Nov 1 20:09:59 1995 Miles Bader * ext2fs.c (main): Add FLAGS arg to diskfs_startup_diskfs call. Mon Oct 23 17:49:16 1995 Miles Bader * inode.c (diskfs_get_translator, diskfs_set_translator): Only support these if the filesystem's creator-os is `hurd'. (read_disknode): Only check the i_translator field if the filesystem's creator-os is `hurd'. Fri Oct 20 19:18:16 1995 Miles Bader * ext2fs.h (MS_RDONLY, MS_NOSUID, MS_NODEV, MS_NOEXEC, MS_SYNCHRONOUS, MS_REMOUNT, S_APPEND, S_IMMUTABLE, IS_APPEND, IS_IMMUTABLE): Macros deleted. Thu Oct 19 19:15:15 1995 Miles Bader * pager.c (create_disk_pager, diskfs_get_filemap, pager_clear_user_data): Don't use the p field in a upi. (diskfs_get_filemap): Update/initialize the max_prot field. Add the prot arg. * ext2fs.h (struct user_pager_info): Add max_prot field, remove p. * pager.c (drop_pager_softrefs): Declare PAGER, not UPI. (enable_caching): The disk node is upi->node, not upi->np. (diskfs_enable_pagers): Function removed. * inode.c (read_disknode): Add DN and OFFSET variables. Use log2_block_size to mask instead of doing a modulo with block_size. * hyper.c (diskfs_readonly_changed): Typo. (allocate_mod_map): Declare ERR; OLD_MOD_MAP_SIZE --> MOD_MAP_SIZE. * dir.c (diskfs_lookup, diskfs_dirempty): Give diskfs_get_filemap a protection arg. * truncate.c (force_delayed_copies): Ditto. Wed Oct 18 21:00:28 1995 Miles Bader * ext2fs.h (struct disknode): Replace fileinfo field with pager. * inode.c (diskfs_node_norefs, iget): Use pager field, not fileinfo. * pager.c (diskfs_get_filemap_pager_struct, flush_node_pager, diskfs_file_update, pager_clear_user_data, drop_pager_softrefs): Ditto. * truncate.c (enable_delayed_copies, force_delayed_copies): Ditto. * ext2fs.c (main): Always include VM_PROT_WRITE in max prot. * hyper.c (diskfs_readonly_changed): Change the protection of DISK_IMAGE to reflect the new state. * pager.c (diskfs_enable_pagers): New function. Tue Oct 17 21:16:04 1995 Miles Bader * pokel.c (_pokel_exec, pokel_flush): New functions. (pokel_sync): Use _pokel_exec to do the work. * pager.c (flush_node_pager): New function. * ext2fs.h (pokel_flush, flush_node_pager): New declarations. * hyper.c (allocate_mod_map): New function (from get_hypermetadata). (zeroblock, modified_global_blocks): Define (were common). (get_hypermetadata): Deallocate ZEROBLOCK if necessary. Use allocate_mod_map to allocate MODIFIED_GLOBAL_BLOCKS. (diskfs_readonly_changed): New function. * main.c (main): Move stuff into get_hypermetadata. Writable init code moved to diskfs_readonly_changed. * inode.c (diskfs_node_reload): New function. (iget, read_disknode): Code to set allocsize and the last_* fields moved from iget to read_disknode. * ext2fs.h (disk_pager): Type changed to struct pager. (sync_global_ptr): Use DISK_PAGER, not DISK_PAGER->p. * pager.c (create_disk_pager): Store the actual pager into DISK_PAGER. * ext2fs.c (main): Use DISK_PAGER directly, not ->p. * inode.c (iget): Ditto. * pager.c (diskfs_shutdown_pager, diskfs_sync_everything): Ditto. Mon Oct 16 15:23:25 1995 Miles Bader * inode.c (diskfs_lost_hardrefs): #ifdef'd out contents removed. Fri Oct 13 17:50:23 1995 Miles Bader * ext2fs.c (main): Use argp for parsing. (usage, USAGE, SHORT_OPTS, long_opts, console_stdio): Removed Thu Oct 12 18:16:00 1995 Miles Bader * hyper.c (get_hypermetadata): Use diskfs device functions & variables instead of our own. * ext2fs.h (device_arg, device_name, device_port, device_start, device_size, device_block_size): Declarations removed. * ext2fs.c (printf, _ext2_error, _ext2_panic, _ext2_warning): Functions moved to msg.c * msg.c: New file. (printf, _ext2_error, _ext2_panic, _ext2_warning): Funcs from ext2fs.c. * Makefile (SRCS): Remove devio.c, add msg.c. Sat Oct 7 20:47:19 1995 Miles Bader * storeinfo.c (diskfs_S_file_get_storage_info): run_elem_t --> off_t. * ext2fs.c (diskfs_init_completed): Func deleted (now in libdiskfs). Fri Oct 6 17:24:57 1995 Miles Bader * storeinfo.c (diskfs_S_file_get_storage_info): Change type of ADDRESSES to off_t **, and add BLOCK_SIZE parameter. Wed Oct 4 20:02:34 1995 Miles Bader * inode.c (diskfs_set_statfs): fsys_stb_bsize -> fsys_stb_iosize. fsys_stb_fsize -> fsys_stb_bsize. Wed Sep 27 20:07:53 1995 Miles Bader * ext2fs.c (main): Use diskfs routines to open the device. Support both file and mach devices. Move the parse function here. (parse_opt): Move into main (as a nested function). * ext2fs.h (device_arg, device_start): New declarations. * devio.c (dev_read_sync, dev_write_sync): Offset the address to which we're doing i/o with DEVICE_START. Tue Sep 26 18:39:58 1995 Miles Bader * storeinfo.c (diskfs_S_file_get_storage_info): New function. * Makefile (SRCS): Add storeinfo.c. Fri Sep 15 14:21:18 1995 Miles Bader * truncate.c (trunc_indirect): Only record an indirect block as being modified when it actually is. * truncate.c (diskfs_truncate): Use the new truncate functions. (poke_pages): Gratuitous cosmetic changes. (trunc_direct): Rewritten, new args. (trunc_indirect): Rewritten, new args, now more general to support all the various indirection levels. (trunc_triple_indirect, trunc_double_indirect, trunc_single_indirect): New functions. (struct free_block_run): New structure. (free_block_run_finish, free_block_run_free_ptr, free_block_run_add, free_block_run_init, _free_block_run_flush): New functions. (trunc_dindirect, trunc_tindirect): Functions deleted. (DIRECT_BLOCK, INDIRECT_BLOCK, DINDIRECT_BLOCK, TINDIRECT_BLOCK): Macros deleted. * getblk.c (block_getblk, ext2_getblk): u32 --> block_t. * balloc.c (ext2_new_block): Ditto. * hyper.c (get_hypermetadata): Ditto. * pager.c (file_pager_write_page): Ditto. Wed Sep 13 12:30:23 1995 Michael I. Bushnell, p/BSG * dir.c (diskfs_lookup): Don't attempt to lock NP if NPP is not set. Don't even set NP if NPP is not set; use INUM as "lookup succeeded flag" instead. Lookups for REMOVE and RENAME now *must* set NPP. Tue Sep 12 11:03:19 1995 Miles Bader * pokel.c (pokel_init): Initialize the free_pokes field. (pokel_add): Assert that this malloc should succeed. (pokel_sync): Don't hold POKEL's spin lock while syncing. * ialloc.c (diskfs_alloc_node): Check for a non-zero ALLOCSIZE. Tue Sep 5 16:59:40 1995 Miles Bader * pager.c (diskfs_pager_users): Ignore the disk pager when seeing if there are any active pagers. (diskfs_shutdown_pager): shutdown_one gets passed a pager, not a upi. (diskfs_sync_everything): sync_one gets passed a pager, not a upi. Sun Sep 3 17:28:13 1995 Miles Bader * ext2fs.c (thread_cancel): Removed. Fri Aug 25 14:37:32 1995 Miles Bader * Makefile (ext2fs): Put libports in the right place in the linking order. Thu Aug 24 10:34:15 1995 Miles Bader * Makefile (ext2fs): Put all dependencies here. (HURDLIBS): Removed. Tue Aug 22 19:39:06 1995 Miles Bader * Makefile (HURDLIBS): Add libshouldbeinlibc. Remove rules for error.o. Fri Jul 21 17:51:33 1995 Michael I Bushnell * pager.c (diskfs_get_filemap): Free initial reference created by pager_create. * pager.c (diskfs_get_filemap): Avoid race with simultaneous termination by looping until we win. (pager_clear_user_data): Only clear UPI->np->dn->fileinfo if it still points to us. Thu Jul 6 15:33:24 1995 Michael I Bushnell * Makefile: Removed dependencies that are now automatically generated. Thu Jul 6 13:36:25 1995 Miles Bader * pager.c (diskfs_pager_users): New function. Tue Jun 27 13:08:33 1995 Michael I Bushnell * pager.c (pager_unlock_page): Declare BLOCK volatile. Sat Jun 24 17:59:36 1995 Miles Bader * Makefile (HURDLIBS): Add libihash. * ext2fs.c (thread_cancel): Dummy function. * dir.c (diskfs_direnter): Move assignment out of test. (diskfs_get_directs): Fix print-format types. * ialloc.c (diskfs_free_node): Fix print-format types. * pager.c (thread_function): New function. (create_disk_pager): Make a new thread to service paging requests. * ext2fs.c (main): Have the initial thread die when it's done, leaving other thread to do the work. * pager.c (pager_bucket): New variable. (pager_list_lock, file_pager_list): Variables deleted. (create_disk_pager): Create pager_bucket. (create_disk_pager, diskfs_get_filemap): Pass pager_bucket to pager_create. (pager_traverse): Function deleted. (diskfs_get_filemap, pager_clear_user_data): Don't add/remove UPI to/from the pager list, as there isn't any. (diskfs_shutdown_pager, diskfs_sync_everything): Use ports_bucket_iterate on pager_bucket to go through all the pagers, instead of pager_traverse. (diskfs_file_update, pager_traverse, allow_pager_softrefs, drop_pager_softrefs): Change pager [un]ref calls to use the new ports ref calls directly instead. (pager_dropweak): New function (does nothing). * ext2fs.h (struct user_pager_info): Remove the next & prevp fields. * truncate.c (force_delayed_copies, enable_delayed_copies): Change pager [un]ref calls to use the new ports ref calls directly instead. * inode.c (diskfs_lost_hardrefs): Ditto. * inode.c (diskfs_node_iterate): New function. (write_all_disknodes): Re-implemented using diskfs_node_iterate. Wed Jun 14 16:19:49 1995 Michael I Bushnell * inode.c (diskfs_get_translator): Conform to new memory usage semantic. Fri May 19 20:56:51 1995 Miles Bader * ext2fs.c (main): Use options_parse & diskfs_standard_startup_options to do command line options parsing. (long_opts): Was `options'. Most things removed, as they're now handled by libdiskfs. (parse_opt): New routine to deal with our few meagre remaining options in the approved options_parse manner. Mon May 15 15:55:49 1995 Miles Bader * ext2fs.c (main, usage, options): Add --writable & --nosync options. Sat May 13 20:04:55 1995 Miles Bader * inode.c (diskfs_set_statfs): Set st->fsys_stb_bsize, not _fsize, to the block size. Sat May 13 05:02:59 1995 Roland McGrath * Makefile (OBJS): Remove exec_server_image.o. (exec_server_image.o): Rule removed. Fri May 12 15:23:02 1995 Miles Bader * ext2fs.c (main): Add an optional argument to the --sync option that lets the user specify an initial sync interval. Thu May 11 13:30:06 1995 Miles Bader * pager.c (pager_unlock_page): Give an explanation of why the file system will shortly crash. * balloc.c (ext2_free_blocks, ext2_new_block): Get rid of the CHECK_STRICT variable, and just always do the tests it controlled. * ext2fs.h: Get rid of the CHECK_STRICT variable. * ext2fs.h (ext2_error, ext2_warning, ext2_panic, all callers changed): Make these into macros that automagically supply the caller's function name, and rename the original functions (which these macros call) to have an underline prefix. * ext2fs.c (ext2_error, ext2_warning, ext2_panic): Rename to add the underline prefix. Also rearrange a bit to hold the lock around the use of the global message buffer. * ext2fs.c (main): Enable the bootstrap code. * inode.c (read_disknode): Make st_blksize larger: 2 * pagesize. Wed May 10 14:03:34 1995 Miles Bader * getblk.c (block_getblk, inode_getblk): Return ENOSPC instead of EIO when we can't allocate a new block. * bitmap.c (find_next_zero_bit): Fix stupid typos (present in the original linux source I copied this function from!) which were causing occasional garbage results. Tue May 9 18:08:41 1995 Miles Bader * ext2fs.h (DONT_CACHE_MEMORY_OBJECTS): Don't define this any more, as the bugs we were using it to catch are supposedly gone :-|