Don't offer to update or clone the resize inode when e2fsck deals with

multiply claimed blocks.
This commit is contained in:
Theodore Ts'o 2005-04-14 17:10:14 -04:00
parent 1f3ad14a5a
commit 5e91614349
8 changed files with 73 additions and 1 deletions

6
TODO
View File

@ -276,3 +276,9 @@ cleanliness. (I will probably have to do this myself -- Ted)
extent maps first/in parallel.
Difficulty: High Priority: Medium
----------------------------------
Need to deal with the case where the resize inode overlaps with the
bad blocks inode.

View File

@ -1,5 +1,8 @@
2005-04-14 Theodore Ts'o <tytso@mit.edu>
* pass1b.c (pass1d): Don't offer to clone or delete the resize
inode; it's not allowed!
* e2fsck.c, e2fsck.h, journal.c, pass1.c, pass1b.c, pass2.c,
pass3.c, pass4.c, super.c, unix.c: Use a centrally stored
current time for "now" which can be overridden using the

View File

@ -432,7 +432,7 @@ static void pass1d(e2fsck_t ctx, char *block_buf)
shared_len = 0;
file_ok = 1;
ino = (ext2_ino_t)VOIDPTR_TO_INT(dnode_getkey(n));
if (ino == EXT2_BAD_INO)
if (ino == EXT2_BAD_INO || ino == EXT2_RESIZE_INO)
continue;
/*

View File

@ -1,3 +1,7 @@
2005-04-14 Theodore Ts'o <tytso@mit.edu>
* f_dup_resize: New test case
2005-04-09 Theodore Ts'o <tytso@mit.edu>
* test_script.in: Make the test script driver exit with a non-zero

View File

@ -0,0 +1,33 @@
Resize inode not valid. Recreate? yes
Pass 1: Checking inodes, blocks, and sizes
Duplicate blocks found... invoking duplicate block passes.
Pass 1B: Rescan for duplicate/bad blocks
Duplicate/bad block(s) in inode 7: 4 5 6 7
Duplicate/bad block(s) in inode 12: 4 5 6 7
Pass 1C: Scan directories for inodes with dup blocks.
Pass 1D: Reconciling duplicate blocks
(There are 1 inodes containing duplicate/bad blocks.)
File /debugfs (inode #12, mod time Mon Apr 11 00:00:00 2005)
has 4 duplicate block(s), shared with 1 file(s):
<The group descriptor inode> (inode #7, mod time Mon Apr 11 06:13:20 2005)
Clone duplicate/bad blocks? yes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences: +(8195--8198)
Fix? yes
Free blocks count wrong for group #0 (7910, counted=7911).
Fix? yes
Free blocks count wrong (9754, counted=9755).
Fix? yes
test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
test_filesys: 12/2560 files (8.3% non-contiguous), 485/10240 blocks
Exit status is 1

View File

@ -0,0 +1,7 @@
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
test_filesys: 12/2560 files (16.7% non-contiguous), 485/10240 blocks
Exit status is 0

1
tests/f_dup_resize/name Normal file
View File

@ -0,0 +1 @@
blocks claimed by the resize inode and another inode

18
tests/f_dup_resize/script Normal file
View File

@ -0,0 +1,18 @@
SKIP_GUNZIP="true"
touch $TMPFILE
mke2fs -F -O resize_inode $TMPFILE 10240 > /dev/null 2>&1
debugfs -w $TMPFILE << "EOF" > /dev/null 2>&1
freeb 4 4
freeb 8195 4
write /sbin/debugfs debugfs
set_inode_field debugfs mtime 200504110000
q
EOF
E2FSCK_TIME=1113200000
export E2FSCK_TIME
. $cmd_dir/run_e2fsck
unset E2FSCK_TIME