Eric Sandeen [Thu, 28 Feb 2008 19:22:12 +0000 (13:22 -0600)]
Add regression test for resize2fs moving inodes with inline xattrs
The image contains an inode past the resize point with an inline xattr
value of "propervalue". It also contains deleted inodes which had the
xattr value "oldvalue".
When resize2fs moves the inode, it should copy the xattr as well, so
that post-resize we see "propervalue" not "oldvalue".
Signed-off-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Theodore Ts'o [Wed, 27 Feb 2008 20:01:19 +0000 (15:01 -0500)]
Add support for manipulating large_file feature in mke2fs and tune2fs
Previously we just let the kernel and e2fsck do this automatically,
but e2fsck will no longer automatically clear the large_file feature.
It still isn't really necessary to worry about this feature flag
explicitly, but some users seem to care.
Theodore Ts'o [Wed, 27 Feb 2008 05:00:30 +0000 (00:00 -0500)]
e2fsck: Don't clear the LARGE_FILES feature flag
Stop clearing the EXT2_FEATURE_RO_COMPAT_LARGE_FILE flag automatically
if there are no large files in the filesystem. It's been almost a
decade since there have been kernels that don't support this flag, and
e2fsck clears it quietly without telling the user why the filesystem
has been changed.
Theodore Ts'o [Wed, 27 Feb 2008 03:24:42 +0000 (22:24 -0500)]
libblkid: Add error checking to devicemapper code to avoid segfaults
If a device mapper volume disappears while libblkid code is running,
it is possible for the devicemapper code to return errors, and since
libblkid wasn't checking for error returns, it would dereference a
null pointer and crash. Add error checking to prevent this.
Addresses-RedHat-Bugzilla: #433857
Signed-off-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Theodore Ts'o [Wed, 27 Feb 2008 00:05:33 +0000 (19:05 -0500)]
Fix dumpe2fs parsing of explicit superblock/blocksize parameters
The dumpe2fs syntax documented in the man page has been broken for
some time due to getopt() changes. Change the option syntax in
dumpe2fs to be one which is more extensible and consistent with the
format for extended options in mke2fs and tune2fs.
Theodore Ts'o [Tue, 26 Feb 2008 22:31:06 +0000 (17:31 -0500)]
tune2fs: Add support to clear the resize_inode feature
This requires an fsck aftwards. We don't allow setting the
resize_inode feature because extensive work to tune2fs or e2fsck to
safely relocate blocks is necessary in order to reserve the blocks
needed by the resize inode.
Addresses-Red-Hat-Bugzilla: #167816
Signed-off-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Theodore Ts'o [Tue, 26 Feb 2008 19:26:01 +0000 (14:26 -0500)]
libe2p: New e2p_edit_feature2 which provides better error handling
This creates a new enhanced edit_feature function for libe2p which
supports a different set of feature flags that are OK to clear as
opposed to set, and which returns more specific information about why
the user provided an invalid edit feature command.
Theodore Ts'o [Tue, 26 Feb 2008 17:11:47 +0000 (12:11 -0500)]
debian: Pass 100 to UID_MIN and GID_MIN, not 1
According to the policy, UIDs and GIDs in the range 1-100 are reserved
to be globally allocated by the base-passwd package. The libuuid1
postinstall script passes in UID_MIN=1 and GID_MIN=1. The useradd and
groupadd commands seems to skip UID's between 1 and 100 anyway, but
it's confusing, so we should pass in UID_MIN=100 and GID_MIN=100 for
clarity and in case useradd and groupadd ever changes their behaviour.
e2fsck: factor out code to clear an inode into e2fsck_clear_inode()
Factor out code to clear a bogus inode and update e2fsck's internal
data structures accordingly into a common routine,
e2fsck_clear_inode(). This saves about 200 bytes in the compiled x86
e2fsck executable, and makes the code more maintainable in the
long-term.
Responsibility for byte swapping the extents information rests with
the low-level extent code, which translates the on-disk extents
information to the abstract extent format. The on-disk format will
eventually get more complicated, in order to add support for 64-bit
block numbers, bit-compressed extents, etc. So to avoid needing to
expose all of that complexity in swapfs.c, the in-memory contents of
i_blocks will not be byte-swapped and will be identical to the on-disk
format.
Theodore Ts'o [Fri, 31 Aug 2007 17:39:23 +0000 (13:39 -0400)]
Allow debugfs to be extended for use by test programs
This change allows debugfs to be reused as the base for e2fsprogs
internal test programs, by linking debugfs object files with
additional object file(s) that define additional commands. The test
program's object file(s) should define their own comand table, and
define the symbol extra_cmds to be a pointer to the ss_request_table.
In addition, the symbol debug_prog_name can be used to override the
name of the program printed in the version banner and in the ss
prompt.
Theodore Ts'o [Mon, 18 Feb 2008 14:55:04 +0000 (09:55 -0500)]
debugfs: Fix error handling in strtoblk() and common_block_args_process()
Fix strtoblk() to allow a block number 0, and
common_block_args_process() so it prints an error message if a block
number that can't be parsed by strtoul().
Theodore Ts'o [Sun, 17 Feb 2008 11:59:21 +0000 (06:59 -0500)]
Update to latest samba tdb library before LGPLv3 change
The major changes were:
* Fix realloc() leak on failure case from Jim Meyering
* Fixed various problems in transaction lock code
* Made transaction_brlock() static
* Added more fine-grained locking features
Theodore Ts'o [Sat, 16 Feb 2008 19:14:24 +0000 (14:14 -0500)]
Make fsck ignore mounted filesystems if given the -M option
Adapted from the SuSE patch, but fixes a number of very serious
problems with the patch in SLES:
1) This changeset uses -M instead of -m; most lowercase options are
reserved for use by the filesystem-specific fsck programs. All new
fsck options must be upper case.
2) This changeset will skip the root filesystem in "fsck -AM", which
the SLES patch will not do.
3) Loading /proc/mounts into the fs_info can cause -t opts matching to
malfuction. So this changeset uses a simplified version of the
ismounted.c function from the ext2fs library.
Theodore Ts'o [Sat, 16 Feb 2008 02:28:48 +0000 (21:28 -0500)]
configure.in: Don't use the dc command unless it is required
Some systems don't have the 'dc' command installed, and this causes
configure to print a warning message unnecessarily for a standard
(non-WIP and non-pre) release of e2fsprogs.
It's easy enough to avoid this problem, so let's do it.
Theodore Ts'o [Sat, 16 Feb 2008 02:24:30 +0000 (21:24 -0500)]
uuidd: Fix pid file so it has the correct pid number
The pid file was getting created before the fork(), so it had the
incorrect pid number. No one noticed for a while, since "uuidd -k"
will kill the daemon and it has enough automatic convenience functions
that it's usually not necessary to refer to the pid file except as a
convenient place for uuidd to lock against multiple instances of the
daemon starting up.
Theodore Ts'o [Fri, 15 Feb 2008 22:41:38 +0000 (17:41 -0500)]
libuuid: use fcntl locking instead of lockf
Cygwin doesn't support lockf(), so move to fcntl() locking as more
portable. Also fix a bug which could cause get_lock() to loop forever
if the attempt to lock the file fails for some reason.
Theodore Ts'o [Sun, 10 Feb 2008 03:30:20 +0000 (22:30 -0500)]
blkid: Flush cached filesystem information on any error other than EPERM
USB devices can return ENOMEDIUM, and when the filesystem cached
information wasn't flushed, it resulted in the wrong location of a
filesystem to be returned to the caller. The only justification for
using cached information when the open fails is in the case of a
permission denied error.
Theodore Ts'o [Fri, 8 Feb 2008 21:04:12 +0000 (16:04 -0500)]
blkid: Automatically chose between ext4 and ext4dev as appropriate
Add logic that on Linux systems will check for the presence of the
ext4dev filesystem; if it isn't present, fall back to ext4 for
filesystems that are marked as being "OK for use on test filesystem
code". If they are OK for use for in-development filesystem code, it
should also be fine to use stable filesystem code if there is no test
filesystem code (ext4dev) available.
The reverse is not true, of course. We don't ever want to mount a
production filesystem using test filesystem code unless the user gives
us explicit permission via "tune2fs -E test_fs".
Theodore Ts'o [Mon, 28 Jan 2008 00:38:46 +0000 (19:38 -0500)]
Create filesystems with the ext_attr feature by default
Since recent kernels have a tendency to set this feature willy-nilly,
let's just enable by default. It's only very old kernels that don't
support it any more.
Theodore Ts'o [Sun, 27 Jan 2008 22:43:10 +0000 (17:43 -0500)]
Don't build e2fsck statically by default anymore
Also removed the --enable-dynamic-static configure option.
Unfortunately the usefulness of building e2fsck statically is gone on
all modern distributions, since everything else on the system is built
dynamically these days. In fact on some distributions it is almost
impossible to build programs statically any more.
Theodore Ts'o [Sun, 27 Jan 2008 05:35:32 +0000 (00:35 -0500)]
Use lseek() instead of llseek() of sizeof(long) == sizeof(long long)
Previously we used a hard-coded test where for the Alpha and the IA64,
we used lseek instead of llseek(). Generalize this to whenver
sizeof(long) is the same as sizeof(long long).
It turns out this fixes a FTBFS problem on the x86_64 for Debian,
since dietlibc doesn't provide llseek() on that architecture.
Theodore Ts'o [Sun, 27 Jan 2008 04:17:50 +0000 (23:17 -0500)]
Ignore "safe" flag differences when e2fsck compares superblocks
Recent e2fsprogs (1.40.3 and higher) fsck compares primary superblock to
backups, and if things differ, it forces a full check. However, the
kernel has a penchant for updating flags the first time a feature is
used - attributes, large files, etc.
This is a bad idea, and we should break the kernel of this habit,
especially for the ext4 feature flags. But for now, let's make e2fsck
avoid forcing a full check and backup except when absolutely
necessary.
Signed-off-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Theodore Ts'o [Sun, 27 Jan 2008 00:06:35 +0000 (19:06 -0500)]
Add support for the test_fs flag
The test_fs flag is an "ok to be used with test kernel code" flag. It
makes it easier for us to determine whether a filesystem should be
mounted using ext4 or not.
Theodore Ts'o [Mon, 21 Jan 2008 18:45:00 +0000 (13:45 -0500)]
Explicitly check for ftruncate64() in configure.in
Apparently Mac OS 10.5 defines fstat64(), but not ftruncate64(),
causing resize2fs to fail to build. So check explicitly for
ftruncate64(), and fall back to ftruncate() if necessary.
Theodore Ts'o [Mon, 21 Jan 2008 18:43:18 +0000 (13:43 -0500)]
resize2fs: Add sanity check for off_t overflow before truncating
If we can't use ftruncate64(), and have to use ftruncate() instead,
make sure that we don't accidentally truncate the size when we chop it
down to an off_t before calling ftruncate(), lest we severely damage a
filesystem image file.
Andreas Dilger [Wed, 9 Jan 2008 19:59:47 +0000 (20:59 +0100)]
mke2fs: Make lost+found always have at least 2 blocks
Make sure lost+found has always at least 2 disk blocks. This will provide at
least elementary test that we have not screwed-up support for 64KB blocks since
the second directory block will be empty.
Signed-off-by: Andreas Dilger <adilger@sun.com> Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Theodore Ts'o [Fri, 4 Jan 2008 21:55:37 +0000 (16:55 -0500)]
If --sbindir, et. al are specified to configure set $root_sbindir, et al.
If the user specifies as arguments to configure --bindir, --sbindir,
--libdir, or --sysconfdir, then set corresponding $root_FOO variable,
so that the request from the user to set a specific --sbindir is
honored.
Theodore Ts'o [Fri, 4 Jan 2008 20:28:51 +0000 (15:28 -0500)]
debugfs: Add -p option to ls subcommand.
Originally submitted by Jason Pyeron:
While working with a compromized system (suckit root kit) hidden files
were viewable by debugfs but not any other utility. When spaces and
tabs were put into the directory names defugfs did not "show" them.
"ls -p" quotes the output so is can be parsed easily.