Mask off high 8 bits from dirent->name_len.
Many files:
The ext2 version and flags ioctl's take an int *, not a long *. Fix
library to use the correct type, so we don't have problems on the
Alpha.
Set the immutable flag on the block and character device so that
e2fsck notices them as bad devices, and offers to fix them. E2fsck
currently only checks devices with the immutable flag set, since
otherwise there might be some false positives --- the kernel doesn't
always clear the all of i_blocks[n], n>=4, due to a race condition.
ChangeLog, inode.c:
inode.c (ext2fs_get_next_inode): Always do the check to see if the
inode table is missing so that we catch the case where the first block
group is missing.
ext2_io.h, ext2fs.h: Protect against being included multiple times.
bmove.c: #include ext2fsP.h instead of "ext2fs/ext2fs.h"
test_io.c (test_flush): Add a debugging printf when the flush method
is called.
rw_bitmaps.c (ext2fs_read_bitmaps): If the bitmaps are already read
in, return right away.
bitops.h: Don't try to do i386 inline asm functions if the compiler
isn't GCC.
ext2fs.h: If EXT2_FLAT_INCLUDES is defined, #include e2_types.h,
instead of linux/types.h, and e2_bitops.h instead of ext2fs/bitops.h.
icount.c, version.c: Don't #include <et/com_err.h>, as it isn't necessary.
inode.c (ext2fs_open_inode_scan): Initialize the group variables
so that we don't need to call get_next_blockgroup() the first
time around. Saves a bit of time, and prevents us from
needing to assign -1 to current_group (which is an unsigned
value).
icount.c (insert_icount_el): Cast the estimated number of inodes
from a float to an ino_t.
alloc.c, alloc_tables.c, badlbocks.c, bb_compat.c, bb_inode.c,
bitmaps.c, bitops.c, block.c, bmap.c, bmove.c, brel_ma.c,
check_desc.c, closefs.c, cmp_bitmaps.c, dblist.c,
dblist_dir.c, dir_iterate.c, dirblock.c, dupfs.c, expanddir.c,
ext2fs.h, fileio.c, freefs.c, get_pathname.c, getsize.c,
icount.c, initialize.c, inline.c, inode.c, irel_ma.c,
ismounted.c, link.c, lookup.c, mkdir.c, namei.c, native.c,
newdir.c, openfs.c, read_bb.c, read_bb_file.c, rs_bitmap.c,
rw_bitmaps.c, swapfs.c, test_io.c, tst_badblocks.c,
tst_getsize.c, tst_iscan.c, unix_io.c, unlink.c, valid_blk.c,
version.c: If EXT2_FLAT_INCLUDES is defined, then assume all
of the ext2-specific header files are in a flat directory.
block.c, bmove.c, dirblock.c, fileio.c: Explicitly cast
all assignments from void * to be compatible with C++.
closefs.c (ext2fs_flush): Add a call to io_channel_flush() to
make sure the contents of the disk are flushed to disk.
dblist.c (ext2fs_add_dir_block): Change new to be new_entry to
avoid C++ namespace clash.
bitmaps.c (ext2fs_copy_bitmap): Change new to be new_map to
avoid C++ namespace clash.
ext2fs.h, bb_inode.c, block.c, bmove.c, brel.h, brel_ma.c,
irel.h, irel_ma.c, dblist.c, dblist_dir.c, dir_iterate.c,
ext2fsP.h, expanddir.c, get_pathname.c, inode.c, link.c,
unlink.c: Change private to be priv_data (to avoid C++
namespace clash)
dblist.c (ext2fs_get_num_dirs): Make ext2fs_get_num_dirs more paranoid
about validating the directory counts from the block group
information.
all files: Don't include stdlib.h anymore; include it in ext2_fs.h,
since that file requires stdlib.h
ChangeLog, Makefile.in, dirinfo.c:
dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead of
e2fsck_get_num_dirs, which has been removed.
Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want to
compile and install flushb.
ChangeLog, configure.in:
Remove @EXTRA_PROGS@, since we aren't using it in 2fsck/Makefile.in anymore
ChangeLog, Makefile.in:
Install debugfs in /sbin, instead of /usr/sbin.
libext2fs.texinfo:
Update version string to be 1.12
Makefile.in:
Fix bug in find script which made the exclusion list, where a '-' was
missing from an -name option.
expanddir.c (ext2fs_expand_dir): Check to make sure the block bitmap
is loaded, and return an error if it is not.
expanddir.c (expand_dir_proc): Only use ext2fs_write_dir_block when
writing a directory block, not when writing out a fresh indirect
block.
pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the progress
indicator function.
pass1.c (scan_callback): Add call to the progress feedback function
(if it exists).
super.c (check_super_block): Skip the device size check if the
get_device_size returns EXT2_EXT_UNIMPLEMENTED.
iscan.c (main): Don't use fatal_error() anymore.
pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of calling
fatal_error(0).
problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
PR_3_NO_ROOT_INODE_ABORT): New problem codes.
problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
problemP.h: New file which separates out the private fix_problem data
structures.
util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
swapfs.c util.c: allocate_memory() now takes a e2fsck context as its
first argument, and rename it to be e2fsck_allocate_memory().
problemP.h:
New file which contains the private problem abstraction definitions.
Makefile.pq:
Remove include of MAKEFILE.STD, which doesn't exist at this point.
Makefile.in, tst_getsize.c: Added new file which is used to test the
ext2fs_get_device_size function.
ext2_err.et.in (EXT2_ET_UNIMPLEMENTED): Added new error code.
ext2fs.h: Make ext2fs_get_mem take an unsigned argument.
fileio.c (ext2fs_file_get_size, ext2fs_file_set_size, ext2fs_file_get_fs):
New functions added.
bitops.c (ext2fs_warn_bitmap, ext2fs_warn_bitmap2): Don't call com_err
if OMIT_COM_ERR is defined.
Rename new error codes to _ET_ in them for consistency.
ChangeLog, et_c.awk, et_h.awk:
Remove support for non STDC compilers, since the workarounds caused
problems with the header file.
Makefile.pq:
Checkpoint of powerquest work.
Added definition of ext2fs_get_mem, ext2fs_free_mem, and
ext2fs_resize_mem in ext2fs.h, and changed all library routines to use
these wrapper functions.
Fix buggy use of the INLINE macros.
ChangeLog, dblist.c, ext2_err.et.in, mkdir.c:
dblist.c, mkdir.c: use EXT2_DIR_EXISTS and EXT2_DB_NOT_FOUND instead
of the system error messages.
ext2_err.et.in: Added new error messages EXT2_DIR_EXISTS and
EXT2_DB_NOT_FOUND
Update version.h for interim release
ChangeLog, Makefile.in, test_icount.c:
Makefile.in (PROGS): Remove test_rel from the test programs that we
build for now.
test_icount.c: Fix some random lint warnings.
Makefile.in:
Fix typo in removing brel_ma.o and irel_ma.o from the Makefile
ext2fs.h: Added function declarations and constants for bmap.c and
fileio.c.
ext2_err.et.in: Added new error messages EXT2_FILE_RO and
EXT2_ET_MAGIC_EXT2_FILE
Makefile.in: Added files bmap.c and fileio.c, and temporarily
commented out brel_ma.c and irel_ma.c
bmap.c: New file which maps a file's logical block number to its
physical block number.
fileio.c: New file which implements simple file reading and writing
primitives.
alloc.c (ext2fs_alloc_block): New function which allocates a block,
zeros it, and updates the filesystem accounting records appropriately.
ext2_err.et.in: Added new error codes: EXT2_NO_MEMORY,
EXT2_INVALID_ARGUMENT, EXT2_BLOCK_ALLOC_FAIL, EXT2_INODE_ALLOC_FAIL,
EXT2_NOT_DIRECTORY
Change various library files to use these errors instead of EINVAL,
ENOENT, etc.
alloc.c (ext2fs_alloc_block): New function which allocates a
block and updates the filesystem accounting records
appropriately.
ext2_err.et.in: Added new error codes: EXT2_NO_MEMORY,
EXT2_INVALID_ARGUMENT, EXT2_BLOCK_ALLOC_FAIL, EXT2_INODE_ALLOC_FAIL,
EXT2_NOT_DIRECTORY
Change various library files to use these functions instead of EINVAL,
ENOENT, etc.
ChangeLog, pass1.c, pass3.c:
pass3.c (get_lost_and_found): Check error return of
EXT2_FILE_NOT_FOUND instead of ENOTDIR
pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY instead of
ENOTDIR
expect.icount:
Change expected error string to be "Invalid argument passed to ext2 library"
instead of just "Invalid argument"
Added check to see if llseek is declared in unistd.h
ChangeLog, llseek.c:
Check HAVE_LLSEEK_PROTOTYPE to see whether or not we need to declare
llseek().
llseek.c (ext2fs_llseek): Fix type error for ext2fs_llseek()
icount.c (ext2fs_icount_validate):
bmove.c (process_block): Fix lint error in type for fprintf().
inode.c (ext2fs_check_directory): Add support for the callback
to return the error code EXT2_ET_CALLBACK_NOTHANDLED.
ChangeLog, mke2fs.c:
Make parse_raid_opts return a void, to fix a -Wall warning.
Makefile.in (ELF_SO_VERSION): Bump version to be 2.4 since we've added
a new field to the io_channel (app_data).
io.h: Add a new element to the io_channel structure, app_data.
initialize.c, openfs.c: Set io->app_data to point at the filesystem handle.
io.h: Change the prototype of ext2fs_llseek() to use int's instead of
unsigned int's.
llseek.c: Change to allow PIC and !HAVE_LLSEEK. Add a prototype to
make life easer for GNU Libc 2.
rw_bitmaps.c: On the PowerPC, the big-endian variant of the ext2
filesystem has its bitmaps stored as 32-bit words with bit 0 as the
LSB of each word. Thus a bitmap with only bit 0 set would be, as a
string of bytes, 00 00 00 01 00 ... To cope with this, we
byte-reverse each word of a bitmap if we have a big-endian filesystem,
that is, if we are *not* byte-swapping other word-sized numbers.
ChangeLog, expect.1, image.gz:
f_badinode: Modify test to check for "bad" character and block devices
(i.e., ones which contain garbage block entries)
message.c: Add compression for the word "Illegal"
problem.c: Added entries for PR_2_BAD_CHAR_DEV and PR_2_BAD_BLOCK_DEV
pass1.c (pass1, check_device_inode), pass2.c (process_bad_inode): Use
a more stringent test for a valid device.
ChangeLog, Makefile.in:
Makefile.in (install): Fix rm command to use $(DESTDIR) appropriately.
dosio.c: New file to do DOS/BIOS disk accesses.
namei.c (open_namei): Make pathlen be of type size_t.
llseek.c: Always #include stdlib.h since it's need to define
size_t.
io.h: Use errcode_t for magic numbers.
icount.c (get_icount_el), dupfs.c (ext2fs_dup_handle), dblist.c
(dir_block_cmp): Use size_t where appropriate.
read_bb.c (ext2fs_read_bb_inode), cmp_bitmaps.c
(ext2fs_compare_inode_bitmap): Use blk_t, ino_t and size_t
where appropriate.
closefs.c (ext2fs_flush): Use dgrp_t instead of int where
appropriate.
openfs.c (ext2fs_open), check_desc.c (ext2fs_check_desc): Use blk_t
instead of int where appropriate.
rw_bitmaps.c (read_bitmaps), irel_ma.c, inode.c (ext2fs_write_inode),
initialize.c (ext2fs_initialize): brel_ma.c: Fix to make be
16-bit safe.
link.c (ext2fs_link), unlink.c (ext2fs_unlink), lookup.c (lookup_proc),
ismounted.c (ext2fs_check_if_mounted), block.c (xlate_func):
Add #pragma argsused for Turbo C.
block.c (ext2fs_block_iterate2): Use retval which is a errcode_t type.
bitmaps.c (make_bitmap): Use size_t instead of int where appropriate.
bb_inode.c (set_bad_block_proc): Add #pragma argsused for Turbo C.
alloc.c (ext2fs_new_inode): Use ino_t instead of int for the group number.
get_pathname.c: Use ino_t instead of int where appropriate.
ext2fs.h: Make the magic structure element be errcode_t instead of int.
alloc.c alloc_tables.c badblocks.c bb_compat.c bb_inode.c
bitmaps.c block.c bmove.c brel_ma.c check_desc.c closefs.c
cmp_bitmaps.c dblist.c dblist_dir.c dir_iterate.c dirblock.c
dupfs.c expanddir.c freefs.c get_pathname.c icount.c
initialize.c inline.c inode.c irel_ma.c link.c llseek.c
lookup.c mkdir.c namei.c newdir.c read_bb.c read_bb_file.c
rs_bitmap.c rw_bitmaps.c swapfs.c test_io.c tst_badblocks.c
tst_iscan.c unix_io.c unlink.c valid_blk.c version.c: Add an
#ifdef for HAVE_UNISTD_H
error_table.h:
et_name.c (error_table_name):
error_message.c (error_message.c): Make code be 16-bit safe.
ChangeLog, e2fsck.c:
e2fsck.c (check_mount): Add stronger warning message about the perils
of running e2fsck on a mounted filesystem.
unix_io.c (unix_read_blk): If ext2fs_llseek() fails, but errno is
zero, then return EXT2_IO_LLSEEK_FAILED.
ext2_err.et.in: Add a new error code, EXT2_IO_LLSEEK_FAILED.
Fix bug; the current inode number wasn't being set by the
goto_blockgroup function.
bmove.c, ext2fs.h:
Added new argument to bmove, so that the caller can pass the
allocation bitmap. If not specified, the allocation bitmap defaults
to fs->block_map.
bmove.c (ext2fs_move_blocks): New function which takes a bitmap of
blocks which need to be moved, and moves those blocks to another
location in the filesystem.
rs_bitmap.c (ext2fs_resize_generic_bitmap): When expanding a bitmap,
make sure all of the new parts of the bitmap are zero.
bitmaps.c (ext2fs_copy_bitmap): Fix bug; the destination bitmap wasn't
being returned to the caller.
alloc_tables.c (ext2fs_allocate_group_table): Add new function
ext2fs_allocate_group_table() which sets the group tables for a
particular block group. The relevant code was factored out of
ext2fs_allocate_tables().
dblist.c (make_dblist): Adjust the initial size of the directory block
list to be a bit more realize (ten plus twice the number of
directories in the filesystem).
Check in interim work.
Pass the blocksize to the bad blocks command so that all of the
filesystem gets tested in the case where the blocksize 2048 or 4096.
ChangeLog, badblocks.c:
Fix bug where ext2fs_badblocks_list_test would test the list (and
exceed array boundaries) if there were no bad blocks on the bad blocks
list. (Showed up when user tried: mke2fs -c -b 4096).