From: John Snow <jsnow@redhat.com>
To: "Philippe Mathieu-Daudé" <philmd@redhat.com>, qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>,
qemu-block@nongnu.org, Max Reitz <mreitz@redhat.com>
Subject: Re: [Qemu-devel] [Qemu-block] [PATCH] block/create: Do not abort if a block driver is not available
Date: Wed, 11 Sep 2019 18:46:51 -0400 [thread overview]
Message-ID: <3e63a7fc-b95b-6971-7e94-4b41c517d6a5@redhat.com> (raw)
In-Reply-To: <20190911220849.30840-1-philmd@redhat.com>
On 9/11/19 6:08 PM, Philippe Mathieu-Daudé wrote:
> The 'blockdev-create' QMP command was introduced as experimental
> feature in commit b0292b851b8, using the assert() debug call.
> It got promoted to 'stable' command in 3fb588a0f2c, but the
> assert call was not removed.
>
> Some block drivers are optional, and bdrv_find_format() might
> return a NULL value, triggering the assertion.
>
> Stable code is not expected to abort, so return an error instead.
>
> This is easily reproducible when libnfs is not installed:
>
> ./configure
> [...]
> module support no
> Block whitelist (rw)
> Block whitelist (ro)
> libiscsi support yes
> libnfs support no
> [...]
>
> Start QEMU:
>
> $ qemu-system-x86_64 -S -qmp unix:/tmp/qemu.qmp,server,nowait
>
> Send the 'blockdev-create' with the 'nfs' driver:
>
> $ ( cat << 'EOF'
> {'execute': 'qmp_capabilities'}
> {'execute': 'blockdev-create', 'arguments': {'job-id': 'x', 'options': {'size': 0, 'driver': 'nfs', 'location': {'path': '/', 'server': {'host': '::1', 'type': 'inet'}}}}, 'id': 'x'}
> EOF
> ) | socat STDIO UNIX:/tmp/qemu.qmp
> {"QMP": {"version": {"qemu": {"micro": 50, "minor": 1, "major": 4}, "package": "v4.1.0-733-g89ea03a7dc"}, "capabilities": ["oob"]}}
> {"return": {}}
>
> QEMU crashes:
>
> $ gdb qemu-system-x86_64 core
> Program received signal SIGSEGV, Segmentation fault.
> (gdb) bt
> #0 0x00007ffff510957f in raise () at /lib64/libc.so.6
> #1 0x00007ffff50f3895 in abort () at /lib64/libc.so.6
> #2 0x00007ffff50f3769 in _nl_load_domain.cold.0 () at /lib64/libc.so.6
> #3 0x00007ffff5101a26 in .annobin_assert.c_end () at /lib64/libc.so.6
> #4 0x0000555555d7e1f1 in qmp_blockdev_create (job_id=0x555556baee40 "x", options=0x555557666610, errp=0x7fffffffc770) at block/create.c:69
> #5 0x0000555555c96b52 in qmp_marshal_blockdev_create (args=0x7fffdc003830, ret=0x7fffffffc7f8, errp=0x7fffffffc7f0) at qapi/qapi-commands-block-core.c:1314
> #6 0x0000555555deb0a0 in do_qmp_dispatch (cmds=0x55555645de70 <qmp_commands>, request=0x7fffdc005c70, allow_oob=false, errp=0x7fffffffc898) at qapi/qmp-dispatch.c:131
> #7 0x0000555555deb2a1 in qmp_dispatch (cmds=0x55555645de70 <qmp_commands>, request=0x7fffdc005c70, allow_oob=false) at qapi/qmp-dispatch.c:174
>
> With this patch applied, QEMU returns a QMP error:
>
> {'execute': 'blockdev-create', 'arguments': {'job-id': 'x', 'options': {'size': 0, 'driver': 'nfs', 'location': {'path': '/', 'server': {'host': '::1', 'type': 'inet'}}}}, 'id': 'x'}
> {"id": "x", "error": {"class": "GenericError", "desc": "Block driver 'nfs' not found or not supported"}}
>
> Reported-by: Xu Tian <xutian@redhat.com>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: John Snow <jsnow@redhat.com>
next prev parent reply other threads:[~2019-09-11 22:47 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-11 22:08 [Qemu-devel] [PATCH] block/create: Do not abort if a block driver is not available Philippe Mathieu-Daudé
2019-09-11 22:12 ` Eric Blake
2019-09-11 22:46 ` John Snow [this message]
2019-09-12 8:03 ` Kevin Wolf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3e63a7fc-b95b-6971-7e94-4b41c517d6a5@redhat.com \
--to=jsnow@redhat.com \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=philmd@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).