summaryrefslogtreecommitdiff
path: root/e2fsck
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2009-09-01 20:01:38 -0400
committerTheodore Ts'o <tytso@mit.edu>2009-09-01 20:01:38 -0400
commit82b59ca1ed0c2d6311f2e4b6e315d7ef82b62833 (patch)
treea6a51c7ffd3a68a73f3b1e9ef863ac12104d3cf0 /e2fsck
parent249c962ad8f2daabc403577d0c994e4c986c8f9a (diff)
downloade2fsprogs-82b59ca1ed0c2d6311f2e4b6e315d7ef82b62833.tar.gz
e2fsck: Avoid scary failure messages on low-memory systems
On a very low-memory system, where ext2fs_check_desc() fails because it can't allocate a block bitmap, catch this error and report it immediate. This avoids something like this, which could scare and mislead the user: e2fsck: Group descriptors look bad... trying backup blocks... Media was not cleanly unmounted, check forced. Pass 1: Checking inodes, blocks, and sizes Error allocating block bitmap (1): Memory allocation failed e2fsck: aborted Addresses-Debian-Bug: #509529 Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'e2fsck')
-rw-r--r--e2fsck/unix.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/e2fsck/unix.c b/e2fsck/unix.c
index e118e9ac..62489580 100644
--- a/e2fsck/unix.c
+++ b/e2fsck/unix.c
@@ -926,7 +926,7 @@ static const char *my_ver_date = E2FSPROGS_DATE;
int main (int argc, char *argv[])
{
- errcode_t retval = 0, orig_retval = 0;
+ errcode_t retval = 0, retval2 = 0, orig_retval = 0;
int exit_value = FSCK_OK;
ext2_filsys fs = 0;
io_manager io_ptr;
@@ -1012,7 +1012,11 @@ restart:
!(ctx->flags & E2F_FLAG_SB_SPECIFIED) &&
((retval == EXT2_ET_BAD_MAGIC) ||
(retval == EXT2_ET_CORRUPT_SUPERBLOCK) ||
- ((retval == 0) && ext2fs_check_desc(fs)))) {
+ ((retval == 0) && (retval2 = ext2fs_check_desc(fs))))) {
+ if (retval2 == ENOMEM) {
+ retval = retval2;
+ goto failure;
+ }
if (fs->flags & EXT2_FLAG_NOFREE_ON_ERROR) {
ext2fs_free(fs);
fs = NULL;
@@ -1051,6 +1055,7 @@ restart:
if (features[0] || features[1] || features[2])
goto print_unsupp_features;
}
+failure:
if (retval) {
if (orig_retval)
retval = orig_retval;