return 1;
}
- if (ext2fs_test_inode_bitmap(ctx->inode_dir_map, dirent->inode)) {
+ if (ext2fs_test_inode_bitmap2(ctx->inode_dir_map, dirent->inode)) {
should_be = EXT2_FT_DIR;
- } else if (ext2fs_test_inode_bitmap(ctx->inode_reg_map,
+ } else if (ext2fs_test_inode_bitmap2(ctx->inode_reg_map,
dirent->inode)) {
should_be = EXT2_FT_REG_FILE;
} else if (ctx->inode_bad_map &&
- ext2fs_test_inode_bitmap(ctx->inode_bad_map,
+ ext2fs_test_inode_bitmap2(ctx->inode_bad_map,
dirent->inode))
should_be = 0;
else {
* Make sure the inode is still in use (could have been
* deleted in the duplicate/bad blocks pass.
*/
- if (!(ext2fs_test_inode_bitmap(ctx->inode_used_map, ino)))
+ if (!(ext2fs_test_inode_bitmap2(ctx->inode_used_map, ino)))
return 0;
cd->pctx.ino = ino;
(dirent->inode > fs->super->s_inodes_count)) {
problem = PR_2_BAD_INO;
} else if (ctx->inode_bb_map &&
- (ext2fs_test_inode_bitmap(ctx->inode_bb_map,
+ (ext2fs_test_inode_bitmap2(ctx->inode_bb_map,
dirent->inode))) {
/*
* If the inode is in a bad block, offer to
* pathname to the user.)
*/
if (ctx->inode_bad_map &&
- ext2fs_test_inode_bitmap(ctx->inode_bad_map,
+ ext2fs_test_inode_bitmap2(ctx->inode_bad_map,
dirent->inode)) {
if (e2fsck_process_bad_inode(ctx, ino,
dirent->inode,
group = ext2fs_group_of_ino(fs, dirent->inode);
first_unused_inode = group * fs->super->s_inodes_per_group +
1 + fs->super->s_inodes_per_group -
- fs->group_desc[group].bg_itable_unused;
+ ext2fs_bg_itable_unused(fs, group);
cd->pctx.group = group;
/*
* we could call a function in pass1.c that checks the
* newly visible inodes.
*/
- if (fs->group_desc[group].bg_flags & EXT2_BG_INODE_UNINIT) {
+ if (ext2fs_bg_flags_test(fs, group, EXT2_BG_INODE_UNINIT)) {
pctx.num = dirent->inode;
if (fix_problem(ctx, PR_2_INOREF_BG_INO_UNINIT,
&cd->pctx)){
- fs->group_desc[group].bg_flags &=
- ~EXT2_BG_INODE_UNINIT;
+ ext2fs_bg_flags_clear(fs, group,
+ EXT2_BG_INODE_UNINIT);
ext2fs_mark_super_dirty(fs);
ctx->flags |= E2F_FLAG_RESTART_LATER;
} else {
} else if (dirent->inode >= first_unused_inode) {
pctx.num = dirent->inode;
if (fix_problem(ctx, PR_2_INOREF_IN_UNUSED, &cd->pctx)){
- fs->group_desc[group].bg_itable_unused = 0;
+ ext2fs_bg_itable_unused_set(fs, group, 0);
ext2fs_mark_super_dirty(fs);
ctx->flags |= E2F_FLAG_RESTART_LATER;
} else {
* problems after we restart.
*/
if (!(ctx->flags & E2F_FLAG_RESTART_LATER) &&
- !(ext2fs_test_inode_bitmap(ctx->inode_used_map,
- dirent->inode)))
+ !(ext2fs_test_inode_bitmap2(ctx->inode_used_map,
+ dirent->inode)))
problem = PR_2_UNUSED_INODE;
if (problem) {
* and ask the user if he/she wants to clear this one.
*/
if ((dot_state > 1) &&
- (ext2fs_test_inode_bitmap(ctx->inode_dir_map,
+ (ext2fs_test_inode_bitmap2(ctx->inode_dir_map,
dirent->inode))) {
if (e2fsck_dir_info_get_parent(ctx, dirent->inode,
&subdir_parent)) {
if (HOLE_BLKADDR(*block_nr))
return 0;
if ((*block_nr < fs->super->s_first_data_block) ||
- (*block_nr >= fs->super->s_blocks_count))
+ (*block_nr >= ext2fs_blocks_count(fs->super)))
return 0;
- ext2fs_unmark_block_bitmap(ctx->block_found_map, *block_nr);
- ext2fs_block_alloc_stats(fs, *block_nr, -1);
+ ext2fs_unmark_block_bitmap2(ctx->block_found_map, *block_nr);
+ ext2fs_block_alloc_stats2(fs, *block_nr, -1);
return 0;
}
e2fsck_read_bitmaps(ctx);
ext2fs_inode_alloc_stats2(fs, ino, -1, LINUX_S_ISDIR(inode.i_mode));
- if (inode.i_file_acl &&
+ if (ext2fs_file_acl_block(&inode) &&
(fs->super->s_feature_compat & EXT2_FEATURE_COMPAT_EXT_ATTR)) {
- pctx.errcode = ext2fs_adjust_ea_refcount(fs, inode.i_file_acl,
+ pctx.errcode = ext2fs_adjust_ea_refcount(fs, ext2fs_file_acl_block(&inode),
block_buf, -1, &count);
if (pctx.errcode == EXT2_ET_BAD_EA_BLOCK_NUM) {
pctx.errcode = 0;
count = 1;
}
if (pctx.errcode) {
- pctx.blk = inode.i_file_acl;
+ pctx.blk = ext2fs_file_acl_block(&inode);
fix_problem(ctx, PR_2_ADJ_EA_REFCOUNT, &pctx);
ctx->flags |= E2F_FLAG_ABORT;
return;
}
if (count == 0) {
- ext2fs_unmark_block_bitmap(ctx->block_found_map,
- inode.i_file_acl);
- ext2fs_block_alloc_stats(fs, inode.i_file_acl, -1);
+ ext2fs_unmark_block_bitmap2(ctx->block_found_map,
+ ext2fs_file_acl_block(&inode));
+ ext2fs_block_alloc_stats2(fs,
+ ext2fs_file_acl_block(&inode),
+ -1);
}
- inode.i_file_acl = 0;
+ ext2fs_file_acl_block_set(&inode, 0);
}
if (!ext2fs_inode_has_valid_blocks(&inode))
pctx.dir = dir;
pctx.inode = &inode;
- if (inode.i_file_acl &&
+ if (ext2fs_file_acl_block(&inode) &&
!(fs->super->s_feature_compat & EXT2_FEATURE_COMPAT_EXT_ATTR)) {
if (fix_problem(ctx, PR_2_FILE_ACL_ZERO, &pctx)) {
- inode.i_file_acl = 0;
+ ext2fs_file_acl_block_set(&inode, 0);
inode_modified++;
} else
not_fixed++;
not_fixed++;
}
- if (inode.i_file_acl &&
- ((inode.i_file_acl < fs->super->s_first_data_block) ||
- (inode.i_file_acl >= fs->super->s_blocks_count))) {
+ if (ext2fs_file_acl_block(&inode) &&
+ ((ext2fs_file_acl_block(&inode) < fs->super->s_first_data_block) ||
+ (ext2fs_file_acl_block(&inode) >= ext2fs_blocks_count(fs->super)))) {
if (fix_problem(ctx, PR_2_FILE_ACL_BAD, &pctx)) {
- inode.i_file_acl = 0;
+ ext2fs_file_acl_block_set(&inode, 0);
inode_modified++;
} else
not_fixed++;
if (inode_modified)
e2fsck_write_inode(ctx, ino, &inode, "process_bad_inode");
if (!not_fixed && ctx->inode_bad_map)
- ext2fs_unmark_inode_bitmap(ctx->inode_bad_map, ino);
+ ext2fs_unmark_inode_bitmap2(ctx->inode_bad_map, ino);
return 0;
}
struct problem_context *pctx)
{
ext2_filsys fs = ctx->fs;
- blk_t blk;
+ blk64_t blk;
char *block;
struct ext2_inode inode;
/*
* First, find a free block
*/
- pctx->errcode = ext2fs_new_block(fs, 0, ctx->block_found_map, &blk);
+ pctx->errcode = ext2fs_new_block2(fs, 0, ctx->block_found_map, &blk);
if (pctx->errcode) {
pctx->str = "ext2fs_new_block";
fix_problem(ctx, PR_2_ALLOC_DIRBOCK, pctx);
return 1;
}
- ext2fs_mark_block_bitmap(ctx->block_found_map, blk);
- ext2fs_mark_block_bitmap(fs->block_map, blk);
+ ext2fs_mark_block_bitmap2(ctx->block_found_map, blk);
+ ext2fs_mark_block_bitmap2(fs->block_map, blk);
ext2fs_mark_bb_dirty(fs);
/*
* Finally, update the block pointers for the inode
*/
db->blk = blk;
- pctx->errcode = ext2fs_bmap(fs, db->ino, &inode, 0, BMAP_SET,
- db->blockcnt, &blk);
+ pctx->errcode = ext2fs_bmap2(fs, db->ino, &inode, 0, BMAP_SET,
+ db->blockcnt, 0, &blk);
if (pctx->errcode) {
pctx->str = "ext2fs_block_iterate";
fix_problem(ctx, PR_2_ALLOC_DIRBOCK, pctx);