fsstress: avoid splice_f generating too large sparse file
authorZorro Lang <zlang@redhat.com>
Mon, 4 Feb 2019 15:48:09 +0000 (23:48 +0800)
committerEryu Guan <guaneryu@gmail.com>
Sun, 10 Feb 2019 09:14:08 +0000 (17:14 +0800)
commite37418a588634d4289c73cb1cafa47d8348b0dc3
tree16378db1ab91ab04b2ad35b9786daacf4f2f5ace
parent3e3fa955fb2e18f3c91a216f987c682189d3ce35
fsstress: avoid splice_f generating too large sparse file

Thanks to Darrick J. Wong find this issue! Current splice_f generates
file offset as below:

  lr = ((int64_t)random() << 32) + random();
  off2 = (off64_t)(lr % maxfsize);

It generates a pseudorandom 64-bit candidate offset for the
destination file where we'll land the splice data, and then caps the
offset at maxfsize (which is 2^63- 1 on x64), which effectively means
that the data will appear at a very high file offset which creates
large (sparse) files very quickly.

That's not what we want, and some case likes shared/009 will take
forever to run md5sum on lots of huge files.

Signed-off-by: Zorro Lang <zlang@redhat.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
ltp/fsstress.c