mirror of https://github.com/vitalif/e2fsprogs
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>bitmap-optimize
parent
249c962ad8
commit
82b59ca1ed
|
@ -926,7 +926,7 @@ static const char *my_ver_date = E2FSPROGS_DATE;
|
||||||
|
|
||||||
int main (int argc, char *argv[])
|
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;
|
int exit_value = FSCK_OK;
|
||||||
ext2_filsys fs = 0;
|
ext2_filsys fs = 0;
|
||||||
io_manager io_ptr;
|
io_manager io_ptr;
|
||||||
|
@ -1012,7 +1012,11 @@ restart:
|
||||||
!(ctx->flags & E2F_FLAG_SB_SPECIFIED) &&
|
!(ctx->flags & E2F_FLAG_SB_SPECIFIED) &&
|
||||||
((retval == EXT2_ET_BAD_MAGIC) ||
|
((retval == EXT2_ET_BAD_MAGIC) ||
|
||||||
(retval == EXT2_ET_CORRUPT_SUPERBLOCK) ||
|
(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) {
|
if (fs->flags & EXT2_FLAG_NOFREE_ON_ERROR) {
|
||||||
ext2fs_free(fs);
|
ext2fs_free(fs);
|
||||||
fs = NULL;
|
fs = NULL;
|
||||||
|
@ -1051,6 +1055,7 @@ restart:
|
||||||
if (features[0] || features[1] || features[2])
|
if (features[0] || features[1] || features[2])
|
||||||
goto print_unsupp_features;
|
goto print_unsupp_features;
|
||||||
}
|
}
|
||||||
|
failure:
|
||||||
if (retval) {
|
if (retval) {
|
||||||
if (orig_retval)
|
if (orig_retval)
|
||||||
retval = orig_retval;
|
retval = orig_retval;
|
||||||
|
|
Loading…
Reference in New Issue