mirror of https://github.com/vitalif/e2fsprogs
pass1.c (e2fsck_pass1): Defer inodes which have an extended attribute
block for later processing to avoid extra seeks across the disk. (process_inode_cmp): If there is no indirect block, sort by the extended attribute (i_file_acl) block.bitmap-optimize
parent
f41e7e6961
commit
b5acdb6ae2
|
@ -588,7 +588,8 @@ void e2fsck_pass1(e2fsck_t ctx)
|
||||||
ctx->fs_tind_count++;
|
ctx->fs_tind_count++;
|
||||||
if (inode.i_block[EXT2_IND_BLOCK] ||
|
if (inode.i_block[EXT2_IND_BLOCK] ||
|
||||||
inode.i_block[EXT2_DIND_BLOCK] ||
|
inode.i_block[EXT2_DIND_BLOCK] ||
|
||||||
inode.i_block[EXT2_TIND_BLOCK]) {
|
inode.i_block[EXT2_TIND_BLOCK] ||
|
||||||
|
inode.i_file_acl) {
|
||||||
inodes_to_process[process_inode_count].ino = ino;
|
inodes_to_process[process_inode_count].ino = ino;
|
||||||
inodes_to_process[process_inode_count].inode = inode;
|
inodes_to_process[process_inode_count].inode = inode;
|
||||||
process_inode_count++;
|
process_inode_count++;
|
||||||
|
@ -776,9 +777,13 @@ static EXT2_QSORT_TYPE process_inode_cmp(const void *a, const void *b)
|
||||||
(const struct process_inode_block *) a;
|
(const struct process_inode_block *) a;
|
||||||
const struct process_inode_block *ib_b =
|
const struct process_inode_block *ib_b =
|
||||||
(const struct process_inode_block *) b;
|
(const struct process_inode_block *) b;
|
||||||
|
int ret;
|
||||||
return (ib_a->inode.i_block[EXT2_IND_BLOCK] -
|
|
||||||
ib_b->inode.i_block[EXT2_IND_BLOCK]);
|
ret = (ib_a->inode.i_block[EXT2_IND_BLOCK] -
|
||||||
|
ib_b->inode.i_block[EXT2_IND_BLOCK]);
|
||||||
|
if (ret == 0)
|
||||||
|
ret = ib_a->inode.i_file_acl - ib_b->inode.i_file_acl;
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -979,6 +984,11 @@ static int check_ext_attr(e2fsck_t ctx, struct problem_context *pctx,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
/* Debugging text */
|
||||||
|
printf("Inode %u has EA block %u\n", ino, blk);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Have we seen this EA block before? */
|
/* Have we seen this EA block before? */
|
||||||
if (ext2fs_fast_test_block_bitmap(ctx->block_ea_map, blk)) {
|
if (ext2fs_fast_test_block_bitmap(ctx->block_ea_map, blk)) {
|
||||||
if (ea_refcount_decrement(ctx->refcount, blk, 0) == 0)
|
if (ea_refcount_decrement(ctx->refcount, blk, 0) == 0)
|
||||||
|
|
Loading…
Reference in New Issue