294
294
if (ext2fs_inode_has_valid_blocks(&inode) ||
295
295
(ino == EXT2_BAD_INO))
296
296
pctx.errcode = ext2fs_block_iterate2(fs, ino,
297
0, block_buf, process_pass1b_block, &pb);
297
BLOCK_FLAG_READ_ONLY, block_buf,
298
process_pass1b_block, &pb);
298
299
if (inode.i_file_acl)
299
300
process_pass1b_block(fs, &inode.i_file_acl,
300
301
BLOCK_COUNT_EXTATTR, 0, 0, &pb);
591
592
e2fsck_read_inode(ctx, ino, &inode, "delete_file");
592
593
if (ext2fs_inode_has_valid_blocks(&inode))
593
pctx.errcode = ext2fs_block_iterate2(fs, ino, 0, block_buf,
594
delete_file_block, &pb);
594
pctx.errcode = ext2fs_block_iterate2(fs, ino, BLOCK_FLAG_READ_ONLY,
595
block_buf, delete_file_block, &pb);
595
596
if (pctx.errcode)
596
597
fix_problem(ctx, PR_1B_BLOCK_ITERATE, &pctx);
597
ext2fs_unmark_inode_bitmap(ctx->inode_used_map, ino);
598
ext2fs_unmark_inode_bitmap(ctx->inode_dir_map, ino);
599
598
if (ctx->inode_bad_map)
600
599
ext2fs_unmark_inode_bitmap(ctx->inode_bad_map, ino);
601
600
ext2fs_inode_alloc_stats2(fs, ino, -1, LINUX_S_ISDIR(inode.i_mode));
603
602
/* Inode may have changed by block_iterate, so reread it */
604
603
e2fsck_read_inode(ctx, ino, &inode, "delete_file");
605
inode.i_links_count = 0;
606
inode.i_dtime = ctx->now;
604
e2fsck_clear_inode(ctx, ino, &inode, 0, "delete_file");
607
605
if (inode.i_file_acl &&
608
606
(fs->super->s_feature_compat & EXT2_FEATURE_COMPAT_EXT_ATTR)) {
629
627
delete_file_block(fs, &inode.i_file_acl,
630
628
BLOCK_COUNT_EXTATTR, 0, 0, &pb);
632
e2fsck_write_inode(ctx, ino, &inode, "delete_file");
635
632
struct clone_struct {