mirror of https://github.com/vitalif/e2fsprogs
E2fsck now updates the global free block and
inode counters from the block group specific counters quietly. This is needed for an experimental patch which eliminates locking the entire filesystem when allocating blocks or inodes; if the filesystem is not unmounted cleanly, the global counts may not be accurate.bitmap-optimize
parent
085c2af234
commit
2a77a784a3
|
@ -1,3 +1,12 @@
|
|||
2003-04-05 Theodore Ts'o <tytso@mit.edu>
|
||||
|
||||
* super.c (check_super_block): Update the global free block and
|
||||
inode counters from the block group specific counters
|
||||
quietly. This is needed for an experimental patch which
|
||||
eliminates locking the entire filesystem when allocating
|
||||
blocks or inodes; if the filesystem is not unmounted
|
||||
cleanly, the global counts may not be accurate.
|
||||
|
||||
2003-03-17 Theodore Ts'o <tytso@mit.edu>
|
||||
|
||||
* util.c: Explicitly declare e2fsck_global_ctx as extern for the
|
||||
|
|
|
@ -323,6 +323,7 @@ void check_super_block(e2fsck_t ctx)
|
|||
dgrp_t i;
|
||||
blk_t should_be;
|
||||
struct problem_context pctx;
|
||||
__u32 free_blocks = 0, free_inodes = 0;
|
||||
|
||||
inodes_per_block = EXT2_INODES_PER_BLOCK(fs->super);
|
||||
ipg_max = inodes_per_block * (blocks_per_group - 4);
|
||||
|
@ -462,6 +463,8 @@ void check_super_block(e2fsck_t ctx)
|
|||
ctx->invalid_inode_table_flag[i]++;
|
||||
ctx->invalid_bitmaps++;
|
||||
}
|
||||
free_blocks += fs->group_desc[i].bg_free_blocks_count;
|
||||
free_inodes += fs->group_desc[i].bg_free_inodes_count;
|
||||
first_block += fs->super->s_blocks_per_group;
|
||||
last_block += fs->super->s_blocks_per_group;
|
||||
}
|
||||
|
@ -488,6 +491,21 @@ void check_super_block(e2fsck_t ctx)
|
|||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Update the global counts from the block group counts. This
|
||||
* is needed for an experimental patch which eliminates
|
||||
* locking the entire filesystem when allocating blocks or
|
||||
* inodes; if the filesystem is not unmounted cleanly, the
|
||||
* global counts may not be accurate.
|
||||
*/
|
||||
if (!(ctx->options & E2F_OPT_READONLY) &&
|
||||
((free_blocks != fs->super->s_free_blocks_count) ||
|
||||
(free_inodes != fs->super->s_free_inodes_count))) {
|
||||
fs->super->s_free_blocks_count = free_blocks;
|
||||
fs->super->s_free_inodes_count = free_inodes;
|
||||
ext2fs_mark_super_dirty(fs);
|
||||
}
|
||||
|
||||
/*
|
||||
* For the Hurd, check to see if the filetype option is set,
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
2003-04-05 Theodore Ts'o <tytso@mit.edu>
|
||||
|
||||
* f_baddir, f_dup, f_dup2, f_end-bitmap, f_lpf: Update test cases
|
||||
to deal with changes to automatically calculate and update
|
||||
the global inode and block counts at the beginning of the
|
||||
e2fsck run.
|
||||
|
||||
2003-03-25 Theodore Ts'o <tytso@mit.edu>
|
||||
|
||||
* f_h_badnode, f_h_badroot, f_h_reindex: Updated expect script to
|
||||
|
|
|
@ -39,9 +39,6 @@ Pass 5: Checking group summary information
|
|||
Block bitmap differences: -22
|
||||
Fix? yes
|
||||
|
||||
Free blocks count wrong (74, counted=75).
|
||||
Fix? yes
|
||||
|
||||
Inode bitmap differences: -13
|
||||
Fix? yes
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ Pass 5: Checking group summary information
|
|||
Free blocks count wrong for group #0 (44, counted=60).
|
||||
Fix? yes
|
||||
|
||||
Free blocks count wrong (62, counted=60).
|
||||
Free blocks count wrong (44, counted=60).
|
||||
Fix? yes
|
||||
|
||||
Padding at end of block bitmap is not set. Fix? yes
|
||||
|
|
|
@ -33,7 +33,7 @@ Pass 5: Checking group summary information
|
|||
Free blocks count wrong for group #0 (8, counted=22).
|
||||
Fix? yes
|
||||
|
||||
Free blocks count wrong (26, counted=22).
|
||||
Free blocks count wrong (8, counted=22).
|
||||
Fix? yes
|
||||
|
||||
Padding at end of block bitmap is not set. Fix? yes
|
||||
|
|
|
@ -8,6 +8,9 @@ Pass 5: Checking group summary information
|
|||
Free blocks count wrong for group #0 (44, counted=63).
|
||||
Fix? yes
|
||||
|
||||
Free blocks count wrong (44, counted=63).
|
||||
Fix? yes
|
||||
|
||||
Padding at end of block bitmap is not set. Fix? yes
|
||||
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ Fix? yes
|
|||
Free blocks count wrong for group #0 (24, counted=33).
|
||||
Fix? yes
|
||||
|
||||
Free blocks count wrong (38, counted=33).
|
||||
Free blocks count wrong (24, counted=33).
|
||||
Fix? yes
|
||||
|
||||
Inode bitmap differences: +13
|
||||
|
|
Loading…
Reference in New Issue