reset
----

read
2048, 16
----
readahead:  0
numReads:   1
size:       65536
prevSize:   0
limit:      2064

read
2096, 16
----
readahead:  0
numReads:   2
size:       65536
prevSize:   0
limit:      2112

read
2112, 16
----
readahead:  65536
numReads:   3
size:       131072
prevSize:   65536
limit:      67648

read
8000, 16
----
readahead:  0
numReads:   4
size:       131072
prevSize:   65536
limit:      67648

read
8016, 16
----
readahead:  0
numReads:   5
size:       131072
prevSize:   65536
limit:      67648

# The new limit is 2112 + 65536 = 67648.
# Since the next read will end at 67646 + 1 = 67647,
# it doesn't yet trigger a readahead.

read
67646, 1
----
readahead:  0
numReads:   6
size:       131072
prevSize:   65536
limit:      67648

read
67646, 2
----
readahead:  131072
numReads:   7
size:       262144
prevSize:   131072
limit:      198718

read
16192, 16
----
readahead:  0
numReads:   1
size:       65536
prevSize:   0
limit:      16208

read
16193, 16
----
readahead:  0
numReads:   2
size:       65536
prevSize:   0
limit:      16209

# The next read is too far ahead to benefit from readahead
# (i.e. 540497 > 16208 (limit) + (512 << 10) (maxReadaheadSize))
# numReads should get reset to 1.

read
540497, 16
----
readahead:  0
numReads:   1
size:       65536
prevSize:   0
limit:      540513

read
7980, 16
----
readahead:  0
numReads:   1
size:       65536
prevSize:   0
limit:      7996

read
0, 16
----
readahead:  0
numReads:   1
size:       65536
prevSize:   0
limit:      16

# Sizes should start from initial (64kb) again.

read
7780, 16
----
readahead:  0
numReads:   2
size:       65536
prevSize:   0
limit:      7796

read
7800, 16
----
readahead:  65536
numReads:   3
size:       131072
prevSize:   65536
limit:      73336

read
7880, 16
----
readahead:  0
numReads:   4
size:       131072
prevSize:   65536
limit:      73336

read
7980, 16
----
readahead:  0
numReads:   5
size:       131072
prevSize:   65536
limit:      73336

read
8080, 16
----
readahead:  0
numReads:   6
size:       131072
prevSize:   65536
limit:      73336

read
73416, 16
----
readahead:  131072
numReads:   7
size:       262144
prevSize:   131072
limit:      204488

read
204488, 16
----
readahead:  262144
numReads:   8
size:       262144
prevSize:   262144
limit:      466632

# The readahead size should not increase beyond the max (256kb)

read
466632, 16
----
readahead:  262144
numReads:   9
size:       262144
prevSize:   262144
limit:      728776

# A cache read pushes the limit further ahead without issuing a readahead.

cache-read
728770, 16
----
readahead:  0
numReads:   10
size:       262144
prevSize:   262144
limit:      728786

read
728780, 16
----
readahead:  262144
numReads:   11
size:       262144
prevSize:   262144
limit:      990924

# An out-of-order cache read still resets readahead state.

cache-read
1200, 16
----
readahead:  0
numReads:   1
size:       65536
prevSize:   0
limit:      1216

reset
----

# Offset 240KiB, length 32KiB.
read
245760, 32768
----
readahead:  0
numReads:   1
size:       65536
prevSize:   0
limit:      278528

# Offset 280KiB, length 32KiB.
read
286720, 32768
----
readahead:  0
numReads:   2
size:       65536
prevSize:   0
limit:      319488

# Offset 320KiB, length 32KiB.
read
327680, 32768
----
readahead:  65536
numReads:   3
size:       131072
prevSize:   65536
limit:      393216
