Skip to contentSkip to conversation

tests: add new test f_extent_oobounds

PATCH In review Theodore Ts'o 2 participants 3 messages Jun 7, 2013 – Jun 26, 2013 1 message not in the archive

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

#1 lore raw

PATCH 1/1 tests: add new test f_extent_oobounds

This tests creates a file system where the last entry in one leaf block overlaps with logical block range in the first entry of the next leaf block.

---
 tests/f_extent_oobounds/expect.1 | 24 +++++++++++++++++++++++
 tests/f_extent_oobounds/expect.2 |  7 +++++++
 tests/f_extent_oobounds/script   | 42 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 73 insertions(+)
 create mode 100644 tests/f_extent_oobounds/expect.1
 create mode 100644 tests/f_extent_oobounds/expect.2
 create mode 100644 tests/f_extent_oobounds/script
tests/f_extent_oobounds/expect.1 new file +24 -0
new file mode 100644
index 0000000..3164ea0
@@ -0,0 +1,24 @@
+Pass 1: Checking inodes, blocks, and sizes
+Inode 12, end of extent exceeds allowed value
+	(logical block 15, physical block 200, len 30)
+Clear? yes
+
+Inode 12, i_blocks is 154, should be 94.  Fix? 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:  -(200--229)
+Fix? yes
+
+Free blocks count wrong for group #0 (156, counted=186).
+Fix? yes
+
+Free blocks count wrong (156, counted=186).
+Fix? yes
+
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 12/32 files (8.3% non-contiguous), 70/256 blocks
+Exit status is 1
tests/f_extent_oobounds/expect.2 new file +7 -0
new file mode 100644
index 0000000..22c4f2c
@@ -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/32 files (8.3% non-contiguous), 70/256 blocks
+Exit status is 0
tests/f_extent_oobounds/script new file +42 -0

42 lines not on this page · raw message

Signature · 1 line
1.7.12.rc0.22.gcdd159b
Reviewed-by on v1 1/1
#2 lore raw
Quoted 5 lines · Theodore Ts'o

This tests creates a file system where the last entry in one leaf block overlaps with logical block range in the first entry of the next leaf block.

Looks good to me, thanks.

Quoted 101 lines
---
 tests/f_extent_oobounds/expect.1 | 24 +++++++++++++++++++++++
 tests/f_extent_oobounds/expect.2 |  7 +++++++
 tests/f_extent_oobounds/script   | 42 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 73 insertions(+)
 create mode 100644 tests/f_extent_oobounds/expect.1
 create mode 100644 tests/f_extent_oobounds/expect.2
 create mode 100644 tests/f_extent_oobounds/script
tests/f_extent_oobounds/expect.1 new file +24 -0
new file mode 100644
index 0000000..3164ea0
@@ -0,0 +1,24 @@
+Pass 1: Checking inodes, blocks, and sizes
+Inode 12, end of extent exceeds allowed value
+	(logical block 15, physical block 200, len 30)
+Clear? yes
+
+Inode 12, i_blocks is 154, should be 94.  Fix? 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:  -(200--229)
+Fix? yes
+
+Free blocks count wrong for group #0 (156, counted=186).
+Fix? yes
+
+Free blocks count wrong (156, counted=186).
+Fix? yes
+
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 12/32 files (8.3% non-contiguous), 70/256 blocks
+Exit status is 1
tests/f_extent_oobounds/expect.2 new file +7 -0
new file mode 100644
index 0000000..22c4f2c
@@ -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/32 files (8.3% non-contiguous), 70/256 blocks
+Exit status is 0
tests/f_extent_oobounds/script new file +42 -0
new file mode 100644
index 0000000..31ac6c9
@@ -0,0 +1,42 @@
+if test -x $DEBUGFS_EXE; then
+
+SKIP_GUNZIP="true"
+TEST_DATA="$test_name.tmp"
+
+dd if=/dev/zero of=$TMPFILE bs=1k count=256 > /dev/null 2>&1
+mke2fs -Ft ext4 $TMPFILE > /dev/null 2>&1
+debugfs -w $TMPFILE << EOF  > /dev/null 2>&1
+write /dev/null testfile
+extent_open testfile
+  insert_node 0 15 100
+  insert_node --after 15 15 115
+  insert_node --after 30 15 130
+  insert_node --after 45 15 145
+  split
+  down
+  split
+  root
+  down
+  next
+  replace_node 15 30 200
+  extent_close
+set_inode_field testfile i_size 61400
+set_inode_field testfile i_blocks 154
+setb 100 15
+setb 130 30
+setb 200 30
+set_bg 0 free_blocks_count 156
+set_bg 0 bg_checksum calc
+set_super_value free_blocks_count 156
+q
+EOF
+
+. $cmd_dir/run_e2fsck
+
+rm -f $TEST_DATA
+
+unset E2FSCK_TIME TEST_DATA
+
+else #if test -x $DEBUGFS_EXE; then
+	echo "$test_name: $test_description: skipped"
+fi
#3 lore raw
Quoted 10 lines · Eric Sandeen
Quoted 5 lines · Theodore Ts'o

This tests creates a file system where the last entry in one leaf block overlaps with logical block range in the first entry of the next leaf block.

Looks good to me, thanks.

Ho hum, but not tested-by. :( This actually fails for me.

f_extent_oobounds.1.log 2013-06-26 19:55:13.071988447 +0000 renamed from expect.1 2013-06-26 19:54:18.687988530 +0000 +1 -5
@@ -1,24 +1,20 @@
 Pass 1: Checking inodes, blocks, and sizes
-Inode 12, end of extent exceeds allowed value
-       (logical block 15, physical block 200, len 30)
-Clear? yes
-
-Inode 12, i_blocks is 154, should be 94.  Fix? yes
+Inode 12, i_blocks is 154, should be 0.  Fix? yes
 

This is because the test runs debugfs from the system, not from the tree, and if that debugfs doesn't have the extent_open command, it fails silently.

I'll send a patch.

-eric

Quoted 107 lines
Quoted 91 lines
---
 tests/f_extent_oobounds/expect.1 | 24 +++++++++++++++++++++++
 tests/f_extent_oobounds/expect.2 |  7 +++++++
 tests/f_extent_oobounds/script   | 42 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 73 insertions(+)
 create mode 100644 tests/f_extent_oobounds/expect.1
 create mode 100644 tests/f_extent_oobounds/expect.2
 create mode 100644 tests/f_extent_oobounds/script
tests/f_extent_oobounds/expect.1 new file +24 -0
new file mode 100644
index 0000000..3164ea0
@@ -0,0 +1,24 @@
+Pass 1: Checking inodes, blocks, and sizes
+Inode 12, end of extent exceeds allowed value
+	(logical block 15, physical block 200, len 30)
+Clear? yes
+
+Inode 12, i_blocks is 154, should be 94.  Fix? 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:  -(200--229)
+Fix? yes
+
+Free blocks count wrong for group #0 (156, counted=186).
+Fix? yes
+
+Free blocks count wrong (156, counted=186).
+Fix? yes
+
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 12/32 files (8.3% non-contiguous), 70/256 blocks
+Exit status is 1
tests/f_extent_oobounds/expect.2 new file +7 -0
new file mode 100644
index 0000000..22c4f2c
@@ -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/32 files (8.3% non-contiguous), 70/256 blocks
+Exit status is 0
tests/f_extent_oobounds/script new file +32 -0
new file mode 100644
index 0000000..31ac6c9
@@ -0,0 +1,42 @@
+if test -x $DEBUGFS_EXE; then
+
+SKIP_GUNZIP="true"
+TEST_DATA="$test_name.tmp"
+
+dd if=/dev/zero of=$TMPFILE bs=1k count=256 > /dev/null 2>&1
+mke2fs -Ft ext4 $TMPFILE > /dev/null 2>&1
+debugfs -w $TMPFILE << EOF  > /dev/null 2>&1
+write /dev/null testfile
+extent_open testfile
+  insert_node 0 15 100
+  insert_node --after 15 15 115
+  insert_node --after 30 15 130
+  insert_node --after 45 15 145
+  split
+  down
+  split
+  root
+  down
+  next
+  replace_node 15 30 200
+  extent_close
+set_inode_field testfile i_size 61400
+set_inode_field testfile i_blocks 154
+setb 100 15
+setb 130 30
+setb 200 30
+set_bg 0 free_blocks_count 156
+set_bg 0 bg_checksum calc
+set_super_value free_blocks_count 156
+q
+EOF

tests/f_extent_oobounds/script line 42

Quoted 10 lines
tests/f_extent_oobounds/script new file +10 -0
+
+. $cmd_dir/run_e2fsck
+
+rm -f $TEST_DATA
+
+unset E2FSCK_TIME TEST_DATA
+
+else #if test -x $DEBUGFS_EXE; then
+	echo "$test_name: $test_description: skipped"
+fi

--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html