Skip to content

Commit

Permalink
Merge branch 'maint' into next
Browse files Browse the repository at this point in the history
  • Loading branch information
tytso committed Dec 15, 2014
2 parents fb30384 + fcc19b4 commit 0698ecc
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 9 deletions.
25 changes: 20 additions & 5 deletions misc/badblocks.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@ extern int optind;
#define O_LARGEFILE 0
#endif

/* Maximum number of bad blocks we support */
#define MAX_BAD_BLOCKS (INT_MAX/2)

static const char * program_name = "badblocks";
static const char * done_string = N_("done \n");

Expand All @@ -78,7 +81,9 @@ static int t_max; /* allocated test patterns */
static unsigned int *t_patts; /* test patterns */
static int use_buffered_io;
static int exclusive_ok;
static unsigned int max_bb; /* Abort test if more than this number of bad blocks has been encountered */
static unsigned int max_bb = MAX_BAD_BLOCKS; /* Abort test if more than this
* number of bad blocks has been
* encountered */
static unsigned int d_flag; /* delay factor between reads */
static struct timeval time_start;

Expand Down Expand Up @@ -526,7 +531,7 @@ static unsigned int test_ro (int dev, blk_t last_block,
alarm_intr(SIGALRM);
while (currently_testing < last_block)
{
if (max_bb && bb_count >= max_bb) {
if (bb_count >= max_bb) {
if (s_flag || v_flag) {
fputs(_("Too many bad blocks, aborting test\n"), stderr);
}
Expand Down Expand Up @@ -633,7 +638,7 @@ static unsigned int test_rw (int dev, blk_t last_block,

try = blocks_at_once;
while (currently_testing < last_block) {
if (max_bb && bb_count >= max_bb) {
if (bb_count >= max_bb) {
if (s_flag || v_flag) {
fputs(_("Too many bad blocks, aborting test\n"), stderr);
}
Expand Down Expand Up @@ -675,7 +680,7 @@ static unsigned int test_rw (int dev, blk_t last_block,

try = blocks_at_once;
while (currently_testing < last_block) {
if (max_bb && bb_count >= max_bb) {
if (bb_count >= max_bb) {
if (s_flag || v_flag) {
fputs(_("Too many bad blocks, aborting test\n"), stderr);
}
Expand Down Expand Up @@ -822,7 +827,7 @@ static unsigned int test_nd (int dev, blk_t last_block,
alarm_intr(SIGALRM);

while (currently_testing < last_block) {
if (max_bb && bb_count >= max_bb) {
if (bb_count >= max_bb) {
if (s_flag || v_flag) {
fputs(_("Too many bad blocks, aborting test\n"), stderr);
}
Expand Down Expand Up @@ -1117,6 +1122,16 @@ int main (int argc, char ** argv)
break;
case 'e':
max_bb = parse_uint(optarg, "max bad block count");
if (max_bb > MAX_BAD_BLOCKS) {
com_err (program_name, 0,
_("Too big max bad blocks count %u - "
"maximum is %u"), max_bb,
MAX_BAD_BLOCKS);
exit (1);
}
/* 0 really means unlimited but we cannot do that much... */
if (max_bb == 0)
max_bb = MAX_BAD_BLOCKS;
break;
case 'd':
d_flag = parse_uint(optarg, "read delay factor");
Expand Down
28 changes: 24 additions & 4 deletions resize/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -321,10 +321,30 @@ int main (int argc, char ** argv)
}
fs->default_bitmap_type = EXT2FS_BMAP64_RBTREE;

if (!(mount_flags & EXT2_MF_MOUNTED)) {
if (!force && ((fs->super->s_lastcheck < fs->super->s_mtime) ||
(fs->super->s_state & EXT2_ERROR_FS) ||
((fs->super->s_state & EXT2_VALID_FS) == 0))) {
/*
* Before acting on an unmounted filesystem, make sure it's ok,
* unless the user is forcing it.
*
* We do ERROR and VALID checks even if we're only printing the
* minimimum size, because traversal of a badly damaged filesystem
* can cause issues as well. We don't require it to be fscked after
* the last mount time in this case, though, as this is a bit less
* risky.
*/
if (!force && !(mount_flags & EXT2_MF_MOUNTED)) {
int checkit = 0;

if (fs->super->s_state & EXT2_ERROR_FS)
checkit = 1;

if ((fs->super->s_state & EXT2_VALID_FS) == 0)
checkit = 1;

if ((fs->super->s_lastcheck < fs->super->s_mtime) &&
!print_min_size)
checkit = 1;

if (checkit) {
fprintf(stderr,
_("Please run 'e2fsck -f %s' first.\n\n"),
device_name);
Expand Down

0 comments on commit 0698ecc

Please sign in to comment.