Theodore Ts'o [Sat, 11 Nov 2006 14:44:47 +0000 (09:44 -0500)]
On-disk format definition for 64-bit support
- EXT4_FEATURE_INCOMPAT_64BIT (0x0080) - support for 64-bit block count
fields in the superblock (s_blocks_count_hi, s_free_blocks_count_hi),
large group descriptors (s_desc_size), extents with high 16 bits
(ee_start_hi, ei_leaf_hi), inode ACL (i_file_acl_hi). May also grow
to encompass the previously proposed BIG_BG.
Theodore Ts'o [Sat, 11 Nov 2006 14:43:42 +0000 (09:43 -0500)]
On-disk format for large number of subdirectories
- EXT4_FEATURE_RO_COMPAT_DIR_NLINK (0x0020?) - allow directories to have
> 65000 subdirectories (i_nlinks) by setting i_nlinks = 1 for such
directories. RO_COMPAT protects old filesystems from unlinking such
directories incorrectly and losing all files therein.
Theodore Ts'o [Sat, 11 Nov 2006 14:41:52 +0000 (09:41 -0500)]
On-disk format definition for group descriptor checksums
- EXT4_FEATURE_RO_COMPAT_GDT_CSUM (0x0010?) - store a crc16 checksum in
the group descriptor (s_uuid[16] | __u32 group | ext3_group_desc
(excluding gd_checksum itself)). This allows the kernel to more safely
manage UNINIT groups.
Theodore Ts'o [Sat, 11 Nov 2006 11:32:03 +0000 (06:32 -0500)]
On-disk format definition for huge files
- EXT4_FEATURE_RO_COMPAT_HUGE_FILE (0x0008) - change i_blocks to be
in units of s_blocksize units instead of 512-byte sectors, use
l_i_frag and l_i_fsize as i_blocks_hi (could also be part of 64BIT).
E2fsck and debugfs changed to support i_blocks_hi instead of l_i_frag and
l_i_fsize.
Theodore Ts'o [Wed, 8 Nov 2006 05:41:50 +0000 (00:41 -0500)]
Fix e2fsck and mke2fs -c to be pass the last _block change to badblocks
Badblocks now interprets last_block argument as the last block to check,
instead of the number of blocks to check, to be consistent with the
badblocks man page.
Theodore Ts'o [Sun, 22 Oct 2006 04:18:49 +0000 (00:18 -0400)]
Add failsafe against duplicate UUID's generated by threaded programs
Add in randomness based on Linux's thread id (gettid) to avoid race
conditions when two threads try to generate uuid's at the same time.
This shouldn't be an issue if /dev/urandom has proper locking and is
present, so this is just a failsafe.
Theodore Ts'o [Sun, 22 Oct 2006 03:27:03 +0000 (23:27 -0400)]
Fix potential e2fsck -n crash
Don't core dump if there is a corrupt htree interior node. If the block
number is larger than the number of blocks in the directory, don't write
past the end of malloc'ed memory.
Theodore Ts'o [Wed, 18 Oct 2006 04:31:11 +0000 (00:31 -0400)]
Fix mke2fs error checking when creating revision 0 filesystems
Fix revision 0 error checking so that it doesn't give spurious error
when the user gives a command-line option of "-O none".Add error
checking so that "-r 0 -j", "-r 0 -s 1", and "-r 0 -E resize=XXX" will
print an explanatory error message and abort.
Theodore Ts'o [Mon, 2 Oct 2006 12:30:34 +0000 (08:30 -0400)]
Fix resize2fs error msgs if the fs or kernel doesn't support on-line resize
Check to make sure the filesystem has a resize inode if it is needed to
grow the filesystem. Print the correct error message if the kernel
returns an ENOTTY error to the group extend ioctl
Eric Sandeen [Tue, 12 Sep 2006 18:56:15 +0000 (14:56 -0400)]
Fix signed vs unsigned printf format strings for block and inode numbers
There were still some %d's lurking when we print blocks & inodes; also
many of the counters in the e2fsck_struct were signed, and probably
need to be unsigned to avoid overflows.
Eric Sandeen [Tue, 12 Sep 2006 18:55:22 +0000 (14:55 -0400)]
Fix loops over group descriptors to prevent 2**32-1 block number overflows
For loops iterating over all group descriptors, consistently define
first_block and last_block in a way that they are inclusive of the
range, and do not overflow.
Previously on the last block group we did a test of <= first +
dec_blocks; this would actually wrap back to 0 for a total block count
of 2^32-1
Also add handling of last block group which may be smaller.
Theodore Ts'o [Wed, 30 Aug 2006 07:08:13 +0000 (03:08 -0400)]
Fix potential 2**32-1 overflow by using e2p_percent()
Add a new functiom, e2p_percent(), which correct calculates the percentage
of a number based on a given percentage, without worrying about overflow
issues. This is used where we calculate the number of reserved blocks using
a percentage of the total number of blocks in a filesystem.
Based on patches from Eric Sandeen, but generalized to use this new function.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> Signed-off-by: Eric Sandeen <esandeen@redhat.com>
Theodore Ts'o [Wed, 30 Aug 2006 05:57:00 +0000 (01:57 -0400)]
Fix potential 2**32-1 overflow problems by ext2fs_div_ceil()
Add a new function, ext2fs_div_ceil(), which correctly calculates a division
of two unsigned integer where the result is always rounded up the next
largest integer. This is used everywhere where we might have
previously caused an overflow when the number of blocks
or inodes is too close to 2**32-1.
Based on patches from Eric Sandeen, but generalized to use this new function
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> Signed-off-by: Eric Sandeen <esandeen@redhat.com>
Andreas Dilger [Sun, 20 Aug 2006 01:12:15 +0000 (21:12 -0400)]
blkid.8.in: Fix description of the -l option to be more accurate
This patch fixes the blkid.8.in description of the "-l" option. The man
page gives the impression that the first match is the one that is returned.
However, the blkid_find_dev_with_tag() function returns the device with
the highest priority (which is good, because that is what people really want).
Signed-off-by: Andreas Dilger <adilger@clusterfs.com>
Andreas Dilger [Sun, 20 Aug 2006 00:05:28 +0000 (20:05 -0400)]
This patch fixes up an error in the lib/blkid/Makefile.in which was causing
all lib/blkid/tst* files to be removed with "make clean", in particular
tst_types.c. That was causing a failure of "make check" in an RPM source
tree. Fix is to explicitly list the test binaries, as lib/ext2fs/Makefile.in
does.
As "make check" was only calling test_probe and tst_types (and none
of the other tst_* tests) it was not clear what was going on, and an
"hg update" would always return the old tst_types.c file back so the
problem was only being seen intermittently... It isn't clear whether
you want the other tst_* programs to be run as part of "make check".
Signed-off-by: Andreas Dilger <adilger@clusterfs.com>
Andreas Dilger [Sun, 6 Aug 2006 04:56:37 +0000 (00:56 -0400)]
Make the findsuper program more powerful
Improve the findsuper program by printing the uuid and label from the
superblocks, as well as the starting and ending offsets of the
filesystem given the information in the superblock. Omit by
default printing superblocks that are likely found in located in an ext3
journal unless an explicit -j option is given.
Signed-off-by: Andreas Dilger <adilger@clusterfs.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Andreas Dilger [Sat, 5 Aug 2006 23:05:53 +0000 (19:05 -0400)]
Require mke2fs -F -F for really dangerous operations
Disambiguate the use of "-F" (force) flag for mke2fs to avoid dangerous
situations. The use of -F is needed for regular backing files and
for filesystems on whole block devices. It should NOT be confused
with mke2fs on an apparently-mounted or in-use filesystem.
Signed-off-by: Andreas Dilger <adilger@clusterfs.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Andreas Dilger [Sun, 16 Jul 2006 02:08:20 +0000 (22:08 -0400)]
Allow default inode_size to be specified in mke2fs.conf and document mke2fs -I
This patch allows "inode_size" to be specified in the mke2fs.conf file,
and always compiles in the "-I" option. In addition, it disallows
specifying the inode size on rev 0 filesystems, though I don't think
this was much of a danger anyways.
Clean up dead lines in ext2fs.h.
Signed-off-by: Andreas Dilger <adilger@clusterfs.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Andreas Dilger [Wed, 21 Jun 2006 04:01:42 +0000 (00:01 -0400)]
debugfs "stat" should print unsigned values for xattrs
This patch changes debugfs to print unsigned chars when "stat" on an inode
finds xattrs in the inode. Without this change, the values are printed
as signed chars, e.g. "ffffffec" instead of "ec".
Signed-off-by: Andreas Dilger <adilger@clusterfs.com>
Matthias Andree [Mon, 29 May 2006 22:54:49 +0000 (00:54 +0200)]
Implement DIOCGMEDIASIZE for FreeBSD's GEOM.
Try DIOCGMEDIASIZE ioctl() if defined, to obtain
the media size on FreeBSD 5.0 and newer.
The binary search fallback doesn't work, as FreeBSD
block devices are unbuffered and refuse reads below
the block size.
Theodore Ts'o [Mon, 29 May 2006 15:06:16 +0000 (11:06 -0400)]
Add missing backwards compatibility for ancient Linux systems
This fixes some (but not all) of the compatibility bugs which prevented
e2fsprogs from being compiled on a Linux 2.0.35 system. There are still
some unprotected use of long long's, and apparently some type problems
with the uuid library, but these can be fixed up later.
Theodore Ts'o [Mon, 29 May 2006 03:42:47 +0000 (23:42 -0400)]
Fix debugfs's dump_unsued commands on filesystems with a 64k blocksize
Use EXT2_MAX_BLOCK_SIZE instead of a hardcoded blocksize of 32768, since
this will fail on a filesystem with a 64k blocksize. (Addresses SourceForge
bug #1424311)
Theodore Ts'o [Sun, 14 May 2006 21:30:51 +0000 (17:30 -0400)]
Remove needless sanity check in tune2fs's -i option.
We were complaining with a confusing error message if the user tried to specify
a check interval larger than a 365 days. It's probably a bad idea if the user wants to
do this, but it's not worth it to complain.
Theodore Ts'o [Sun, 14 May 2006 21:16:29 +0000 (17:16 -0400)]
Fix memory leak in e2fsck's error paths
Add missing brelse() calls to avoid memory leaks in error paths. (Thanks
to Michael C. Thompson for pointing these out; they were originally
found using Coverity.)
Theodore Ts'o [Sun, 14 May 2006 19:33:57 +0000 (15:33 -0400)]
Add RAID stride support to resize2fs
Resize2fs will now automatically determine the RAID stride parameter that
had been used to create the filesystem, and use that for newly created
block groups. The RAID stride parameter may also be manually specified
on the command line using the new -S option to resize2fs.