Commit df06df4f authored by Peter Maydell's avatar Peter Maydell
Browse files

Merge remote-tracking branch 'remotes/ericb/tags/pull-nbd-2019-05-07' into staging



nbd patches for 2019-05-07

- iotest improvements

# gpg: Signature made Tue 07 May 2019 16:00:18 BST
# gpg:                using RSA key A7A16B4A2527436A
# gpg: Good signature from "Eric Blake <eblake@redhat.com>" [full]
# gpg:                 aka "Eric Blake (Free Software Programmer) <ebb9@byu.net>" [full]
# gpg:                 aka "[jpeg image of size 6874]" [full]
# Primary key fingerprint: 71C2 CC22 B1C4 6029 27D2  F3AA A7A1 6B4A 2527 436A

* remotes/ericb/tags/pull-nbd-2019-05-07:
  iotests: Make 182 do without device_add
  iotests: Tweak 221 sizing for different hole granularities
  tests/qemu-iotests: Fix more reference output files due to recent qemu-io change
  iotests: Fix 233 for ports other than 10809
  qemu-nbd: Look up flag names in array

Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parents 629d1669 8fabb8be
Loading
Loading
Loading
Loading
+26 −12
Original line number Diff line number Diff line
@@ -127,18 +127,32 @@ typedef struct NBDExtent {

/* Transmission (export) flags: sent from server to client during handshake,
   but describe what will happen during transmission */
#define NBD_FLAG_HAS_FLAGS         (1 << 0) /* Flags are there */
#define NBD_FLAG_READ_ONLY         (1 << 1) /* Device is read-only */
#define NBD_FLAG_SEND_FLUSH        (1 << 2) /* Send FLUSH */
#define NBD_FLAG_SEND_FUA          (1 << 3) /* Send FUA (Force Unit Access) */
#define NBD_FLAG_ROTATIONAL        (1 << 4) /* Use elevator algorithm -
enum {
    NBD_FLAG_HAS_FLAGS_BIT          =  0, /* Flags are there */
    NBD_FLAG_READ_ONLY_BIT          =  1, /* Device is read-only */
    NBD_FLAG_SEND_FLUSH_BIT         =  2, /* Send FLUSH */
    NBD_FLAG_SEND_FUA_BIT           =  3, /* Send FUA (Force Unit Access) */
    NBD_FLAG_ROTATIONAL_BIT         =  4, /* Use elevator algorithm -
                                             rotational media */
#define NBD_FLAG_SEND_TRIM         (1 << 5) /* Send TRIM (discard) */
#define NBD_FLAG_SEND_WRITE_ZEROES (1 << 6) /* Send WRITE_ZEROES */
#define NBD_FLAG_SEND_DF           (1 << 7) /* Send DF (Do not Fragment) */
#define NBD_FLAG_CAN_MULTI_CONN    (1 << 8) /* Multi-client cache consistent */
#define NBD_FLAG_SEND_RESIZE       (1 << 9) /* Send resize */
#define NBD_FLAG_SEND_CACHE        (1 << 10) /* Send CACHE (prefetch) */
    NBD_FLAG_SEND_TRIM_BIT          =  5, /* Send TRIM (discard) */
    NBD_FLAG_SEND_WRITE_ZEROES_BIT  =  6, /* Send WRITE_ZEROES */
    NBD_FLAG_SEND_DF_BIT            =  7, /* Send DF (Do not Fragment) */
    NBD_FLAG_CAN_MULTI_CONN_BIT     =  8, /* Multi-client cache consistent */
    NBD_FLAG_SEND_RESIZE_BIT        =  9, /* Send resize */
    NBD_FLAG_SEND_CACHE_BIT         = 10, /* Send CACHE (prefetch) */
};

#define NBD_FLAG_HAS_FLAGS         (1 << NBD_FLAG_HAS_FLAGS_BIT)
#define NBD_FLAG_READ_ONLY         (1 << NBD_FLAG_READ_ONLY_BIT)
#define NBD_FLAG_SEND_FLUSH        (1 << NBD_FLAG_SEND_FLUSH_BIT)
#define NBD_FLAG_SEND_FUA          (1 << NBD_FLAG_SEND_FUA_BIT)
#define NBD_FLAG_ROTATIONAL        (1 << NBD_FLAG_ROTATIONAL_BIT)
#define NBD_FLAG_SEND_TRIM         (1 << NBD_FLAG_SEND_TRIM_BIT)
#define NBD_FLAG_SEND_WRITE_ZEROES (1 << NBD_FLAG_SEND_WRITE_ZEROES_BIT)
#define NBD_FLAG_SEND_DF           (1 << NBD_FLAG_SEND_DF_BIT)
#define NBD_FLAG_CAN_MULTI_CONN    (1 << NBD_FLAG_CAN_MULTI_CONN_BIT)
#define NBD_FLAG_SEND_RESIZE       (1 << NBD_FLAG_SEND_RESIZE_BIT)
#define NBD_FLAG_SEND_CACHE        (1 << NBD_FLAG_SEND_CACHE_BIT)

/* New-style handshake (global) flags, sent from server to client, and
   control what will happen during handshake phase. */
+17 −29
Original line number Diff line number Diff line
@@ -279,37 +279,25 @@ static int qemu_nbd_client_list(SocketAddress *saddr, QCryptoTLSCreds *tls,
            printf("  description: %s\n", list[i].description);
        }
        if (list[i].flags & NBD_FLAG_HAS_FLAGS) {
            static const char *const flag_names[] = {
                [NBD_FLAG_READ_ONLY_BIT]            = "readonly",
                [NBD_FLAG_SEND_FLUSH_BIT]           = "flush",
                [NBD_FLAG_SEND_FUA_BIT]             = "fua",
                [NBD_FLAG_ROTATIONAL_BIT]           = "rotational",
                [NBD_FLAG_SEND_TRIM_BIT]            = "trim",
                [NBD_FLAG_SEND_WRITE_ZEROES_BIT]    = "zeroes",
                [NBD_FLAG_SEND_DF_BIT]              = "df",
                [NBD_FLAG_CAN_MULTI_CONN_BIT]       = "multi",
                [NBD_FLAG_SEND_RESIZE_BIT]          = "resize",
                [NBD_FLAG_SEND_CACHE_BIT]           = "cache",
            };

            printf("  size:  %" PRIu64 "\n", list[i].size);
            printf("  flags: 0x%x (", list[i].flags);
            if (list[i].flags & NBD_FLAG_READ_ONLY) {
                printf(" readonly");
            }
            if (list[i].flags & NBD_FLAG_SEND_FLUSH) {
                printf(" flush");
            }
            if (list[i].flags & NBD_FLAG_SEND_FUA) {
                printf(" fua");
            }
            if (list[i].flags & NBD_FLAG_ROTATIONAL) {
                printf(" rotational");
            }
            if (list[i].flags & NBD_FLAG_SEND_TRIM) {
                printf(" trim");
            }
            if (list[i].flags & NBD_FLAG_SEND_WRITE_ZEROES) {
                printf(" zeroes");
            }
            if (list[i].flags & NBD_FLAG_SEND_DF) {
                printf(" df");
            }
            if (list[i].flags & NBD_FLAG_CAN_MULTI_CONN) {
                printf(" multi");
            }
            if (list[i].flags & NBD_FLAG_SEND_RESIZE) {
                printf(" resize");
            for (size_t bit = 0; bit < ARRAY_SIZE(flag_names); bit++) {
                if (flag_names[bit] && (list[i].flags & (1 << bit))) {
                    printf(" %s", flag_names[bit]);
                }
            if (list[i].flags & NBD_FLAG_SEND_CACHE) {
                printf(" cache");
            }
            printf(" )\n");
        }
+4 −4
Original line number Diff line number Diff line
@@ -2,15 +2,15 @@ QA output created by 059

=== Testing invalid granularity ===
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
can't open device TEST_DIR/t.vmdk: Invalid granularity, image may be corrupt
qemu-io: can't open device TEST_DIR/t.vmdk: Invalid granularity, image may be corrupt

=== Testing too big L2 table size ===
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
can't open device TEST_DIR/t.vmdk: L2 table size too big
qemu-io: can't open device TEST_DIR/t.vmdk: L2 table size too big

=== Testing too big L1 table size ===
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
can't open device TEST_DIR/t.vmdk: L1 size too big
qemu-io: can't open device TEST_DIR/t.vmdk: L1 size too big

=== Testing monolithicFlat creation and opening ===
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2147483648 subformat=monolithicFlat
@@ -2050,7 +2050,7 @@ wrote 512/512 bytes at offset 10240

=== Testing monolithicFlat with internally generated JSON file name ===
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 subformat=monolithicFlat
can't open: Cannot use relative extent paths with VMDK descriptor file 'json:{"image": {"driver": "file", "filename": "TEST_DIR/t.IMGFMT"}, "driver": "blkdebug", "inject-error.0.event": "read_aio"}'
qemu-io: can't open: Cannot use relative extent paths with VMDK descriptor file 'json:{"image": {"driver": "file", "filename": "TEST_DIR/t.IMGFMT"}, "driver": "blkdebug", "inject-error.0.event": "read_aio"}'

=== Testing version 3 ===
image: TEST_DIR/iotest-version3.IMGFMT
+34 −34
Original line number Diff line number Diff line
QA output created by 083
=== Check disconnect before neg1 ===

can't open device nbd+tcp://127.0.0.1:PORT/foo
qemu-io: can't open device nbd+tcp://127.0.0.1:PORT/foo

=== Check disconnect after neg1 ===

can't open device nbd+tcp://127.0.0.1:PORT/foo
qemu-io: can't open device nbd+tcp://127.0.0.1:PORT/foo

=== Check disconnect 8 neg1 ===

can't open device nbd+tcp://127.0.0.1:PORT/foo
qemu-io: can't open device nbd+tcp://127.0.0.1:PORT/foo

=== Check disconnect 16 neg1 ===

can't open device nbd+tcp://127.0.0.1:PORT/foo
qemu-io: can't open device nbd+tcp://127.0.0.1:PORT/foo

=== Check disconnect before export ===

can't open device nbd+tcp://127.0.0.1:PORT/foo
qemu-io: can't open device nbd+tcp://127.0.0.1:PORT/foo

=== Check disconnect after export ===

can't open device nbd+tcp://127.0.0.1:PORT/foo
qemu-io: can't open device nbd+tcp://127.0.0.1:PORT/foo

=== Check disconnect 4 export ===

can't open device nbd+tcp://127.0.0.1:PORT/foo
qemu-io: can't open device nbd+tcp://127.0.0.1:PORT/foo

=== Check disconnect 12 export ===

can't open device nbd+tcp://127.0.0.1:PORT/foo
qemu-io: can't open device nbd+tcp://127.0.0.1:PORT/foo

=== Check disconnect 16 export ===

can't open device nbd+tcp://127.0.0.1:PORT/foo
qemu-io: can't open device nbd+tcp://127.0.0.1:PORT/foo

=== Check disconnect before neg2 ===

can't open device nbd+tcp://127.0.0.1:PORT/foo
qemu-io: can't open device nbd+tcp://127.0.0.1:PORT/foo

=== Check disconnect after neg2 ===

@@ -45,11 +45,11 @@ read failed: Input/output error

=== Check disconnect 8 neg2 ===

can't open device nbd+tcp://127.0.0.1:PORT/foo
qemu-io: can't open device nbd+tcp://127.0.0.1:PORT/foo

=== Check disconnect 10 neg2 ===

can't open device nbd+tcp://127.0.0.1:PORT/foo
qemu-io: can't open device nbd+tcp://127.0.0.1:PORT/foo

=== Check disconnect before request ===

@@ -86,23 +86,23 @@ read 512/512 bytes at offset 0

=== Check disconnect before neg-classic ===

can't open device nbd+tcp://127.0.0.1:PORT/
qemu-io: can't open device nbd+tcp://127.0.0.1:PORT/

=== Check disconnect 8 neg-classic ===

can't open device nbd+tcp://127.0.0.1:PORT/
qemu-io: can't open device nbd+tcp://127.0.0.1:PORT/

=== Check disconnect 16 neg-classic ===

can't open device nbd+tcp://127.0.0.1:PORT/
qemu-io: can't open device nbd+tcp://127.0.0.1:PORT/

=== Check disconnect 24 neg-classic ===

can't open device nbd+tcp://127.0.0.1:PORT/
qemu-io: can't open device nbd+tcp://127.0.0.1:PORT/

=== Check disconnect 28 neg-classic ===

can't open device nbd+tcp://127.0.0.1:PORT/
qemu-io: can't open device nbd+tcp://127.0.0.1:PORT/

=== Check disconnect after neg-classic ===

@@ -110,43 +110,43 @@ read failed: Input/output error

=== Check disconnect before neg1 ===

can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock
qemu-io: can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock

=== Check disconnect after neg1 ===

can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock
qemu-io: can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock

=== Check disconnect 8 neg1 ===

can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock
qemu-io: can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock

=== Check disconnect 16 neg1 ===

can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock
qemu-io: can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock

=== Check disconnect before export ===

can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock
qemu-io: can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock

=== Check disconnect after export ===

can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock
qemu-io: can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock

=== Check disconnect 4 export ===

can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock
qemu-io: can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock

=== Check disconnect 12 export ===

can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock
qemu-io: can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock

=== Check disconnect 16 export ===

can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock
qemu-io: can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock

=== Check disconnect before neg2 ===

can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock
qemu-io: can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock

=== Check disconnect after neg2 ===

@@ -154,11 +154,11 @@ read failed: Input/output error

=== Check disconnect 8 neg2 ===

can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock
qemu-io: can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock

=== Check disconnect 10 neg2 ===

can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock
qemu-io: can't open device nbd+unix:///foo?socket=TEST_DIR/nbd.sock

=== Check disconnect before request ===

@@ -195,23 +195,23 @@ read 512/512 bytes at offset 0

=== Check disconnect before neg-classic ===

can't open device nbd+unix:///?socket=TEST_DIR/nbd.sock
qemu-io: can't open device nbd+unix:///?socket=TEST_DIR/nbd.sock

=== Check disconnect 8 neg-classic ===

can't open device nbd+unix:///?socket=TEST_DIR/nbd.sock
qemu-io: can't open device nbd+unix:///?socket=TEST_DIR/nbd.sock

=== Check disconnect 16 neg-classic ===

can't open device nbd+unix:///?socket=TEST_DIR/nbd.sock
qemu-io: can't open device nbd+unix:///?socket=TEST_DIR/nbd.sock

=== Check disconnect 24 neg-classic ===

can't open device nbd+unix:///?socket=TEST_DIR/nbd.sock
qemu-io: can't open device nbd+unix:///?socket=TEST_DIR/nbd.sock

=== Check disconnect 28 neg-classic ===

can't open device nbd+unix:///?socket=TEST_DIR/nbd.sock
qemu-io: can't open device nbd+unix:///?socket=TEST_DIR/nbd.sock

=== Check disconnect after neg-classic ===

+12 −12
Original line number Diff line number Diff line
@@ -2,25 +2,25 @@ QA output created by 092

== Invalid cluster size ==
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
can't open device TEST_DIR/t.qcow: Cluster size must be between 512 and 64k
can't open device TEST_DIR/t.qcow: Cluster size must be between 512 and 64k
can't open device TEST_DIR/t.qcow: Cluster size must be between 512 and 64k
can't open device TEST_DIR/t.qcow: Cluster size must be between 512 and 64k
qemu-io: can't open device TEST_DIR/t.qcow: Cluster size must be between 512 and 64k
qemu-io: can't open device TEST_DIR/t.qcow: Cluster size must be between 512 and 64k
qemu-io: can't open device TEST_DIR/t.qcow: Cluster size must be between 512 and 64k
qemu-io: can't open device TEST_DIR/t.qcow: Cluster size must be between 512 and 64k

== Invalid L2 table size ==
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
can't open device TEST_DIR/t.qcow: L2 table size must be between 512 and 64k
can't open device TEST_DIR/t.qcow: L2 table size must be between 512 and 64k
can't open device TEST_DIR/t.qcow: L2 table size must be between 512 and 64k
can't open device TEST_DIR/t.qcow: L2 table size must be between 512 and 64k
qemu-io: can't open device TEST_DIR/t.qcow: L2 table size must be between 512 and 64k
qemu-io: can't open device TEST_DIR/t.qcow: L2 table size must be between 512 and 64k
qemu-io: can't open device TEST_DIR/t.qcow: L2 table size must be between 512 and 64k
qemu-io: can't open device TEST_DIR/t.qcow: L2 table size must be between 512 and 64k

== Invalid size ==
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
can't open device TEST_DIR/t.qcow: Image too large
can't open device TEST_DIR/t.qcow: Image too large
qemu-io: can't open device TEST_DIR/t.qcow: Image too large
qemu-io: can't open device TEST_DIR/t.qcow: Image too large

== Invalid backing file length ==
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
can't open device TEST_DIR/t.qcow: Backing file name too long
can't open device TEST_DIR/t.qcow: Backing file name too long
qemu-io: can't open device TEST_DIR/t.qcow: Backing file name too long
qemu-io: can't open device TEST_DIR/t.qcow: Backing file name too long
*** done
Loading