ehandler.c (e2fsck_handle_read_error): If the user asks to
ignore the error, offer to try forcing a write of the
block to the disk; sometimes this will cause the drive to
remap the bad block.
diff --git a/e2fsck/ChangeLog b/e2fsck/ChangeLog
index 14733dc..5eead5c 100644
--- a/e2fsck/ChangeLog
+++ b/e2fsck/ChangeLog
@@ -1,3 +1,10 @@
+2002-08-31 Theodore Ts'o <tytso@mit.edu>
+
+ * ehandler.c (e2fsck_handle_read_error): If the user asks to
+ ignore the error, offer to try forcing a write of the
+ block to the disk; sometimes this will cause the drive to
+ remap the bad block.
+
2002-08-31 Theodore Ts'o <tytso@valinux.com>
* pass2.c (e2fsck_pass2): If this is a HTREE directory, sort the
diff --git a/e2fsck/ehandler.c b/e2fsck/ehandler.c
index bd1643e..d4060c4 100644
--- a/e2fsck/ehandler.c
+++ b/e2fsck/ehandler.c
@@ -56,8 +56,11 @@
printf(_("Error reading block %lu (%s). "), block,
error_message(error));
preenhalt(ctx);
- if (ask(ctx, _("Ignore error"), 1))
+ if (ask(ctx, _("Ignore error"), 1)) {
+ if (ask(ctx, _("Force rewrite"), 1))
+ io_channel_write_blk(channel, block, 1, data);
return 0;
+ }
return error;
}