mirror of
https://github.com/versity/scoutfs.git
synced 2026-01-05 03:44:05 +00:00
Data preallocation attempts to allocate large aligned regions of extents. It tried to fill the hole around a write offset that didn't contain an extent. It missed the case where there can be multiple extents between the start of the region and the hole. It could try to overwrite these additional existing extents and writes could return EINVAL. We fix this by trimming the preallocation to start at the write offset if there are any extents in the region before the write offset. The data preallocation test output has to be updated now that allocation extents won't grow towards the start of the region when there are existing extents. Signed-off-by: Zach Brown <zab@versity.com>
331 lines
5.1 KiB
Plaintext
331 lines
5.1 KiB
Plaintext
== initial writes smaller than prealloc grow to prealloc size
|
|
/mnt/test/test/data-prealloc/file-1: 7 extents found
|
|
/mnt/test/test/data-prealloc/file-2: 7 extents found
|
|
== larger files get full prealloc extents
|
|
/mnt/test/test/data-prealloc/file-1: 9 extents found
|
|
/mnt/test/test/data-prealloc/file-2: 9 extents found
|
|
== non-streaming writes with contig have per-block extents
|
|
/mnt/test/test/data-prealloc/file-1: 32 extents found
|
|
/mnt/test/test/data-prealloc/file-2: 32 extents found
|
|
== any writes to region prealloc get full extents
|
|
/mnt/test/test/data-prealloc/file-1: 4 extents found
|
|
/mnt/test/test/data-prealloc/file-2: 4 extents found
|
|
/mnt/test/test/data-prealloc/file-1: 4 extents found
|
|
/mnt/test/test/data-prealloc/file-2: 4 extents found
|
|
== streaming offline writes get full extents either way
|
|
/mnt/test/test/data-prealloc/file-1: 4 extents found
|
|
/mnt/test/test/data-prealloc/file-2: 4 extents found
|
|
/mnt/test/test/data-prealloc/file-1: 4 extents found
|
|
/mnt/test/test/data-prealloc/file-2: 4 extents found
|
|
== goofy preallocation amounts work
|
|
/mnt/test/test/data-prealloc/file-1: 5 extents found
|
|
/mnt/test/test/data-prealloc/file-2: 5 extents found
|
|
/mnt/test/test/data-prealloc/file-1: 5 extents found
|
|
/mnt/test/test/data-prealloc/file-2: 5 extents found
|
|
/mnt/test/test/data-prealloc/file-1: 3 extents found
|
|
/mnt/test/test/data-prealloc/file-2: 3 extents found
|
|
== block writes into region allocs hole
|
|
wrote blk 24
|
|
wrote blk 32
|
|
wrote blk 40
|
|
wrote blk 55
|
|
wrote blk 63
|
|
wrote blk 71
|
|
wrote blk 72
|
|
wrote blk 79
|
|
wrote blk 80
|
|
wrote blk 87
|
|
wrote blk 88
|
|
wrote blk 95
|
|
before:
|
|
24.. 1:
|
|
32.. 1:
|
|
40.. 1:
|
|
55.. 1:
|
|
63.. 1:
|
|
71.. 2:
|
|
79.. 2:
|
|
87.. 2:
|
|
95.. 1: eof
|
|
writing into existing 0 at pos 0
|
|
wrote blk 0
|
|
0.. 1:
|
|
1.. 7: unwritten
|
|
24.. 1:
|
|
32.. 1:
|
|
40.. 1:
|
|
55.. 1:
|
|
63.. 1:
|
|
71.. 2:
|
|
79.. 2:
|
|
87.. 2:
|
|
95.. 1: eof
|
|
writing into existing 0 at pos 1
|
|
wrote blk 15
|
|
0.. 1:
|
|
1.. 14: unwritten
|
|
15.. 1:
|
|
24.. 1:
|
|
32.. 1:
|
|
40.. 1:
|
|
55.. 1:
|
|
63.. 1:
|
|
71.. 2:
|
|
79.. 2:
|
|
87.. 2:
|
|
95.. 1: eof
|
|
writing into existing 0 at pos 2
|
|
wrote blk 19
|
|
0.. 1:
|
|
1.. 14: unwritten
|
|
15.. 1:
|
|
16.. 3: unwritten
|
|
19.. 1:
|
|
20.. 4: unwritten
|
|
24.. 1:
|
|
32.. 1:
|
|
40.. 1:
|
|
55.. 1:
|
|
63.. 1:
|
|
71.. 2:
|
|
79.. 2:
|
|
87.. 2:
|
|
95.. 1: eof
|
|
writing into existing 1 at pos 0
|
|
wrote blk 25
|
|
0.. 1:
|
|
1.. 14: unwritten
|
|
15.. 1:
|
|
16.. 3: unwritten
|
|
19.. 1:
|
|
20.. 4: unwritten
|
|
24.. 1:
|
|
25.. 1:
|
|
26.. 6: unwritten
|
|
32.. 1:
|
|
40.. 1:
|
|
55.. 1:
|
|
63.. 1:
|
|
71.. 2:
|
|
79.. 2:
|
|
87.. 2:
|
|
95.. 1: eof
|
|
writing into existing 1 at pos 1
|
|
wrote blk 39
|
|
0.. 1:
|
|
1.. 14: unwritten
|
|
15.. 1:
|
|
16.. 3: unwritten
|
|
19.. 1:
|
|
20.. 4: unwritten
|
|
24.. 1:
|
|
25.. 1:
|
|
26.. 6: unwritten
|
|
32.. 1:
|
|
39.. 1:
|
|
40.. 1:
|
|
55.. 1:
|
|
63.. 1:
|
|
71.. 2:
|
|
79.. 2:
|
|
87.. 2:
|
|
95.. 1: eof
|
|
writing into existing 1 at pos 2
|
|
wrote blk 44
|
|
0.. 1:
|
|
1.. 14: unwritten
|
|
15.. 1:
|
|
16.. 3: unwritten
|
|
19.. 1:
|
|
20.. 4: unwritten
|
|
24.. 1:
|
|
25.. 1:
|
|
26.. 6: unwritten
|
|
32.. 1:
|
|
39.. 1:
|
|
40.. 1:
|
|
44.. 1:
|
|
45.. 3: unwritten
|
|
55.. 1:
|
|
63.. 1:
|
|
71.. 2:
|
|
79.. 2:
|
|
87.. 2:
|
|
95.. 1: eof
|
|
writing into existing 2 at pos 0
|
|
wrote blk 48
|
|
0.. 1:
|
|
1.. 14: unwritten
|
|
15.. 1:
|
|
16.. 3: unwritten
|
|
19.. 1:
|
|
20.. 4: unwritten
|
|
24.. 1:
|
|
25.. 1:
|
|
26.. 6: unwritten
|
|
32.. 1:
|
|
39.. 1:
|
|
40.. 1:
|
|
44.. 1:
|
|
45.. 3: unwritten
|
|
48.. 1:
|
|
49.. 6: unwritten
|
|
55.. 1:
|
|
63.. 1:
|
|
71.. 2:
|
|
79.. 2:
|
|
87.. 2:
|
|
95.. 1: eof
|
|
writing into existing 2 at pos 1
|
|
wrote blk 62
|
|
0.. 1:
|
|
1.. 14: unwritten
|
|
15.. 1:
|
|
16.. 3: unwritten
|
|
19.. 1:
|
|
20.. 4: unwritten
|
|
24.. 1:
|
|
25.. 1:
|
|
26.. 6: unwritten
|
|
32.. 1:
|
|
39.. 1:
|
|
40.. 1:
|
|
44.. 1:
|
|
45.. 3: unwritten
|
|
48.. 1:
|
|
49.. 6: unwritten
|
|
55.. 1:
|
|
56.. 6: unwritten
|
|
62.. 1:
|
|
63.. 1:
|
|
71.. 2:
|
|
79.. 2:
|
|
87.. 2:
|
|
95.. 1: eof
|
|
writing into existing 2 at pos 2
|
|
wrote blk 67
|
|
0.. 1:
|
|
1.. 14: unwritten
|
|
15.. 1:
|
|
16.. 3: unwritten
|
|
19.. 1:
|
|
20.. 4: unwritten
|
|
24.. 1:
|
|
25.. 1:
|
|
26.. 6: unwritten
|
|
32.. 1:
|
|
39.. 1:
|
|
40.. 1:
|
|
44.. 1:
|
|
45.. 3: unwritten
|
|
48.. 1:
|
|
49.. 6: unwritten
|
|
55.. 1:
|
|
56.. 6: unwritten
|
|
62.. 1:
|
|
63.. 1:
|
|
64.. 3: unwritten
|
|
67.. 1:
|
|
68.. 3: unwritten
|
|
71.. 2:
|
|
79.. 2:
|
|
87.. 2:
|
|
95.. 1: eof
|
|
writing into existing 3 at pos 0
|
|
wrote blk 73
|
|
0.. 1:
|
|
1.. 14: unwritten
|
|
15.. 1:
|
|
16.. 3: unwritten
|
|
19.. 1:
|
|
20.. 4: unwritten
|
|
24.. 1:
|
|
25.. 1:
|
|
26.. 6: unwritten
|
|
32.. 1:
|
|
39.. 1:
|
|
40.. 1:
|
|
44.. 1:
|
|
45.. 3: unwritten
|
|
48.. 1:
|
|
49.. 6: unwritten
|
|
55.. 1:
|
|
56.. 6: unwritten
|
|
62.. 1:
|
|
63.. 1:
|
|
64.. 3: unwritten
|
|
67.. 1:
|
|
68.. 3: unwritten
|
|
71.. 2:
|
|
73.. 1:
|
|
74.. 5: unwritten
|
|
79.. 2:
|
|
87.. 2:
|
|
95.. 1: eof
|
|
writing into existing 3 at pos 1
|
|
wrote blk 86
|
|
0.. 1:
|
|
1.. 14: unwritten
|
|
15.. 1:
|
|
16.. 3: unwritten
|
|
19.. 1:
|
|
20.. 4: unwritten
|
|
24.. 1:
|
|
25.. 1:
|
|
26.. 6: unwritten
|
|
32.. 1:
|
|
39.. 1:
|
|
40.. 1:
|
|
44.. 1:
|
|
45.. 3: unwritten
|
|
48.. 1:
|
|
49.. 6: unwritten
|
|
55.. 1:
|
|
56.. 6: unwritten
|
|
62.. 1:
|
|
63.. 1:
|
|
64.. 3: unwritten
|
|
67.. 1:
|
|
68.. 3: unwritten
|
|
71.. 2:
|
|
73.. 1:
|
|
74.. 5: unwritten
|
|
79.. 2:
|
|
86.. 1:
|
|
87.. 2:
|
|
95.. 1: eof
|
|
writing into existing 3 at pos 2
|
|
wrote blk 92
|
|
0.. 1:
|
|
1.. 14: unwritten
|
|
15.. 1:
|
|
16.. 3: unwritten
|
|
19.. 1:
|
|
20.. 4: unwritten
|
|
24.. 1:
|
|
25.. 1:
|
|
26.. 6: unwritten
|
|
32.. 1:
|
|
39.. 1:
|
|
40.. 1:
|
|
44.. 1:
|
|
45.. 3: unwritten
|
|
48.. 1:
|
|
49.. 6: unwritten
|
|
55.. 1:
|
|
56.. 6: unwritten
|
|
62.. 1:
|
|
63.. 1:
|
|
64.. 3: unwritten
|
|
67.. 1:
|
|
68.. 3: unwritten
|
|
71.. 2:
|
|
73.. 1:
|
|
74.. 5: unwritten
|
|
79.. 2:
|
|
86.. 1:
|
|
87.. 2:
|
|
92.. 1:
|
|
93.. 2: unwritten
|
|
95.. 1: eof
|