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.
Addresses-Debian-Bug: #459614
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
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>
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.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
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.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
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.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
The groupadd and useradd commands come from passwd, which is not
Essential: yes, so a Depends is needed.
Addresses-Debian-Bug: #459403
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Ensure the length of the UUID is always the same
without the patch:
% blkid /tmp/a /tmp/b
/tmp/a: UUID="7130E4771519577F" TYPE="ntfs"
/tmp/b: UUID="7E9B4A7CCE99CA" TYPE="ntfs"
with the patch:
% blkid /tmp/a /tmp/b
/tmp/a: UUID="7130E4771519577F" TYPE="ntfs"
/tmp/b: UUID="007E9B4A7CCE99CA" TYPE="ntfs"
ie same as:
% vol_id --uuid /tmp/a ; vol_id --uuid /tmp/b
7130E4771519577F
007E9B4A7CCE99CA
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
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.
Addresses-Sourceforge-Bug: 498381
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Pretty trivial, but maybe useful to someone.
Originially submited by Ondrej Sury <ondrej@sury.org>
Addresses-Sourceforge-Patches: #778817
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Fedora and Red Hat puts the devmapper library in different locations
compared to Debian, so we use pkg-config. Unfortunately Debian's
devmapper.pc file is buggy (See Debian Bug #390243), so we have to
work around it.
Historically, e2fsprogs has tried not to depend on pkg-config, since
its answers are so often **wrong** (the Debian bug has been ignored
for over a year), so I'm hoping I'm not going to regret this.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Approximately two years ago a revamp of the e2fsprogs build
infrastructure broke the Makefile fragments for building BSD, Solaris,
and Darwin shared libraries, as well as profiling and checker
libraries. Apparently no one had noticed except for
pierre42@users.sourceforge.net.
Addresses-Sourceforge-Bug: #1819034
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
When recovering a large number of deleted files, linking the undeleted
inodes to directories may require a directory to be expanded. This
could allocate a block that that had been used by one of the
yet-to-be-undeleted files. So the 'undel' command been enhanced to
allow the destination pathname to be optional. This will allow the
cautious user to undelete all of the inodes without specifying a
destination pathname, and then either use debugfs's link command to
add hard links, or use e2fsck to link all of the recovered files to
the lost+found directory.
Addresses-Sourceforge-Feature-Request: #967141
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Previously "e2fsck -fD" on a non-htree directory would sort the
directory alphabetically by name. That's stupid. Better to sort the
directory by inode number, since that will optimize performance much
more significantly than sorting by name!
Addresses-Sourceforge-Feature-Request: #532439
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
If the disk fills while e2image is writing its output file, it will
spew a large number of error messages instead of exiting with a
non-zero status code after the first failure.
Addresses-Sourceforge-Feature-Request: #606508
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Add an explanation of how e2fsck might decide to optimize a few
directories even without the -D option being specified.
Addresses-Debian-Bug: #441872
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
The old document ID, com_err, used an illegal character ('_'); change
it to be comerr-manual to be conformant with the doc-base requirements.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
The adduser package is 'important', and while it is often installed,
we can't guarantee that it will always be there. A required package,
or a package which is dragged in by a required package, such as
libuuid1, shouldn't depend on an 'important' package since that would
implicitly make it be required, which shouldn't be done unless
absolutely necesary.
So we replace the call to adduser with the lower-level useradd and
groupadd programs. They are part of the passwd package, which is
required to be on all Debian systems.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Some people are still running ancient Debian distributions, such as
woody, with a 2.4 kernel, and they want to be able to use the
e2fsck-static package on backlevel systems.
It turns out that we can't just statically link against glibc anymore,
since glibc now uses thread-local storage everywhere. So we now build
e2fsck-static using dietlibc.
Addresses-Debian-Bug: #458017
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
When compiling with diet libc, <sys/types.h> must be included in order
to define the types used in asm/types.h. Strange choice, but
workable. This doesn't cause much problems for e2fsprogs except
blkid/tst_types.h, which needed a #include of <sys/types.h>.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
When compiling with dietlibc, sys/syscall.h isn't supported; as of
dietlibc 0.30, it exists but it references a non-existent asm/unistd.h
header file. So we have to test for its existence and avoid using it
in lib/uuid/gen_uuid.c if it is not supported.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Add a configure option which causes the uuidd helper daemon not to be
built or used by the uuid library.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
inode_uid() and inode_gid() weren't getting defined on systems that
were not Linux, Hurd, or Masix.
Addresses-Sourceforge-Bug: #1859778
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Add some additional checks, primarily in resize2fs and in the rarely
used (and soon to-be-deprecated) e2fsck byte-swap filesystem function.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Use an improved locking protocol based on the pid file to assure that
only one uuidd is started. Apparently the kernel does not prevent
multiple processes from racing to bind to a Unix domain socket.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>