Home | History | Annotate | Download | only in e2fsck

Lines Matching full:ctx

88 static void delete_file(e2fsck_t ctx, ext2_ino_t ino,
90 static int clone_file(e2fsck_t ctx, ext2_ino_t ino,
92 static int check_if_fs_block(e2fsck_t ctx, blk_t test_blk);
94 static void pass1b(e2fsck_t ctx, char *block_buf);
95 static void pass1c(e2fsck_t ctx, char *block_buf);
96 static void pass1d(e2fsck_t ctx, char *block_buf);
118 static void add_dupe(e2fsck_t ctx, ext2_ino_t ino, blk_t blk,
131 db = (struct dup_block *) e2fsck_allocate_memory(ctx,
137 ino_el = (struct inode_el *) e2fsck_allocate_memory(ctx,
148 di = (struct dup_inode *) e2fsck_allocate_memory(ctx,
161 blk_el = (struct block_el *) e2fsck_allocate_memory(ctx,
209 void e2fsck_pass1_dupblocks(e2fsck_t ctx, char *block_buf)
211 ext2_filsys fs = ctx->fs;
222 fix_problem(ctx, PR_1B_ALLOCATE_IBITMAP_ERROR, &pctx);
223 ctx->flags |= E2F_FLAG_ABORT;
232 init_resource_track(&rtrack, ctx->fs->io);
233 pass1b(ctx, block_buf);
234 print_resource_track(ctx, "Pass 1b", &rtrack, ctx->fs->io);
236 init_resource_track(&rtrack, ctx->fs->io);
237 pass1c(ctx, block_buf);
238 print_resource_track(ctx, "Pass 1c", &rtrack, ctx->fs->io);
240 init_resource_track(&rtrack, ctx->fs->io);
241 pass1d(ctx, block_buf);
242 print_resource_track(ctx, "Pass 1d", &rtrack, ctx->fs->io);
257 e2fsck_t ctx;
264 static void pass1b(e2fsck_t ctx, char *block_buf)
266 ext2_filsys fs = ctx->fs;
275 if (!(ctx->options & E2F_OPT_PREEN))
276 fix_problem(ctx, PR_1B_PASS_HEADER, &pctx);
277 pctx.errcode = ext2fs_open_inode_scan(fs, ctx->inode_buffer_blocks,
280 fix_problem(ctx, PR_1B_ISCAN_ERROR, &pctx);
281 ctx->flags |= E2F_FLAG_ABORT;
284 ctx->stashed_inode = &inode;
285 pb.ctx = ctx;
293 fix_problem(ctx, PR_1B_ISCAN_ERROR, &pctx);
294 ctx->flags |= E2F_FLAG_ABORT;
299 pctx.ino = ctx->stashed_ino = ino;
301 !ext2fs_test_inode_bitmap(ctx->inode_used_map, ino))
317 end_problem_latch(ctx, PR_LATCH_DBLOCK);
323 fix_problem(ctx, PR_1B_BLOCK_ITERATE, &pctx);
326 e2fsck_use_inode_shortcuts(ctx, 0);
337 e2fsck_t ctx;
342 ctx = p->ctx;
344 if (!ext2fs_test_block_bitmap(ctx->block_dup_map, *block_nr))
350 fix_problem(ctx, PR_1B_DUP_BLOCK, p->pctx);
355 add_dupe(ctx, p->ino, *block_nr, p->inode);
405 static void pass1c(e2fsck_t ctx, char *block_buf)
407 ext2_filsys fs = ctx->fs;
413 if (!(ctx->options & E2F_OPT_PREEN))
414 fix_problem(ctx, PR_1C_PASS_HEADER, &pctx);
427 static void pass1d(e2fsck_t ctx, char *block_buf)
429 ext2_filsys fs = ctx->fs;
444 if (!(ctx->options & E2F_OPT_PREEN))
445 fix_problem(ctx, PR_1D_PASS_HEADER, &pctx);
446 e2fsck_read_bitmaps(ctx);
449 fix_problem(ctx, PR_1D_NUM_DUP_INODES, &pctx);
450 shared = (ext2_ino_t *) e2fsck_allocate_memory(ctx,
474 if (check_if_fs_block(ctx, s->block)) {
505 fix_problem(ctx, PR_1D_DUP_FILE, &pctx);
510 fix_problem(ctx, PR_1D_SHARE_METADATA, &pctx);
523 fix_problem(ctx, PR_1D_DUP_FILE_LIST, &pctx);
526 fix_problem(ctx, PR_1D_DUP_BLOCKS_DEALT, &pctx);
529 if (fix_problem(ctx, PR_1D_CLONE_QUESTION, &pctx)) {
530 pctx.errcode = clone_file(ctx, ino, p, block_buf);
532 fix_problem(ctx, PR_1D_CLONE_ERROR, &pctx);
536 if (fix_problem(ctx, PR_1D_DELETE_QUESTION, &pctx))
537 delete_file(ctx, ino, p, block_buf);
548 static void decrement_badcount(e2fsck_t ctx, blk_t block, struct dup_block *p)
552 (p->num_bad == 1 && !check_if_fs_block(ctx, block)))
553 ext2fs_unmark_block_bitmap(ctx->block_dup_map, block);
566 e2fsck_t ctx;
569 ctx = pb->ctx;
574 if (ext2fs_test_block_bitmap(ctx->block_dup_map, *block_nr)) {
578 decrement_badcount(ctx, *block_nr, p);
584 ext2fs_unmark_block_bitmap(ctx->block_found_map, *block_nr);
591 static void delete_file(e2fsck_t ctx, ext2_ino_t ino,
594 ext2_filsys fs = ctx->fs;
603 pb.ctx = ctx;
606 e2fsck_read_inode(ctx, ino, &inode, "delete_file");
611 fix_problem(ctx, PR_1B_BLOCK_ITERATE, &pctx);
612 if (ctx->inode_bad_map)
613 ext2fs_unmark_inode_bitmap(ctx->inode_bad_map, ino);
617 e2fsck_read_inode(ctx, ino, &inode, "delete_file");
618 e2fsck_clear_inode(ctx, ino, &inode, 0, "delete_file");
630 fix_problem(ctx, PR_1B_ADJ_EA_REFCOUNT, &pctx);
639 ext2fs_test_block_bitmap(ctx->block_dup_map,
650 e2fsck_t ctx;
665 e2fsck_t ctx;
667 ctx = cs->ctx;
672 if (ext2fs_test_block_bitmap(ctx->block_dup_map, *block_nr)) {
676 retval = ext2fs_new_block(fs, 0, ctx->block_found_map,
706 decrement_badcount(ctx, *block_nr, p);
708 ext2fs_mark_block_bitmap(ctx->block_found_map,
720 static int clone_file(e2fsck_t ctx, ext2_ino_t ino,
723 ext2_filsys fs = ctx->fs;
736 cs.ctx = ctx;
741 if (ext2fs_test_inode_bitmap(ctx->inode_dir_map, ino))
751 fix_problem(ctx, PR_1B_BLOCK_ITERATE, &pctx);
762 e2fsck_read_inode(ctx, ino, &dp->inode, "clone file EA");
767 e2fsck_write_inode(ctx, ino, &dp->inode, "clone file EA");
797 e2fsck_write_inode(ctx, ino_el->inode,
799 decrement_badcount(ctx, blk, db);
813 static int check_if_fs_block(e2fsck_t ctx, blk_t test_block)
815 ext2_filsys fs = ctx->fs;