On 17/04/18 08:21, Johannes Thumshirn wrote:
On Mon, Apr 16, 2018 at 10:52:47PM +0100, Alan Jenkins wrote:
Without this fix, I get an IO error in this test:
# dd if=/dev/sda of=/dev/null iflag=direct & \
while killall -SIGUSR1 dd; do sleep 0.1; done & \
echo mem > /sys/power/state ; \
sleep 5; killall dd # stop after 5 seconds
linux-block insisted they wanted this, based on my reproducer above.
If you start wondering why you wouldn't base it on scsi_debug with a new
"quiesce" option, that makes two of us.
Thanks for doing this:
+ # Maybe annoying for Xen dom0, but I'm guessing it's not common.
+ if grep -q ^flags.*\ hypervisor /proc/cpuinfo &&
+ (( !HAVE_BARE_METAL_SCSI )); then
+ SKIP_REASON=\
+"Hypervisor detected, but this test wants bare-metal SCSI timings.
+If you have a pass-through device, you may set HAVE_BARE_METAL_SCSI=1."
+ return 1
+ fi
I don't think we need this, if people want to shoot themselves in the
foot by runnning a possibly destructive test suite in a HV we
shouldn't stop them.
Thanks, this is what I was hoping to get discussion on :).
What is meant by HV?
This is phrased to solve a problem I hadn't mentioned previously:
+ # I can't expect to hit the window using bash, if the device is
+ # emulated by cpu.
I haven't tested this reproducer against devices emulated in software.
It's written against real hardware which takes a whole second to bring
the SATA link up. (And maybe spin up the hdd as well?).
I'm not familiar with linux-block's testing, to know how prevalent that
bare-metal access is. I would like to avoid putting out a lot of "pass"
where it's effectively being skipped.
(The comment you did quote just refers to this check being annoying in
dom0, because I assume the check detects dom0 as being virtualized,
despite it having access to bare-metal scsi devices. It's not a great
comment; I will clarify it a bit).
Yes, if this reason turns out to be marginal, I would be back to the
concern about reliability of VM suspend, and wanting it to be opt-in
with DO_PM_TEST=1 in the config file or something. As a newb to
blk-tests I would be very frustrated to spin up virt-manager with a
virtual test device, because I would run into what turns out to be an
unfixed kernel bug.
I'm happy to have the simpler check for DO_PM_TEST (with more verbose
SKIP_REASON) if it works; maybe the autodetection just made extra
complexity.
+
+ _have_fio
Not needed anymore as per below comment?
Good point, yes (but see below).
+ # I tried using fio with the exact same IO pattern,
+ # sadly it was not 100% reliable at reproducing this
+ # issue.
+ #
+ dd iflag=direct if="$TEST_DEV" of=/dev/null bs=$bs status=none &
+ dd_pid=$!
+
+# fio --output="$FULL" --loops=65535 \
+# --thread --exitall_on_error \
+# --direct=1 \
+# --bs=$bs --rw=read --name=reads \
+# --filename="$TEST_DEV" &
+# fio_pid=$!
I think we can just zap the commented out fio part and the comment
about it.
fio was attractive as a way to avoid the failure case for ludicrously
small/fast devices. Later I actually hit that case, from running this
test on a small unused partition :).
I think I've worked out the reliability now. So I can start using fio,
and have a solid answer to both issues.
Alan