qemu/tests/qemu-iotests
Eric Blake 1104d83c72 nbd-client: Refuse read-only client with BDRV_O_RDWR
The NBD spec says that clients should not try to write/trim to
an export advertised as read-only by the server.  But we failed
to check that, and would allow the block layer to use NBD with
BDRV_O_RDWR even when the server is read-only, which meant we
were depending on the server sending a proper EPERM failure for
various commands, and also exposes a leaky abstraction: using
qemu-io in read-write mode would succeed on 'w -z 0 0' because
of local short-circuiting logic, but 'w 0 0' would send a
request over the wire (where it then depends on the server, and
fails at least for qemu-nbd but might pass for other NBD
implementations).

With this patch, a client MUST request read-only mode to access
a server that is doing a read-only export, or else it will get
a message like:

can't open device nbd://localhost:10809/foo: request for write access conflicts with read-only export

It is no longer possible to even attempt writes over the wire
(including the corner case of 0-length writes), because the block
layer enforces the explicit read-only request; this matches the
behavior of qcow2 when backed by a read-only POSIX file.

Fix several iotests to comply with the new behavior (since
qemu-nbd of an internal snapshot, as well as nbd-server-add over QMP,
default to a read-only export, we must tell blockdev-add/qemu-io to
set up a read-only client).

CC: qemu-stable@nongnu.org
Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <20171108215703.9295-3-eblake@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
2017-11-09 10:10:17 -06:00
..
026
2017-04-27 15:46:16 +02:00
2017-04-27 15:46:16 +02:00
2017-04-27 15:46:16 +02:00
030
2017-10-06 16:28:58 +02:00
2016-04-15 17:22:11 +02:00
2017-07-11 17:45:02 +02:00
046
2017-05-11 11:08:40 +02:00
051
2017-09-26 14:46:23 +02:00
2017-09-26 14:46:23 +02:00
2017-09-26 14:46:23 +02:00
055
2017-07-24 15:06:04 +02:00
059
2017-08-01 18:09:33 +02:00
2017-07-10 13:18:05 +02:00
063
2017-08-01 18:09:33 +02:00
2015-01-23 12:41:32 -05:00
066
2017-05-11 12:08:24 +02:00
2017-05-11 12:08:24 +02:00
2017-09-26 14:46:23 +02:00
068
2017-09-06 15:19:01 +01:00
2017-09-06 15:19:01 +01:00
2016-01-07 21:30:17 +01:00
102
2017-09-26 15:00:32 +02:00
106
2017-09-26 15:00:32 +02:00
109
2017-08-08 14:36:59 +02:00
2015-12-18 14:36:17 +01:00
2017-07-10 13:18:05 +02:00
2017-05-11 14:28:07 +02:00
125
2017-10-26 15:01:14 +02:00
2017-10-26 15:01:14 +02:00
126
2017-07-11 17:45:00 +02:00
2017-07-11 17:45:00 +02:00
127
2017-10-26 15:01:13 +02:00
136
2017-08-08 15:19:16 +02:00
2016-05-19 16:45:31 +02:00
141
2017-08-01 18:09:33 +02:00
142
2017-07-11 17:45:00 +02:00
2017-07-10 13:18:05 +02:00
156
2017-08-01 18:09:33 +02:00
159
2017-07-11 17:44:59 +02:00
2016-09-20 22:10:57 +02:00
160
2016-09-20 22:10:57 +02:00
2016-09-20 22:10:57 +02:00
163
2017-09-26 15:00:32 +02:00
2017-09-26 15:00:32 +02:00
170
2017-07-11 17:44:59 +02:00
2016-09-20 22:10:57 +02:00
171
2017-07-11 17:45:00 +02:00
2017-09-18 19:43:38 -04:00
2017-02-12 00:47:42 +01:00
178
2017-07-11 17:45:01 +02:00
183
2017-06-09 11:45:03 +02:00
2017-06-09 11:45:03 +02:00
185
2017-08-11 14:44:39 +02:00
2017-10-06 16:28:58 +02:00

=== This is the QEMU I/O test suite ===

* Intro

This package contains a simple test suite for the I/O layer of qemu.
It does not require a guest, but only the qemu, qemu-img and qemu-io
binaries.  This does limit it to exercise the low-level I/O path only
but no actual block drivers like ide, scsi or virtio.

* Usage

Just run ./check to run all tests for the raw image format, or ./check
-qcow2 to test the qcow2 image format.  The output of ./check -h explains
additional options to test further image formats or I/O methods.

* Feedback and patches

Please send improvements to the test suite, general feedback or just
reports of failing tests cases to qemu-devel@nongnu.org with a CC:
to qemu-block@nongnu.org.