Eric Blake dbb38caac5 nbd: Improve per-export flag handling in server
When creating a read-only image, we are still advertising support for
TRIM and WRITE_ZEROES to the client, even though the client should not
be issuing those commands.  But seeing this requires looking across
multiple functions:

All callers to nbd_export_new() passed a single flag based solely on
whether the export allows writes.  Later, we then pass a constant set
of flags to nbd_negotiate_options() (namely, the set of flags which we
always support, at least for writable images), which is then further
dynamically modified with NBD_FLAG_SEND_DF based on client requests
for structured options.  Finally, when processing NBD_OPT_EXPORT_NAME
or NBD_OPT_EXPORT_GO we bitwise-or the original caller's flag with the
runtime set of flags we've built up over several functions.

Let's refactor things to instead compute a baseline of flags as soon
as possible which gets shared between multiple clients, in
nbd_export_new(), and changing the signature for the callers to pass
in a simpler bool rather than having to figure out flags.  We can then
get rid of the 'myflags' parameter to various functions, and instead
refer to client for everything we need (we still have to perform a
bitwise-OR for NBD_FLAG_SEND_DF during NBD_OPT_EXPORT_NAME and
NBD_OPT_EXPORT_GO, but it's easier to see what is being computed).
This lets us quit advertising senseless flags for read-only images, as
well as making the next patch for exposing FAST_ZERO support easier to
write.

Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <20190823143726.27062-2-eblake@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
[eblake: improve commit message, update iotest 223]
2019-09-05 16:02:54 -05:00
..
2018-01-23 12:34:43 +01:00
026
2019-09-03 14:56:06 +02:00
030
2019-07-15 15:48:40 +02:00
039
2019-09-03 14:56:06 +02:00
040
2019-08-16 16:28:02 -04:00
2017-07-11 17:45:02 +02:00
045
2019-02-25 15:11:28 +01:00
2019-07-30 12:25:43 +02:00
052
2019-09-03 14:56:06 +02:00
055
2018-03-19 12:01:24 +01:00
2015-01-23 12:41:32 -05:00
2017-05-11 12:08:24 +02:00
2017-09-06 15:19:01 +01:00
2019-07-12 15:42:23 +02:00
2019-06-14 14:16:57 +02:00
091
2019-09-03 14:56:06 +02:00
093
2019-08-16 16:28:02 -04:00
2018-06-11 16:18:45 +02:00
118
2019-08-16 10:25:16 +02:00
2019-08-16 10:25:16 +02:00
2017-10-26 15:01:14 +02:00
129
2018-03-09 15:40:07 +01:00
132
2018-03-09 15:40:07 +01:00
2016-05-19 16:45:31 +02:00
138
2019-05-07 17:14:21 +02:00
2019-05-07 17:14:21 +02:00
139
2019-08-16 16:28:02 -04:00
141
2019-08-19 17:13:26 +02:00
2019-08-19 17:13:26 +02:00
147
2019-06-13 08:50:47 -05:00
148
2018-03-09 15:40:07 +01:00
152
2018-03-09 15:40:07 +01:00
155
2018-05-23 14:30:51 +02:00
2016-09-20 22:10:57 +02:00
2016-09-20 22:10:57 +02:00
2017-09-26 15:00:32 +02:00
2016-09-20 22:10:57 +02:00
2017-09-18 19:43:38 -04:00
2017-02-12 00:47:42 +01:00
194
2018-04-10 16:33:43 +02:00
199
2018-03-13 17:06:32 -04:00
205
2019-06-24 16:01:40 +02:00
207
2019-06-24 16:01:04 +02:00
2019-06-24 16:01:04 +02:00
209
2018-03-13 15:44:09 -05:00
210
2019-02-25 15:11:27 +01:00
211
2019-02-25 15:11:28 +01:00
212
2019-02-25 15:11:27 +01:00
213
2019-02-25 15:11:27 +01:00
2018-05-15 16:15:21 +02:00
219
2019-06-14 14:16:57 +02:00
222
2018-07-10 11:55:11 +02:00
223
2019-03-09 20:55:44 +00:00
228
2019-02-25 15:11:27 +01:00
2019-02-25 15:11:27 +01:00
232
2019-03-19 15:49:29 +01:00
2019-03-19 15:49:29 +01:00
233
2019-06-13 08:50:47 -05:00
2019-02-01 13:46:44 +01:00
237
2019-02-25 15:11:27 +01:00
238
2019-08-16 16:28:02 -04:00
2019-02-01 13:46:44 +01:00
245
2019-07-02 03:53:05 +02:00
2019-03-19 15:49:29 +01:00
250
2019-06-04 16:55:58 +02:00
2019-06-04 16:55:58 +02:00
254
2019-08-16 16:28:03 -04:00
2019-08-16 16:28:03 -04:00
255
2019-07-19 13:19:17 +02:00
257
2019-08-16 18:29:43 -04:00
2019-06-13 08:50:47 -05: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.