Age | Commit message (Collapse) | Author |
|
|
|
* 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 <kettenis@wins.uva.nl>.
|
|
|
|
* 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.
* 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).
|
|
* 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.
* 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_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).
|
|
* ialloc.c (diskfs_alloc_node): Propagate initial value of i_flags
from directory, as Linux 2.3.14 does.
|
|
* ext2_fs.h, ext2_fs_i.h: Replaced with Linux 2.3.14 versions.
* ext2fs.h (i_mode_high): New macro, missing from ext_fs.h.
|
|
* 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).
|
|
* 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).
* 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.
|
|
|
|
* dir.c (diskfs_get_directs): Fix sloppy bugs in last change.
* hyper.c (allocate_mod_map): Likewise.
* pager.c (get_page_buf): Likewise.
|
|
* 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.
|
|
|
|
* ext2fs.h: Add #include <sys/mman.h> for munmap decl.
|
|
* 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.
|
|
* hyper.c (diskfs_readonly_changed): Adjust whether the store
should permit writes too.
|
|
|
|
* pager.c (free_page_buf): Fix type cast.
|
|
* pager.c: Clamp the number of free pages we keep around to some
reasonably small value. Patch from Mark Kettenis
<kettenis@wins.uva.nl>.
1999-06-15 Thomas Bushnell, BSG <tb@mit.edu>
* inode.c (diskfs_validate_flags_change): Invert sense of test wrt
bits that haven't yet been defined. Reported by Kalle Olavi
Niemitalo <tosi@ees2.oulu.fi>.
|
|
|
|
* 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.
|
|
* ext2fs.c (main): Include store size in panic msg when it's too small.
|
|
|
|
* ialloc.c (diskfs_alloc_node): If creator_os is not EXT2_OS_HURD,
suppress warnings about stale nonzero st_blocks or st_size.
|
|
|
|
* ext2fs.c (main): Use diskfs_init_main.
|
|
|
|
* inode.c (diskfs_set_statfs): Remove __ from struct members.
1998-12-21 Mark Kettenis <kettenis@phys.uva.nl>
* inode.c (diskfs_set_statfs): Fill in statfs members that are
used to implement statvfs.
|
|
|
|
* ext2fs.c (main): Pass ARGP_IN_ORDER flag to argp_parse because
diskfs options need it.
|
|
|
|
* inode.c (diskfs_write_disknode): Add braces to silence warning.
* pager.c (file_pager_read_page): Likewise.
|
|
* storeinfo.c: Don't include <netinet/in.h>.
|
|
|
|
* pager.c: strings.h -> string.h; gets strerror decl.
|
|
* dir.c (dirscanblock): Fix defn with `const'.
(diskfs_direnter_hard): Likewise.
* inode.c (diskfs_create_symlink_hook): Likewise.
(write_symlink): Likewise.
* dir.c (diskfs_lookup_hard): Fix defn with `const'.
* inode.c (diskfs_set_translator): Likewise.
|
|
* ext2fs.c (main): Fix return type to int.
|
|
* 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.
|
|
* ext2fs.c (diskfs_readonly): Delete variable definition.
(main): If the store cannot be made writable, then set
diskfs_hard_readonly and diskfs_readonly.
|
|
|
|
Initialize READ to 0 to force store_read to allocate a buffer.
|
|
|
|
Get rid of device-block-size-is-power-of-2 check.
|
|
|
|
Don't assert that st_blocks is zero for non-dir/file/long-symlink inodes.
|
|
|
|
If SBLOCK->s_creator_os != EXT2_OS_HURD, set NP->author_tracks_uid to true.
|
|
|
|
Frob S_IPTRANS bit rather than istranslated field.
(write_node):
Don't write S_IPTRANS to disk.
(read_node):
Set S_IPTRANS bit in ST->st_mode (and clear S_ITRANS) rather than
NP->istranslated.
|
|
Clear S_IPTRANS bit in ST->st_mode instead of NP->istranslated.
|