]> git.ipfire.org Git - thirdparty/e2fsprogs.git/log
thirdparty/e2fsprogs.git
10 years agoe2fsprogs: fix blk_t <- blk64_t assignment mismatches
Darrick J. Wong [Mon, 7 Oct 2013 13:51:48 +0000 (09:51 -0400)] 
e2fsprogs: fix blk_t <- blk64_t assignment mismatches

Fix all the places where we should be using a blk64_t instead of a
blk_t.  These fixes are more severe because 64bit values could be
truncated silently.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agolibext2fs: ind_punch() must not stop examining blocks prematurely
Darrick J. Wong [Mon, 7 Oct 2013 13:51:35 +0000 (09:51 -0400)] 
libext2fs: ind_punch() must not stop examining blocks prematurely

When we're iterating the main loop in ind_punch(), "offset" tracks how
far we've progressed into the block map, "start" tells us where to
start punching, and "count" tells us how many blocks we are to punch
after "start".  Therefore, we would like to break out of the loop once
the "offset" that we're looking at has progressed past the end of the
punch range.  Unfortunately, if start !=0, the if-break clause in the
loop causes us to break out of the loop early.

Therefore, change the breakout test to terminate the loop at the
correct time.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agolibext2fs: allow callers to punch a single block
Darrick J. Wong [Mon, 7 Oct 2013 13:51:20 +0000 (09:51 -0400)] 
libext2fs: allow callers to punch a single block

The range of blocks to punch is treated as an inclusive range on both
ends, i.e. if start=1 and end=2, both blocks 1 and 2 are punched out.
Thus, start == end means that the caller wishes to punch a single
block.  Remove the check that prevents us from punching a single
block.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agolibext2fs: rewind extent pointer when totally deleting an extent
Darrick J. Wong [Mon, 7 Oct 2013 13:35:22 +0000 (09:35 -0400)] 
libext2fs: rewind extent pointer when totally deleting an extent

During a punch operation, if we decide to delete an extent out of the
extent tree, the subsequent extents are moved on top of the current
extent (that is to say, they're memmmove'd down one slot).  Therefore
it is not correct to advance to the next leaf because that means we
miss half the extents in the range!  Rereading the current pointer
should be fine.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agolibext2fs: fix a minor grammatical error in the error catalog
Darrick J. Wong [Mon, 7 Oct 2013 13:20:28 +0000 (09:20 -0400)] 
libext2fs: fix a minor grammatical error in the error catalog

'an block' should be 'a block'.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
10 years agolibext2fs: set the large_file feature flag when setting i_size > 2GB
Darrick J. Wong [Tue, 1 Oct 2013 01:27:28 +0000 (18:27 -0700)] 
libext2fs: set the large_file feature flag when setting i_size > 2GB

If someone tries to write a file that is larger than 2GB, we need to
set the large_file feature flag to affirm that i_size_hi can hold
meaningful contents.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
10 years agolibext2fs: only link an inode into a directory once
Darrick J. Wong [Tue, 1 Oct 2013 01:26:55 +0000 (18:26 -0700)] 
libext2fs: only link an inode into a directory once

The ext2fs_link helper function link_proc does not check the value of
ls->done, which means that if the function finds multiple empty spaces
that will fit the new directory entry, it will create a directory
entry in each of the spaces.  Instead of doing that, check the done
value and don't do anything more if we've already added the directory
entry.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
10 years agotests: add test for resize2fs -M with inode table in middle of block group
Theodore Ts'o [Tue, 1 Oct 2013 03:07:27 +0000 (23:07 -0400)] 
tests: add test for resize2fs -M with inode table in middle of block group

Eric Sandeen reported that Fedora's mke2fs when compiled for ppc was
creating a file system which caused problems with resize2fs -M.
Closer examination showed that the problem was file system which
looked like this:

Filesystem features:      ext_attr dir_index filetype sparse_super
Inode count:              512
Block count:              1247
   ...

Group 0: (Blocks 1-1024)
  Primary superblock at 1, Group descriptors at 2-2
  Block bitmap at 66 (+65), Inode bitmap at 67 (+66)
  Inode table at 68-99 (+67)

Group 1: (Blocks 1025-1246)
  Backup superblock at 1025, Group descriptors at 1026-1026
  Block bitmap at 1090 (+65), Inode bitmap at 1091 (+66)
  Inode table at 1092-1123 (+67)

It's not obvious to me why Fedora's ppc mke2fs is creating file
systems like this (I can't reproduce this on debian ppc systems), but
resize2fs -M should be able to deal with such file systems, which is
what this test is designed to check.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agoresize2fs: relocate inode table blocks if necessary when shrinking
Theodore Ts'o [Tue, 1 Oct 2013 02:55:21 +0000 (22:55 -0400)] 
resize2fs: relocate inode table blocks if necessary when shrinking

If the file system is being shrunk, and a block group's inode table
falls beyond the end of the inode table, we need to try to relocate
the inode table blocks.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agoresize2fs: fix -M size calculations to avoid cutting off the inode table
Theodore Ts'o [Tue, 1 Oct 2013 02:35:14 +0000 (22:35 -0400)] 
resize2fs: fix -M size calculations to avoid cutting off the inode table

If the file system's inode table blocks in the last block group are
located in the middle or the end of the block group, it's possible for
resize2fs -M to use a size which will require relocating the inode
table blocks in the last block group.  This can lead to all sorts of
problems, so solve it by simply guaranteeing that we will never do
that.

Reported-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agoresize2fs: add debugging support for resize2fs -M calcuations
Theodore Ts'o [Tue, 1 Oct 2013 02:12:22 +0000 (22:12 -0400)] 
resize2fs: add debugging support for resize2fs -M calcuations

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agotests: add another test for uninit extents past eof
Eric Whitney [Fri, 27 Sep 2013 00:17:09 +0000 (20:17 -0400)] 
tests: add another test for uninit extents past eof

Commit d3f32c2db8 was intended to detect extents found outside their
proper location in the extent tree, including invalid extents at the
end of an extent block.  However, it incorrectly reported legal
uninitialized extents created by fallocate() at the end of file with
the FALLOC_FL_KEEP_SIZE flag as false positives.  xfstests
generic/263 (among others) caught this problem, while the e2fsprogs
test f_uninit_ext_past_eof did not.  The latter test failed to
detect the problem in part because it uses a test file whose i_size
is 0.

Add a test derived from the fsx-based test case in xfstests
generic/263 consisting of a file with non-zero length, more than
four extents total, and two uninitialized extents past EOF to
reliably reproduce commit d3f32c2db8's false positive behavior.

Signed-off-by: Eric Whitney <enwlinux@gmail.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
10 years agoe2fsck: don't report uninit extents past EOF invalid
Eric Whitney [Mon, 9 Sep 2013 14:53:03 +0000 (10:53 -0400)] 
e2fsck: don't report uninit extents past EOF invalid

Commit d3f32c2db8 introduced a regression that caused e2fsck failures
in xfstests generic 013, 070, 083, 091, and 263.  Uninitialized
extents created by fallocate() at the end of file with the
FALLOC_FL_KEEP_SIZE flag were identified as invalid.  However,
because the file size is not increased when FALLOC_FL_KEEP_SIZE is
used, uninitialized extents can correctly contain blocks located past
the end of file.

Fix this by filtering out possible invalid extents if they are
uninitialized and extend past the block containing the end of file.

Signed-off-by: Eric Whitney <enwlinux@gmail.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agolibext2fs: fix a coding style for EXT2_NO_MTAB_FILE
Zheng Liu [Mon, 5 Aug 2013 05:02:43 +0000 (13:02 +0800)] 
libext2fs: fix a coding style for EXT2_NO_MTAB_FILE

When we define an error in lib/ext2fs/ext2_err.et.in, we will always use
EXT2_ET_* prefix for a new error.  But EXT2_NO_MTAB_FILE doesn't obey
this rule.  So fix it.

Signed-off-by: Zheng Liu <wenqing.lz@taobao.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agoresize2fs: fix interior extent node corruption
Eric Sandeen [Mon, 9 Sep 2013 14:47:21 +0000 (10:47 -0400)] 
resize2fs: fix interior extent node corruption

If we have an extent tree like this (from debuge2fs's "ex" command):

Level Entries       Logical            Physical Length Flags
...
 2/ 2  60/ 63 13096 - 13117 650024 - 650045     22
 2/ 2  61/ 63 13134 - 13142 650062 - 650070      9
 2/ 2  62/ 63 13193 - 13194 650121 - 650122      2
 2/ 2  63/ 63 13227 - 13227 650155 - 650155      1 A)
 1/ 2   4/ 14 13228 - 17108 655367            3881 B)
 2/ 2   1/117 13228 - 13251 650156 - 650179     24 C)
 2/ 2   2/117 13275 - 13287 650203 - 650215     13
 2/ 2   3/117 13348 - 13353 650276 - 650281      6
...

and we resize the fs in such a way that all of those blocks must
be moved down, we do them one at a time.  Eventually we move 1-block
extent A) to a lower block, and then follow it with the other
blocks in the next logical offsets from extent C) in the next
interior node B).

The userspace extent code tries to merge, so when it finds that
logical 13228 can be merged with logical 13227 into a single extent,
it does.  And so on, all through extent C), up to block 13250 (why
not 13251?  [1]), and eventually move the node block as well.
So we end up with this when all the blocks are moved post-resize:

Level Entries       Logical            Physical Length Flags
...
 2/ 2 120/122 13193 - 13193  33220 -  33220      1
 2/ 2 121/122 13194 - 13194  33221 -  33221      1
 2/ 2 122/122 13227 - 13250  33222 -  33245     24 D)
 1/ 2   5/ 19 13228 - 17108  34676            3881 E) ***
 2/ 2   1/222 13251 - 13251  33246 -  33246      1 F)
 2/ 2   2/222 13275 - 13286  33247 -  33258     12
...

All those adjacent blocks got moved into extent D), which is nice -
but the next interior node E) was never updated to reflect its new
starting point - it says the leaf extents beneath it start at 13228,
when in fact they start at 13251.

So as we move blocks one by one out of original extent C) above, we
need to keep updating C)'s parent node B) for a proper starting point.
fix_parents() does this.

Once the tree is corrupted like this, more corruption can
ensue post-resize, because we traverse the tree by interior nodes,
relying on their start block to know where we are in the tree.
If it gets off, we'll end up inserting blocks into the wrong part
of the tree, etc.

I have a testcase using fsx to create a complex extent tree which
is then moved during resize; it hit this corruption quite easily,
and with this fix, it succeeds.

Note the first hunk in the commit is for going the other way,
moving the last block of an extent to the extent after it; this
needs the same sort of fix-up, although I haven't seen it in
practice.

[1] We leave the last block because a single-block extent is its
own case, and there is no merging code in that case.  \o/

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agoresize2fs: use blk64_t and location getters for free_gdp_blocks()
Darrick J. Wong [Mon, 9 Sep 2013 14:40:36 +0000 (10:40 -0400)] 
resize2fs: use blk64_t and location getters for free_gdp_blocks()

free_gdp_blocks needs to be taught to use 64-bit fields and the appropriate
getters, otherwise it'll truncate high block numbers (when, say, resizing a
>16T fs) and mark the low numbered group descriptor blocks as free.  Yikes.

Reported-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agolibext2fs: ext2fs_dup_handle should not alias MMP buffers
Darrick J. Wong [Mon, 9 Sep 2013 14:39:29 +0000 (10:39 -0400)] 
libext2fs: ext2fs_dup_handle should not alias MMP buffers

It turns out that resize2fs uses ext2fs_dup_handle to duplicate fs handles.  If
MMP is enabled, this causes both handles to share MMP buffers, which is bad
news when it comes time to free both handles.  Change the code to (we hope) fix
this.  This prevents resize2fs from failing with a double-free error when
handed a MMP filesystem.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agoe2fsck: don't try to stop mmp if there is no superblock set up
Eric Sandeen [Mon, 9 Sep 2013 14:33:20 +0000 (10:33 -0400)] 
e2fsck: don't try to stop mmp if there is no superblock set up

Under some failure cases, we can get to fatal_error()
without even having a superblock set up.  In that case,
ext2fs_mmp_stop() will segfault when it tries to dereference
fs->super.

Check for the existence of a superblock before we go
down the ext2fs_mmp_stop() path to avoid this problem.

Reported-by: Hubert Kario <hkario@redhat.com>
Addresses-Red-Hat-Bugzilla: #997972
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agodebian: remove old symlinks to /usr/share/doc
Theodore Ts'o [Sun, 11 Aug 2013 15:52:35 +0000 (11:52 -0400)] 
debian: remove old symlinks to /usr/share/doc

(Merged in NMU'ed change for Debian-Bug: #698879)

Merge commit '7dc67c0ad5daa7cbdf6d79a73bb34e04d55f7406' into maint

Conflicts:
debian/changelog

10 years agodebian: remove old symlinks to /usr/share/doc
Theodore Ts'o [Sun, 11 Aug 2013 15:49:01 +0000 (11:49 -0400)] 
debian: remove old symlinks to /usr/share/doc

(From NMU'ed change)

Addresses-Debian-Bug: #698879

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agodebugfs: properly set up extent header in do_write
Eric Sandeen [Mon, 29 Jul 2013 02:31:44 +0000 (22:31 -0400)] 
debugfs: properly set up extent header in do_write

do_write doesn't fully set up the first extent header on a new
inode, so if we write a 0-length file, and don't write any data
to the new file, we end up creating something that looks corrupt
to kernelspace:

EXT4-fs error (device loop0): ext4_ext_check_inode:464: inode #12: comm ls: bad header/extent: invalid magic - magic 0, entries 0, max 0(0), depth 0(0)

Do something similar to ext4_ext_tree_init() here, and
fill out the first extent header upon creation to avoid this.

Reported-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Tested-by: Robert Yang <liezhi.yang@windriver.com>
10 years agoe2fsck: correctly deallocate invalid extent-mapped symlinks
Theodore Ts'o [Mon, 29 Jul 2013 01:49:38 +0000 (21:49 -0400)] 
e2fsck: correctly deallocate invalid extent-mapped symlinks

The function deallocate_inode() in e2fsck/pass2.c was buggy in that it
would clear out the inode's mode and flags fields before trying to
deallocate any blocks which might belong to the inode.

The good news is that deallocate_inode() is mostly used to free inodes
which do not have blocks: device inodes, FIFO's, Unix-domain sockets.

The bad news is that if deallocate_inode() tried to free an invalid
extent-mapped inode, it would try to interpret the root of the extent
node as block numbers, and would therefore mark various file system
metadata blocks (the superblock, block group descriptors, the root
directory, etc.) as free and available for allocation.  This was
unfortunate.

(Try running an older e2fsck against the test file system image in the
new test f_invalid_extent_symlink, and then run e2fsck a second time
on the fs image, and weep.)

Fortunately, this kind of file system image corruption appears to be
fairly rare in actual practice, since it would require a very unlucky
set of bits to be flipped, or a buggy file system implementation.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agoe2fsck: check extent-mapped directories with really large logical blocks
Theodore Ts'o [Mon, 29 Jul 2013 00:54:36 +0000 (20:54 -0400)] 
e2fsck: check extent-mapped directories with really large logical blocks

E2fsck was missing a check for directories with logical blocks so
large that i_size > 2GB.  Without this check the test image found in
the new test f_toobig_extent_dir will cause e2fsck to die with a
memory allocation failure:

Error storing directory block information (inode=12, block=0, num=475218819): Memory allocation failed
e2fsck: aborted

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Reported-by: Andrey Melnikov <temnota.am@gmail.com>
10 years agolibext2fs, tests: allow /etc/mtab file to be missing
Theodore Ts'o [Mon, 8 Jul 2013 16:08:44 +0000 (12:08 -0400)] 
libext2fs, tests: allow /etc/mtab file to be missing

The environment variable EXT2FS_NO_MTAB_OK will suppress the error
code EXT2_NO_MTAB_FILE when the /etc/mtab file can not be found.  This
allows the e2fsprogs regression test suite to be run in chroots which
might not have an /etc/mtab file.

By default will still want to complain if the /etc/mtab file is
missing, since we really don't want to discourage distributions and
purveyors of embedded systems from running without an /etc/mtab file.
But if it's missing it only results in a missing sanity check that
might cause file system corruption if the file system is mounted when
programs such as e2fsck, tune2fs, or resize2fs is running, so there is
no potential security problems that might result if this environment
variable is set inappropriately.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agoUpdate release notes, etc., for final 1.42.8 release v1.42.8
Theodore Ts'o [Fri, 21 Jun 2013 03:11:13 +0000 (23:11 -0400)] 
Update release notes, etc., for final 1.42.8 release

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agomke2fs: calculate journal blocks just after fs initialize
Ashish Sangwan [Sat, 11 May 2013 03:42:13 +0000 (09:12 +0530)] 
mke2fs: calculate journal blocks just after fs initialize

We can calculate journal blocks as soon as blocksize is set.
It will help to figure out wrong journal blocks count earlier.
This will save some un-necessary initialization.

Without patch output =>
mke2fs /dev/sdc1 -J size=1048576
mke2fs 1.42.7 (21-Jan-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
61312 inodes, 244936 blocks
12246 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=251658240
8 block groups
32768 blocks per group, 32768 fragments per group
7664 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376

Allocating group tables: done
Writing inode tables: done

The requested journal size is 268435456 blocks; it must be
between 1024 and 10240000 blocks.  Aborting.

With patch output =>
mke2fs /dev/sdc1 -J size=1048576
mke2fs 1.42.7 (21-Jan-2013)

The requested journal size is 268435456 blocks; it must be
between 1024 and 10240000 blocks.  Aborting.

Signed-off-by: Ashish Sangwan <a.sangwan@samsung.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
10 years agoresize2fs: move bitmaps if shrinking would orphan them
Eric Sandeen [Wed, 19 Jun 2013 01:37:05 +0000 (20:37 -0500)] 
resize2fs: move bitmaps if shrinking would orphan them

It is possible to have a flex_bg filesystem with block groups
which have inode & block bitmaps at some point well past the
start of the group.

If an offline shrink puts the new size somewhere between
the start of the block group and the (old) location of
the bitmaps, they can be left beyond the end of the filesystem,
i.e. result in fs corruption.

Check each remaining block group for whether its bitmaps
are beyond the end of the new filesystem, and reallocate
them in a new location if needed.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
10 years agoUse ext2fs_cpu_to_be32() instead of cpu_to_be32() in kernel-jbd.h
Theodore Ts'o [Sun, 16 Jun 2013 22:58:40 +0000 (18:58 -0400)] 
Use ext2fs_cpu_to_be32() instead of cpu_to_be32() in kernel-jbd.h

Avoid compatibility problems by using the byte swapping functions
defined by e2fsprogs, instead of the ones defined in the system header
files.  We use them everywhere else, so we should use them in
kernel-jbd.h too.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agoUpdate Release Notes, Changelogs, version.h, for 1.42.8 release
Theodore Ts'o [Sun, 16 Jun 2013 22:36:34 +0000 (18:36 -0400)] 
Update Release Notes, Changelogs, version.h, for 1.42.8 release

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agoWork around Debian Bug #712530
Theodore Ts'o [Sun, 16 Jun 2013 20:14:40 +0000 (16:14 -0400)] 
Work around Debian Bug #712530

Add a test to see if the backtrace() function requires linking in a
library in /usr/lib.

Addresses-Debian-Bug: #708307

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agoTry to use secure_getenv() in preference to __secure_getenv()
Theodore Ts'o [Sun, 16 Jun 2013 18:34:59 +0000 (14:34 -0400)] 
Try to use secure_getenv() in preference to __secure_getenv()

If secure_getenv() use it in preference to __secure_getenv().
Starting with (e)glibc version 2.17, secure_getenv() exists, while
__secure_getenv() only works with shared library links (where it is a
weak symbol), but not for static links with /lib/libc.a

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agomke2fs: don't set root dir UID/GID automatically
Andreas Dilger [Sun, 16 Jun 2013 01:45:37 +0000 (21:45 -0400)] 
mke2fs: don't set root dir UID/GID automatically

Don't change the root directory's UID/GID automatically just because
mke2fs was run as a non-root user.  This can be confusing for users,
and is not flexible for non-root installation tools that need to
create a filesystem with different ownership from the current user.

Add the "-E root_owner[=uid:gid]" option to mke2fs so that the user
and group can be explicitly specified for the root directory.  If
the "=uid:gid" argument is not specified, the current UID and GID
are extracted from the running process, as was done in the past.

Signed-off-by: Andreas Dilger <adilger@dilger.ca>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
10 years agomke2fs: clarify mke2fs and mke2fs.conf man pages
Theodore Ts'o [Sun, 16 Jun 2013 01:19:39 +0000 (21:19 -0400)] 
mke2fs: clarify mke2fs and mke2fs.conf man pages

Addresses-Debian-Bug: #712429
Addresses-Debian-Bug: #712430

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agoe2image: fix crash when using e2image -I with a 64-bit file system
Theodore Ts'o [Sun, 16 Jun 2013 00:52:08 +0000 (20:52 -0400)] 
e2image: fix crash when using e2image -I with a 64-bit file system

Addresses-Debian-Bug: #703067

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agomke2fs: sort option parsing, deprecate "-R"
Andreas Dilger [Sat, 15 Jun 2013 22:47:30 +0000 (18:47 -0400)] 
mke2fs: sort option parsing, deprecate "-R"

A minor cleanup to order the command-line option parsing in
alphabetical order, except for "-E" and "-R", which need to
be co-located.

Print a message that the "-R" option is deprecated.  It has
been deprecated since 2005 (commit c6a44136b9b).

Signed-off-by: Andreas Dilger <adilger@dilger.ca>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
10 years agotests: clean up sed filtering of test output
Andreas Dilger [Sat, 15 Jun 2013 22:44:09 +0000 (18:44 -0400)] 
tests: clean up sed filtering of test output

The sed filters for test outputs that are used to remove build and
test specific information (such as version strings, dates, times,
UUIDs) were unconditionally deleting the first line of output.  This
would normally contain the tool version string, but in some cases
contained other information that was being lost.  This can lead to
difficulty debugging test failures.

The sed filtering has been changed to only remove the actual version
strings.  As well, similar filter strings were duplicated throughout
many scripts, and "sed" and "tr" were often called multiple times in
a pipeline.  These have been consolidated into a single filter.sed
file to avoid having to maintain these filters in multiple places.

In a few cases, accidentally deleted messages have been restored to
the expect output for the tests.  In other cases, trivial whitespace
has been changed in the expect files.

Signed-off-by: Andreas Dilger <adilger@dilger.ca>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
10 years agolibext2fs: optimize ext2fs_bg_has_super()
Theodore Ts'o [Sat, 15 Jun 2013 22:29:52 +0000 (18:29 -0400)] 
libext2fs: optimize ext2fs_bg_has_super()

Reduce the CPU time needed when checking whether a block group has a
sparse superblock.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agolibext2fs: remove lib/ext2fs/sparse.c
Theodore Ts'o [Mon, 10 Jun 2013 13:15:43 +0000 (09:15 -0400)] 
libext2fs: remove lib/ext2fs/sparse.c

This file was never getting compiled, and there is no user of
ext2fs_list_backups() in the e2fsprogs sources.  So remove it as a
clean up.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agotests: add new test f_extent_oobounds
Theodore Ts'o [Fri, 7 Jun 2013 03:52:08 +0000 (23:52 -0400)] 
tests: add new test f_extent_oobounds

This tests creates a file system where the last entry in one leaf
block overlaps with logical block range in the first entry of the next
leaf block.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agoe2fsck: detect invalid extents at the end of an extent-block
David Jeffery [Fri, 7 Jun 2013 00:04:33 +0000 (20:04 -0400)] 
e2fsck: detect invalid extents at the end of an extent-block

e2fsck does not detect extents which are outside their location in the
extent tree.  This can result in a bad extent at the end of an extent-block
not being detected.

From a part of a dump_extents output:

 1/ 2  37/ 68 143960 - 146679 123826181               2720
 2/ 2   1/  2 143960 - 146679 123785816 - 123788535   2720
 2/ 2   2/  2 146680 - 147583 123788536 - 123789439    904 Uninit <-bad extent
 1/ 2  38/ 68 146680 - 149391 123826182               2712
 2/ 2   1/  2 146680 - 147583     18486 -     19389    904
 2/ 2   2/  2 147584 - 149391 123789440 - 123791247   1808

e2fsck does not detect this bad extent which both overlaps another, valid
extent, and is invalid by being beyond the end of the extent above it in
the tree.

This patch modifies e2fsck to detect this invalid extent and remove it.

Signed-off-by: David Jeffery <djeffery@redhat.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
10 years agoe2fsck: fix gcc -Wall nits
Theodore Ts'o [Mon, 20 May 2013 01:13:33 +0000 (21:13 -0400)] 
e2fsck: fix gcc -Wall nits

Perhaps the most serious fix up is a type-punning warning which could
result in miscompilation with overly enthusiastic compilers.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agomisc: fix gcc -Wall warnings
Theodore Ts'o [Mon, 20 May 2013 00:03:48 +0000 (20:03 -0400)] 
misc: fix gcc -Wall warnings

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
10 years agolibext2fs: fix gcc -Wall warnings
Theodore Ts'o [Sun, 19 May 2013 22:50:10 +0000 (18:50 -0400)] 
libext2fs: fix gcc -Wall warnings

Primarily signed vs unsigned and const warnings.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agochattr: clarify that the compression flags are not supported by ext4
Theodore Ts'o [Mon, 13 May 2013 13:10:16 +0000 (09:10 -0400)] 
chattr: clarify that the compression flags are not supported by ext4

... or indeed by any mainline kernel, since the compression patches
were never stablized.

Addresses-Debian-Bug: #707609

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Reported-by: "Creidieki M. Crouch" <creidieki@gmail.com>
11 years agoe2fsck: don't use IO_FLAG_EXCLUSIVE for read-only root file systems
Theodore Ts'o [Sat, 4 May 2013 23:07:18 +0000 (19:07 -0400)] 
e2fsck: don't use IO_FLAG_EXCLUSIVE for read-only root file systems

When opening the external journal, use the same logic to decide
whether or not to open the file system with EXT2_FLAG_EXCLUSIVE found
in main().

Otherwise, it's not posible to use e2fsck when the root file system is
using an external journal.

Reported-by: Calvin Owens <jcalvinowens@gmail.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agoconfigure: update configure script to be in sync with the configure.in file
Theodore Ts'o [Sat, 4 May 2013 23:01:09 +0000 (19:01 -0400)] 
configure: update configure script to be in sync with the configure.in file

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agotests: add new test f_zero_xattr
Theodore Ts'o [Thu, 25 Apr 2013 04:28:05 +0000 (00:28 -0400)] 
tests: add new test f_zero_xattr

E2fsck previously was complaining with zero-length extended attributes
if they appeared in the in-inode xattr space.  Test to make sure
e2fsck is now happy with such xattrs.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agoe2fsprogs: allow 0-length xattr values in e2fsck
Eric Sandeen [Thu, 25 Apr 2013 04:14:33 +0000 (00:14 -0400)] 
e2fsprogs: allow 0-length xattr values in e2fsck

e2fsck thinks that this:

# touch mnt/testfile1
# setfattr -n "user.test" mnt/testfile1

results in a filesystem with corruption:

Pass 1: Checking inodes, blocks, and sizes
Extended attribute in inode 12 has a value size (0) which is invalid
Clear? yes

but as far as I can tell, there is absolutely nothing wrong with
a 0-length value on an extended attribute.  Just remove the check.

Reported-by: David Shaw <dshaw@jabberwocky.com>
Reported-by: Harald Reindl <h.reindl@thelounge.net>
Addresses-Red-Hat-Bugzilla: #557959
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
11 years agocrcsum: remove the -b option since ext2fs_crc32c_be is dropped in 1.43.x
Theodore Ts'o [Mon, 22 Apr 2013 04:04:36 +0000 (00:04 -0400)] 
crcsum: remove the -b option since ext2fs_crc32c_be is dropped in 1.43.x

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agolibext2fs: only use override function when reading an 128 byte inode
Theodore Ts'o [Mon, 22 Apr 2013 03:53:26 +0000 (23:53 -0400)] 
libext2fs: only use override function when reading an 128 byte inode

The ext2fs_read_inode_full() function should not use fs->read_inode()
if the caller has requested more than the base 128 byte inode
structure and the inode size is greater than 128 bytes.  Otherwise the
caller won't get all of the bytes that they were asking for, since
there's no way for the fs->read_inode override function can know what
the size of the buffer passed to ext2fs_read_inode_full().

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agoe2image: fix flag settings in e2image.h
Tomas Racek [Mon, 22 Apr 2013 03:48:58 +0000 (23:48 -0400)] 
e2image: fix flag settings in e2image.h

This prevents from SIGSEGV when -s options is used.

Signed-off-by: Tomas Racek <tracek@redhat.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Reviewed-by: Lukas Czerner <lczerner@redhat.com>
11 years agoe2image: require that -a option is used only with raw or QCOW2 image
Tomas Racek [Mon, 22 Apr 2013 03:21:32 +0000 (23:21 -0400)] 
e2image: require that -a option is used only with raw or QCOW2 image

All data cannot be included in normal image file so e2image should exit
in this case.

Signed-off-by: Tomas Racek <tracek@redhat.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
11 years agoe2image: man: fix typo
Tomas Racek [Mon, 22 Apr 2013 03:21:32 +0000 (23:21 -0400)] 
e2image: man: fix typo

Signed-off-by: Tomas Racek <tracek@redhat.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
11 years agoe2image: remove useless exit call
Tomas Racek [Mon, 22 Apr 2013 03:21:32 +0000 (23:21 -0400)] 
e2image: remove useless exit call

Exit is called right after the install_image anyway so this one can
be removed.

Signed-off-by: Tomas Racek <tracek@redhat.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
11 years agotune2fs: disallow tune2fs to set inode size larger than block size
Akira Fujita [Mon, 22 Apr 2013 03:14:28 +0000 (23:14 -0400)] 
tune2fs: disallow tune2fs to set inode size larger than block size

Disallow tune2fs command to set the inode size to be larger than the
block size.  Without this patch, tune2fs makes the file system to be
unmountable.

Steps to reproduce:

1.Create ext4 without flex_bg (or just create ext3)
  # mke2fs -t ext4 -O ^flex_bg DEV

2.Set inode size larger than block size
  # tune2fs -I 8192 DEV

3. We failed to mount FS
  # mount DEV MP
    mount: wrong fs type, bad option, bad superblock on /dev/sda7,
           missing codepage or helper program, or other error
           In some cases useful info is found in syslog - try
           dmesg | tail  or so

Signed-off-by: Akira Fujita <a-fujita@rs.jp.nec.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agotests: add more tests for off-line resizing
Theodore Ts'o [Mon, 1 Apr 2013 00:34:24 +0000 (20:34 -0400)] 
tests: add more tests for off-line resizing

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agotests: create crcsum progam to support resizing tests
Theodore Ts'o [Mon, 1 Apr 2013 00:31:46 +0000 (20:31 -0400)] 
tests: create crcsum progam to support resizing tests

The only checksum program which we can reliably count upon being
installed on all systems is "sum", which is not a particular robust
checksum.  The problem with using md5sum or sha1sum is it hat it may
not be installed on all systems.  So create a crcsum program which is
used so we can validate that a data file on a resized file system has
not been corrupted.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agomke2fs: don't display bigalloc/quota fs feature warnings in quiet mode
Theodore Ts'o [Mon, 1 Apr 2013 00:29:46 +0000 (20:29 -0400)] 
mke2fs: don't display bigalloc/quota fs feature warnings in quiet mode

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agoresize2fs: fix off-line resize of file systems with flex_bg && !resize_inode
Theodore Ts'o [Sun, 31 Mar 2013 17:24:39 +0000 (13:24 -0400)] 
resize2fs: fix off-line resize of file systems with flex_bg && !resize_inode

When doing an off-line resize2fs of an initially very small file
system, it's possible to run out of reserved gdt blocks (which are
reserved via the resize inode).  Once we run out, we need to move the
allocation bitmaps and inode table out of the way to grow the gdt
blocks.  Unfortunately, when moving these metadata blocks, it was
possible that a block that had been just been newly allocated for a
new block group could also get allocated for a metadata block for an
existing block group that was being moved.

To prevent this, after we grow the gdt blocks and allocate the
metadata blocks for the new block groups, make sure all of these
blocks are marked as reserved.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Reported-by: John Jolly <john.jolly@gmail.com>
11 years agoblkid: remove no-op statement which caused a clang warning
Theodore Ts'o [Wed, 13 Mar 2013 18:34:08 +0000 (14:34 -0400)] 
blkid: remove no-op statement which caused a clang warning

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agodebugfs: fix command failures for extent_inode commands that take arguments
Theodore Ts'o [Wed, 13 Mar 2013 18:19:16 +0000 (14:19 -0400)] 
debugfs: fix command failures for extent_inode commands that take arguments

The extent_inode commands split_node, replace_node, and insert_node
take arguments which resulted in confusing error messages after
succeeding.  Fix this.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agoe2fsck: fix build failure with --enable-jbd-debug
Theodore Ts'o [Wed, 13 Mar 2013 18:02:53 +0000 (14:02 -0400)] 
e2fsck: fix build failure with --enable-jbd-debug

Commit e3507739e4185 introduced a build failure if e2fsprogs is
configured with --enable-jbd-debug.  Fix this.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agolibext2fs: Provide prototype for ext2fs_symlink()
Jan Kara [Mon, 25 Feb 2013 05:55:07 +0000 (05:55 +0000)] 
libext2fs: Provide prototype for ext2fs_symlink()

New function ext2fs_symlink() doesn't have a prototype in ext2fs.h and
thus debugfs compilation gives warning:

debugfs.c:2219:2: warning: implicit declaration of function 'ext2fs_symlink'

Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
11 years agoe2p: Fix 's' handling in parse_num_blocks2()
Jan Kara [Mon, 25 Feb 2013 05:55:05 +0000 (05:55 +0000)] 
e2p: Fix 's' handling in parse_num_blocks2()

parse_num_blocks2() wrongly did:
num << 1;
when log_block_size < 0. That is obviously wrong as such statement has
no effect (and the compiler properly warns about it). Callers expect
returned value to be in bytes when log_block_size < 0 so fix the
statement accordingly.

Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
11 years agochattr: allow clearing the extent flag
Theodore Ts'o [Sat, 23 Feb 2013 03:23:05 +0000 (22:23 -0500)] 
chattr: allow clearing the extent flag

In order to support kernels which support conversion of extent-mapped
files to direct/indirect mapped files, remove the sanity check which
prevented clearing the extent flag in chattr.  Kernels which don't
support this will simply give an Operation Not Supported error.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agodebugfs: add sanity check to make sure we never shift 64 bits right
Theodore Ts'o [Mon, 28 Jan 2013 14:02:23 +0000 (09:02 -0500)] 
debugfs: add sanity check to make sure we never shift 64 bits right

In the tables which are used to parse the fields for the set_fields
command, there should never be a entry which has a size set to 8
bytes, and two pointers defined.  Not only would it result in
undefined behavior in the compiled code, it doesn't make any sense and
is definitely a bug.

Reported-by: Xi Wang <xi.wang@gmail.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agopo: update de.po (from translationproject.org)
Philipp Thomas [Mon, 28 Jan 2013 03:44:56 +0000 (22:44 -0500)] 
po: update de.po (from translationproject.org)

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
11 years agoFix warnings about functions not returning a value
Philipp Thomas [Mon, 28 Jan 2013 03:41:44 +0000 (22:41 -0500)] 
Fix warnings about functions not returning a value

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agobuild: quiet build warnings for "gcc -Wall"
Andreas Dilger [Mon, 28 Jan 2013 03:29:01 +0000 (22:29 -0500)] 
build: quiet build warnings for "gcc -Wall"

Signed-off-by: Andreas Dilger <adilger@dilger.ca>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agocontrib: add missing '-p' to fallocate's usage message
Zheng Liu [Fri, 25 Jan 2013 03:44:19 +0000 (11:44 +0800)] 
contrib: add missing '-p' to fallocate's usage message

Signed-off-by: Zheng Liu <wenqing.lz@taobao.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agolibext2fs: fix ext2fs_llseek on i386
Phillip Susi [Thu, 24 Jan 2013 16:21:56 +0000 (11:21 -0500)] 
libext2fs: fix ext2fs_llseek on i386

ext2fs_llseek() was using lseek instead of lseek64.  The
only time it would use lseek64 is if passed an offset that
overflowed 32 bits.  This works for SEEK_SET, but not
SEEK_CUR, which can apply a small offset to move the file
pointer past the 32 bit limit.

The code has been changed to instead try lseek64 first, and
fall back to lseek if that fails.  It also was doing a
runtime check of the size of off_t.  This has been moved to
compile time.

This fixes a problem which would cause e2image when built for
x86-32 to bomb out when used with large file systems.

Signed-off-by: Phillip Susi <psusi@ubuntu.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agoUpdate Release Notes, Changelogs, version.h, for final 1.42.7 release v1.42.7
Theodore Ts'o [Tue, 22 Jan 2013 03:03:18 +0000 (22:03 -0500)] 
Update Release Notes, Changelogs, version.h, for final 1.42.7 release

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agomke2fs, tune2fs, resize2fs: add warning messages for bigalloc and quota
Theodore Ts'o [Tue, 22 Jan 2013 00:07:38 +0000 (19:07 -0500)] 
mke2fs, tune2fs, resize2fs: add warning messages for bigalloc and quota

The bigalloc and quota features have some known issues, so issue
warnings in case users try to use them.

More information can be found here:
https://ext4.wiki.kernel.org/index.php/Bigalloc
https://ext4.wiki.kernel.org/index.php/Quota

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agocontrib: fix namespace leakage in spd_readdir
Theodore Ts'o [Mon, 21 Jan 2013 22:19:50 +0000 (17:19 -0500)] 
contrib: fix namespace leakage in spd_readdir

Declare the internal symbols alloc_dirstruct() and cache_dirstruct()
as static so they don't leak out into the global namespace.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agocontrib: add thread locking and readdir64_r support to spd_readdir
Theodore Ts'o [Mon, 21 Jan 2013 22:15:25 +0000 (17:15 -0500)] 
contrib: add thread locking and readdir64_r support to spd_readdir

This is part of a series of improvements from a 2008 version of
spd_readdir.c that somehow didn't make it into the version which we
checked into e2fsprogs git tree.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agocontrib: add safe_getenv() support to spd_readdir
Theodore Ts'o [Mon, 21 Jan 2013 21:35:16 +0000 (16:35 -0500)] 
contrib: add safe_getenv() support to spd_readdir

This is part of a series of improvements from a 2008 version of
spd_readdir.c that somehow didn't make it into the version which we
checked into e2fsprogs git tree.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agoresize2fs: move a cluster at a time with bigalloc file systems
Theodore Ts'o [Sun, 20 Jan 2013 05:25:00 +0000 (00:25 -0500)] 
resize2fs: move a cluster at a time with bigalloc file systems

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agoresize2fs: correctly account for clusters when calculating summary stats
Theodore Ts'o [Sun, 20 Jan 2013 04:41:36 +0000 (23:41 -0500)] 
resize2fs: correctly account for clusters when calculating summary stats

Fixes resize2fs so it correctly calculates the number of free clusters
in each block group for file systems with the bigalloc feature
enabled.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agolibext2fs: teach the ext2fs_*_block_bitmap_range2() about clusters
Theodore Ts'o [Sun, 20 Jan 2013 04:21:11 +0000 (23:21 -0500)] 
libext2fs: teach the ext2fs_*_block_bitmap_range2() about clusters

The ext2fs_{mark,unmark,test}_block_bitmap2() functions understand
about clusters, and will take block numbers and convert them to
clusters before checking the bitmap.  The
ext2fs_*_block_bitmap_range2() functions did not do this, which made
them inconsistent.  Fortunately, nothing has depended on this
incorrect behavior, and in fact most of the usage of these functions
have only recently been added, and only for optimizations that were
only enabled for non-bigalloc file systems.

So this is a change in previously exported functions, but (a) it
doesn't change the behavior at all for non-bigalloc file systems, and
(b) the change is more likely to fix bugs for bigalloc file systems.
For example, this change fixes a problem with resize2fs and bigalloc
file systems.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agoUpdate Release Notes, Changelogs, version.h, etc. for 1.42.7 release
Theodore Ts'o [Wed, 16 Jan 2013 18:50:12 +0000 (13:50 -0500)] 
Update Release Notes, Changelogs, version.h, etc. for 1.42.7 release

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agoresize2fs: check in test-resize script
Theodore Ts'o [Wed, 16 Jan 2013 18:43:36 +0000 (13:43 -0500)] 
resize2fs: check in test-resize script

This should be made into a more formal, automated test case, but for
now, save this as script since it's useful for validating resize2fs's
handling of very large file systems.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agoUpdate config.{guess,sub} to the latest version
Theodore Ts'o [Wed, 16 Jan 2013 18:10:54 +0000 (13:10 -0500)] 
Update config.{guess,sub} to the latest version

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agopo: update vi.po (from translationproject.org)
Trần Ngọc Quân [Wed, 16 Jan 2013 04:30:36 +0000 (23:30 -0500)] 
po: update vi.po (from translationproject.org)

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
11 years agopo: update sv.po (from translationproject.org)
Göran Uddeborg [Wed, 16 Jan 2013 04:30:36 +0000 (23:30 -0500)] 
po: update sv.po (from translationproject.org)

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
11 years agopo: update pl.po (from translationproject.org)
Jakub Bogusz [Wed, 16 Jan 2013 04:30:36 +0000 (23:30 -0500)] 
po: update pl.po (from translationproject.org)

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
11 years agopo: update nl.po (from translationproject.org)
Benno Schulenberg [Wed, 16 Jan 2013 04:30:36 +0000 (23:30 -0500)] 
po: update nl.po (from translationproject.org)

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
11 years agopo: update fr.po (from translationproject.org)
Samuel Thibault [Wed, 16 Jan 2013 04:30:35 +0000 (23:30 -0500)] 
po: update fr.po (from translationproject.org)

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
11 years agopo: update de.po (from translationproject.org)
Philipp Thomas [Wed, 16 Jan 2013 04:30:35 +0000 (23:30 -0500)] 
po: update de.po (from translationproject.org)

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
11 years agopo: update cs.po (from translationproject.org)
Petr Pisar [Wed, 16 Jan 2013 04:30:35 +0000 (23:30 -0500)] 
po: update cs.po (from translationproject.org)

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
11 years agoUpdate misc/Makefile.in using "make depend"
Theodore Ts'o [Wed, 16 Jan 2013 04:28:17 +0000 (23:28 -0500)] 
Update misc/Makefile.in using "make depend"

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agoe2image: add -a switch to include all data
Phillip Susi [Tue, 15 Jan 2013 20:31:23 +0000 (15:31 -0500)] 
e2image: add -a switch to include all data

Normally the raw and QCOW2 images only contain fs metadata.
Add a new switch ( -a ) to include all data.  This makes it
possible to use e2image to clone a whole filesystem.

Signed-off-by: Phillip Susi <psusi@ubuntu.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agotests: create test for debugfs creating special files
Theodore Ts'o [Tue, 15 Jan 2013 19:52:30 +0000 (14:52 -0500)] 
tests: create test for debugfs creating special files

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agodebugfs: fix mknod command so that it updates the block group statistics
Theodore Ts'o [Tue, 15 Jan 2013 19:50:02 +0000 (14:50 -0500)] 
debugfs: fix mknod command so that it updates the block group statistics

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agodebugfs: add symlink command
Darren Hart [Fri, 4 Jan 2013 20:00:59 +0000 (12:00 -0800)] 
debugfs: add symlink command

Add support for symbolic links using a new symlink command.  Modeled
after the do_mkdir() command.

Testing demonstrates both fastlinks and slowlinks work correctly.
Very long target paths fail as the command parsing appears to truncate
the input to somewhere around 256 bytes.

Signed-off-by: Darren Hart <dvhart@infradead.org>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Cc: "Darrick J. Wong" <darrick.wong@oracle.com>
Cc: Andreas Dilger <adilger@dilger.ca>
11 years agolibext2fs: add the ext2fs_symlink() function
Darren Hart [Fri, 4 Jan 2013 20:00:58 +0000 (12:00 -0800)] 
libext2fs: add the ext2fs_symlink() function

Creating symlinks is a complex affair when accounting for slowlinks.

Create a new function, ext2fs_symlink(), modeled after ext2fs_mkdir().
Like ext2fs_mkdir(), ext2fs_symlink() takes on the task of allocating a
new inode and block (for slowlinks), setting up sane default values in
the inode, copying the target path to either the inode (for fastlinks)
or to the first block (for slowlinks), and accounting for the inode and
block stats.  Disallow link targets longer than blocksize as the Linux
kernel prevents this.

It does not attempt to expand the parent directory, instead returning
EXT2_ET_DIR_NO_SPACE and leaving it to the caller to expand just as
ext2fs_mkdir() does.  Ideally, I think both of these functions should
make a single attempt to expand the directory.

[ Fixed a few bugs discovered when creating a test case for ext2fs_symlink() ]

Signed-off-by: Darren Hart <dvhart@infradead.org>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Cc: "Darrick J. Wong" <darrick.wong@oracle.com>
Cc: Andreas Dilger <adilger@dilger.ca>
11 years agolibext2fs: add error codes from 1.43.x development branch
Theodore Ts'o [Wed, 16 Jan 2013 19:07:25 +0000 (14:07 -0500)] 
libext2fs: add error codes from 1.43.x development branch

To maintain the error codes numbering, we need to pull in the changes
from the 1.43.x development branch for the libext2's error table.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
11 years agomke2fs: document bigalloc and cluster-size
Zheng Liu [Sun, 13 Jan 2013 09:08:15 +0000 (17:08 +0800)] 
mke2fs: document bigalloc and cluster-size

Bigalloc feature has been used for a long time, but the documentation
in mke2fs is still missing.  So add it.

Addresses-Debian-Bug: #669730

Signed-off-by: Zheng Liu <wenqing.lz@taobao.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
11 years agolibext2fs: avoid 32-bit overflow in ext2fs_initialize with a 512M cluster size
Theodore Ts'o [Tue, 15 Jan 2013 00:29:54 +0000 (19:29 -0500)] 
libext2fs: avoid 32-bit overflow in ext2fs_initialize with a 512M cluster size

If the user attemps to create a 512MB cluster, we need to adjust the
defaults to avoid a 32-bit overflow of s_blocks_per_group.  Also check
to make sure that the caller of ext2fs_initialize() has not given a
value of s_clusters_per_group that would result in an overflow of
s_blocks_per_group.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Reviewed-by: Zheng Liu <wenqing.lz@taobao.com>
11 years agomke2fs: teach mke2fs to understand -b 4k and -C 256M
Theodore Ts'o [Tue, 15 Jan 2013 00:03:11 +0000 (19:03 -0500)] 
mke2fs: teach mke2fs to understand -b 4k and -C 256M

The -b and -C options now use parse_num_blocks2() instead of strtol,
so that users can specify -C 256M instead of the much less convenient
-C 268435456.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Reviewed-by: Zheng Liu <wenqing.lz@taobao.com>
11 years agolibe2p: teach parse_num_blocks2() to return bytes if log_block_size < 0
Theodore Ts'o [Tue, 15 Jan 2013 00:01:25 +0000 (19:01 -0500)] 
libe2p: teach parse_num_blocks2() to return bytes if log_block_size < 0

Previously the behavior of parse_num_block2 was undefined if
log_block_size was less than zero.  It will now return a number in
units of bytes.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Reviewed-by: Zheng Liu <wenqing.lz@taobao.com>