e2fsck_t context;
errcode_t retval;
- retval = ext2fs_get_mem(sizeof(struct e2fsck_struct),
- (void **) &context);
+ retval = ext2fs_get_mem(sizeof(struct e2fsck_struct), &context);
if (retval)
return retval;
memset(context, 0, sizeof(struct e2fsck_struct));
context->process_inode_size = 256;
+ context->ext_attr_ver = 2;
*ret = context;
return 0;
errcode_t e2fsck_reset_context(e2fsck_t ctx)
{
ctx->flags = 0;
+ ctx->lost_and_found = 0;
+ ctx->bad_lost_and_found = 0;
if (ctx->inode_used_map) {
ext2fs_free_inode_bitmap(ctx->inode_used_map);
ctx->inode_used_map = 0;
ctx->inode_link_info = 0;
}
if (ctx->journal_io) {
- if (ctx->fs && ctx->fs->io == ctx->journal_io)
+ if (ctx->fs && ctx->fs->io != ctx->journal_io)
io_channel_close(ctx->journal_io);
ctx->journal_io = 0;
}
ctx->fs->dblist = 0;
}
e2fsck_free_dir_info(ctx);
+#ifdef ENABLE_HTREE
+ e2fsck_free_dx_dir_info(ctx);
+#endif
if (ctx->refcount) {
ea_refcount_free(ctx->refcount);
ctx->refcount = 0;
ext2fs_free_inode_bitmap(ctx->inode_imagic_map);
ctx->inode_imagic_map = 0;
}
+ if (ctx->dirs_to_hash) {
+ ext2fs_u32_list_free(ctx->dirs_to_hash);
+ ctx->dirs_to_hash = 0;
+ }
/*
* Clear the array of invalid meta-data flags
*/
if (ctx->invalid_inode_bitmap_flag) {
- ext2fs_free_mem((void **) &ctx->invalid_inode_bitmap_flag);
+ ext2fs_free_mem(&ctx->invalid_inode_bitmap_flag);
ctx->invalid_inode_bitmap_flag = 0;
}
if (ctx->invalid_block_bitmap_flag) {
- ext2fs_free_mem((void **) &ctx->invalid_block_bitmap_flag);
+ ext2fs_free_mem(&ctx->invalid_block_bitmap_flag);
ctx->invalid_block_bitmap_flag = 0;
}
if (ctx->invalid_inode_table_flag) {
- ext2fs_free_mem((void **) &ctx->invalid_inode_table_flag);
+ ext2fs_free_mem(&ctx->invalid_inode_table_flag);
ctx->invalid_inode_table_flag = 0;
}
return;
e2fsck_reset_context(ctx);
-
- ext2fs_free_mem((void **) &ctx);
+ if (ctx->blkid)
+ blkid_put_cache(ctx->blkid);
+
+ ext2fs_free_mem(&ctx);
}
/*
pass_t e2fsck_pass;
#ifdef HAVE_SETJMP_H
- if (setjmp(ctx->abort_loc))
+ if (setjmp(ctx->abort_loc)) {
+ ctx->flags &= ~E2F_FLAG_SETJMP_OK;
return (ctx->flags & E2F_FLAG_RUN_RETURN);
+ }
ctx->flags |= E2F_FLAG_SETJMP_OK;
#endif
return (ctx->flags & E2F_FLAG_RUN_RETURN);
return 0;
}
-
-
-
-
-
-