• E
    iotests: Restore stty settings on completion · 8803714b
    Eric Blake 提交于
    Executing qemu with a terminal as stdin will temporarily alter stty
    settings on that terminal (for example, disabling echo), because of
    how we run both the monitor and any multiplexing with guest input.
    Normally, qemu restores the original settings on exit; but if an
    iotest triggers qemu to abort in the middle, we can be left with
    the altered terminal setup.  This can make life very annoying when
    debugging an iotest failure (not everyone remembers the trick of
    blind-typing 'stty sane' without echo, and some people prefer
    terminal settings that are slightly different than the defaults
    picked by 'stty sane').
    
    It is possible to avoid qemu corrupting the terminal by not passing
    a terminal to qemu's stdin in the first place (as in, use
    './check ... </dev/null'), but that's extra typing to have to
    remember.  But running 'exec </dev/null' in the harness seems like
    it might be too heavy of a hammer.  So I instead went the the
    solution of saving and restoring the stty settings, only when the
    harness detects that it is run interactively.
    
    I tested this patch by forcing an allocation failure (I can't
    guarantee that this particular limit will work on all setups, but
    it shows the idea):
     $ (ulimit -S -v 500000; ./check -qcow2 1)
    Signed-off-by: NEric Blake <eblake@redhat.com>
    Signed-off-by: NKevin Wolf <kwolf@redhat.com>
    8803714b
check 20.7 KB