diff mbox

iotests failure of 128

Message ID 20150915060349.GK14016@ad.nay.redhat.com
State New
Headers show

Commit Message

Fam Zheng Sept. 15, 2015, 6:03 a.m. UTC
Since commit 934659c460d46c948cf348822fda1d38556ed9a4 (iotests: Do not suppress
segfaults in bash tests), sudo in 128 complains about unknown command
"_qemu_io_wrapper", but I don't know how to fix that. Any idea?

128         - output mismatch (see 128.out.bad)
Failures: 128
Failed 1 of 1 tests

Comments

Eric Blake Sept. 15, 2015, 2:34 p.m. UTC | #1
On 09/15/2015 12:03 AM, Fam Zheng wrote:
> Since commit 934659c460d46c948cf348822fda1d38556ed9a4 (iotests: Do not suppress
> segfaults in bash tests), sudo in 128 complains about unknown command
> "_qemu_io_wrapper", but I don't know how to fix that. Any idea?

Ugg. That's because _qemu_io_wrapper is a shell function, but sudo can't
directly invoke shell functions.

It passes on systems where $sudo expands to '' because the test is being
run as root.

I think that test will have to be rewritten to use raw invocation
(untested):

$sudo "$QEMU_IO_PROG" $QEMU_IO_OPTIONS --format "$IMGFMT" --nocache -c
"read 0 65536" "$TEST_IMG" > out 2> err

and then manually feed "out" through _filter_qemu_io and replay "err"
(since you can no longer take advantage of the '(subshell)|pipeline'
trick added by 934659c to force bash to display core dumps).
Max Reitz Sept. 16, 2015, 4:48 p.m. UTC | #2
On 15.09.2015 16:34, Eric Blake wrote:
> On 09/15/2015 12:03 AM, Fam Zheng wrote:
>> Since commit 934659c460d46c948cf348822fda1d38556ed9a4 (iotests: Do not suppress
>> segfaults in bash tests), sudo in 128 complains about unknown command
>> "_qemu_io_wrapper", but I don't know how to fix that. Any idea?
> 
> Ugg. That's because _qemu_io_wrapper is a shell function, but sudo can't
> directly invoke shell functions.
> 
> It passes on systems where $sudo expands to '' because the test is being
> run as root.
> 
> I think that test will have to be rewritten to use raw invocation
> (untested):
> 
> $sudo "$QEMU_IO_PROG" $QEMU_IO_OPTIONS --format "$IMGFMT" --nocache -c
> "read 0 65536" "$TEST_IMG" > out 2> err
> 
> and then manually feed "out" through _filter_qemu_io and replay "err"
> (since you can no longer take advantage of the '(subshell)|pipeline'
> trick added by 934659c to force bash to display core dumps).

It's ugly, but maybe

QEMU_IO_OPTIONS="-n \"$QEMU_IO_PROG\" $QEMU_IO_OPTIONS" \
    QEMU_IO_PROG=sudo \
    _qemu_io_wrapper --format "$IMGFMT" ...

would do the trick.

But it's probably too ugly. So maybe the best solution would be to copy
the wrapper function to 128, but with it using $sudo there.

Max
diff mbox

Patch

--- /home/fam/qemu/tests/qemu-iotests/128.out   2015-09-15 11:08:07.407819420 +0800
+++ 128.out.bad 2015-09-15 13:58:56.547396610 +0800
@@ -1,5 +1,5 @@ 
 QA output created by 128
 
 == reading from error device ==
-read failed: Input/output error
+sudo: _qemu_io_wrapper: command not found
 *** done