+2007-04-14 Theodore Tso <tytso@mit.edu>
+
+ * pass1.c, pass2.c, util.c: Add better ehandler_operation()
+ markers so it is clearer what e2fsck was doing when an I/O
+ error is reported.
+
2007-04-10 Jim Garlick <garlick@llnl.gov>
* pass1b.c (search_dirent_proc): if a file has multiple hard
char *buf)
{
struct ext2_inode *inode = pctx->inode;
- int i, not_device = 0;
- blk_t blk;
struct ext2_dir_entry *dirent;
+ const char *old_op;
+ errcode_t retval;
+ blk_t blk;
+ int i, not_device = 0;
if (LINUX_S_ISDIR(inode->i_mode) || LINUX_S_ISREG(inode->i_mode) ||
inode->i_block[0] == 0)
if (LINUX_S_ISLNK(inode->i_mode) && inode->i_links_count == 1)
return;
- if (ext2fs_read_dir_block(ctx->fs, inode->i_block[0], buf))
+ old_op = ehandler_operation(_("reading directory block"));
+ retval = ext2fs_read_dir_block(ctx->fs, inode->i_block[0], buf);
+ ehandler_operation(0);
+ if (retval)
return;
dirent = (struct ext2_dir_entry *) buf;
struct problem_context pctx;
struct scan_callback_struct scan_struct;
struct ext2_super_block *sb = ctx->fs->super;
+ const char *old_op;
int imagic_fs;
int busted_fs_time = 0;
int inode_size;
block_buf = (char *) e2fsck_allocate_memory(ctx, fs->blocksize * 3,
"block interate buffer");
e2fsck_use_inode_shortcuts(ctx, 1);
- ehandler_operation(_("doing inode scan"));
+ old_op = ehandler_operation(_("opening inode scan"));
pctx.errcode = ext2fs_open_inode_scan(fs, ctx->inode_buffer_blocks,
&scan);
+ ehandler_operation(old_op);
if (pctx.errcode) {
fix_problem(ctx, PR_1_ISCAN_ERROR, &pctx);
ctx->flags |= E2F_FLAG_ABORT;
busted_fs_time = 1;
while (1) {
+ old_op = ehandler_operation(_("getting next inode from scan"));
pctx.errcode = ext2fs_get_next_inode_full(scan, &ino,
inode, inode_size);
+ ehandler_operation(old_op);
if (ctx->flags & E2F_FLAG_SIGNAL_MASK)
return;
if (pctx.errcode == EXT2_ET_BAD_BLOCK_IN_INODE_TABLE) {
}
process_inodes(ctx, block_buf);
ext2fs_close_inode_scan(scan);
- ehandler_operation(0);
/*
* If any extended attribute blocks' reference counts need to
struct ext2_dir_entry *dirent, *prev;
ext2_dirhash_t hash;
unsigned int offset = 0;
+ const char * old_op;
int dir_modified = 0;
int dot_state;
blk_t block_nr = db->blk;
db->blockcnt, ino);
#endif
+ old_op = ehandler_operation(_("reading directory block"));
cd->pctx.errcode = ext2fs_read_dir_block(fs, block_nr, buf);
+ ehandler_operation(0);
if (cd->pctx.errcode == EXT2_ET_DIR_CORRUPTED)
cd->pctx.errcode = 0; /* We'll handle this ourselves */
if (cd->pctx.errcode) {
{
ext2_filsys fs = ctx->fs;
errcode_t retval;
+ const char *old_op;
if (ctx->invalid_bitmaps) {
com_err(ctx->program_name, 0,
fatal_error(ctx, 0);
}
- ehandler_operation(_("reading inode and block bitmaps"));
+ old_op = ehandler_operation(_("reading inode and block bitmaps"));
retval = ext2fs_read_bitmaps(fs);
- ehandler_operation(0);
+ ehandler_operation(old_op);
if (retval) {
com_err(ctx->program_name, retval,
_("while retrying to read bitmaps for %s"),
{
ext2_filsys fs = ctx->fs;
errcode_t retval;
+ const char *old_op;
if (ext2fs_test_bb_dirty(fs)) {
- ehandler_operation(_("writing block bitmaps"));
+ old_op = ehandler_operation(_("writing block bitmaps"));
retval = ext2fs_write_block_bitmap(fs);
- ehandler_operation(0);
+ ehandler_operation(old_op);
if (retval) {
com_err(ctx->program_name, retval,
_("while retrying to write block bitmaps for %s"),
}
if (ext2fs_test_ib_dirty(fs)) {
- ehandler_operation(_("writing inode bitmaps"));
+ old_op = ehandler_operation(_("writing inode bitmaps"));
retval = ext2fs_write_inode_bitmap(fs);
- ehandler_operation(0);
+ ehandler_operation(old_op);
if (retval) {
com_err(ctx->program_name, retval,
_("while retrying to write inode bitmaps for %s"),