[Ocfs2-test-devel] [PATCH] Test zeros in holes while writing on page boundaries
Goldwyn Rodrigues
rgoldwyn at suse.de
Thu Feb 24 08:55:17 PST 2011
This checks for zeros while writing at page boundaries and lseeking. The
precise conditions are:
1. blocksize < clustersize
2. the previous write ended in a page boundary, but not a cluster
boundary. eg, clustersize=16K but pos is at the page boundary = 4k
3. you wrote something at the page boundary
4. there is a hole created in the page from 4k-8k in *between* say
4128-4640
5. i_size has moved past the second page, or past 8192
Sorry, my expected file is a bit too large because this is more
probabilistic rather than deterministic.
I sent my patch to a dead mailing list, ocfs2-tests-users.
Signed-off-by: Goldwyn Rodrigues <rgoldwyn at suse.de>
---
diff --git a/programs/tailtest/tailtest b/programs/tailtest/tailtest
index 5bf70f7..97031b8 100755
--- a/programs/tailtest/tailtest
+++ b/programs/tailtest/tailtest
@@ -129,6 +129,302 @@ EOCAT
EOCAT
[ $? = 0 ] || die "Unable to create \"expected-1K\""
+ cat >"${mountpoint}/expected-nohole" <<EOCAT
+00000000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00000ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00001000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00001010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00001ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00002000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00002010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00002ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00003000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00003010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00003ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00004000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00004010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00004ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00005000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00005010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00005ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00006000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00006010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00006ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00007000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00007010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00007ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00008000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00008010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00008ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00009000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00009010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00009ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0000a000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0000a010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0000aff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0000b000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0000b010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0000bff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0000c000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0000c010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0000cff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0000d000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0000d010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0000dff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0000e000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0000e010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0000eff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0000f000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0000f010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0000fff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00010000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00010010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00010ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00011000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00011010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00011ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00012000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00012010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00012ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00013000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00013010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00013ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00014000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00014010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00014ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00015000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00015010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00015ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00016000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00016010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00016ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00017000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00017010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00017ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00018000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00018010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00018ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00019000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00019010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00019ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0001a000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0001a010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0001aff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0001b000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0001b010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0001bff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0001c000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0001c010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0001cff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0001d000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0001d010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0001dff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0001e000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0001e010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0001eff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0001f000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0001f010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0001fff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00020000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00020010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00020ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00021000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00021010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00021ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00022000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00022010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00022ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00023000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00023010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00023ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00024000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00024010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00024ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00025000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00025010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00025ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00026000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00026010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00026ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00027000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00027010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00027ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00028000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00028010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00028ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00029000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00029010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00029ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0002a000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0002a010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0002aff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0002b000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0002b010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0002bff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0002c000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0002c010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0002cff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0002d000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0002d010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0002dff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0002e000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0002e010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0002eff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0002f000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0002f010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0002fff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00030000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00030010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00030ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00031000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00031010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00031ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00032000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00032010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00032ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00033000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00033010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00033ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00034000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00034010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00034ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00035000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00035010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00035ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00036000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00036010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00036ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00037000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00037010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00037ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00038000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00038010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00038ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00039000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00039010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00039ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0003a000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0003a010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0003aff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0003b000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0003b010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0003bff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0003c000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0003c010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0003cff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0003d000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0003d010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0003dff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0003e000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0003e010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0003eff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+0003f000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+0003f010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+0003fff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00040000 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |a...............|
+00040010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
+*
+00040ff0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 62 |...............b|
+00041000
+EOCAT
+ [ $? = 0 ] || die "Unable to create \"expected-nohole\""
+}
+
+run_nohole_test()
+{
+ local mountpoint="$1"
+
+ local testfile="${mountpoint}/testfile"
+ local comparefile="${mountpoint}/diff"
+ local expectedfile="${mountpoint}/expected-nohole"
+
+ echo "Testing nohole ..."
+ local st=0
+ local end=0
+ for i in `seq 0 64`; do
+ let st=$i*4096
+ echo "a" |
+ dd of="$testfile" count=1 bs=1 seek=$st conv=notrunc 2>/dev/null
+ let end=$st+4095
+ echo "b" |
+ dd of="$testfile" count=1 bs=1 seek=$end conv=notrunc 2>/dev/null
+ done
+ dd if="$testfile" bs=4k 2>/dev/null | hexdump -C >"$comparefile"
+ if diff -q "$comparefile" "$expectedfile" >/dev/null 2>&1;
+ then
+ echo " Test passed."
+ else
+ echo " Test failed. Extent contents:"
+ cat "$comparefile"
+ fi
+
+ echo "Cleaning up after test ..."
+ clean_one_test "$testfile" "$comparefile"
}
run_tests()
@@ -142,6 +438,8 @@ run_tests()
die "Unable to create ocfs2 filesystem"
setup_expected "$mountpoint"
+ run_nohole_test "$mountpoint"
+
local offset
for offset in 10M 1M 512K 1K
do
More information about the Ocfs2-test-devel
mailing list