qemu-nbd: Look up flag names in array
The existing code to convert flag bits into strings looks a bit strange now, and if we ever add more flags, it will look even stranger. Prevent that from happening by making it look up the flag names in an array. Signed-off-by: Max Reitz <mreitz@redhat.com> Message-Id: <20190405191635.25740-1-mreitz@redhat.com> Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
19eb2d4e73
commit
c4e2aff81b
@ -127,18 +127,32 @@ typedef struct NBDExtent {
|
|||||||
|
|
||||||
/* Transmission (export) flags: sent from server to client during handshake,
|
/* Transmission (export) flags: sent from server to client during handshake,
|
||||||
but describe what will happen during transmission */
|
but describe what will happen during transmission */
|
||||||
#define NBD_FLAG_HAS_FLAGS (1 << 0) /* Flags are there */
|
enum {
|
||||||
#define NBD_FLAG_READ_ONLY (1 << 1) /* Device is read-only */
|
NBD_FLAG_HAS_FLAGS_BIT = 0, /* Flags are there */
|
||||||
#define NBD_FLAG_SEND_FLUSH (1 << 2) /* Send FLUSH */
|
NBD_FLAG_READ_ONLY_BIT = 1, /* Device is read-only */
|
||||||
#define NBD_FLAG_SEND_FUA (1 << 3) /* Send FUA (Force Unit Access) */
|
NBD_FLAG_SEND_FLUSH_BIT = 2, /* Send FLUSH */
|
||||||
#define NBD_FLAG_ROTATIONAL (1 << 4) /* Use elevator algorithm -
|
NBD_FLAG_SEND_FUA_BIT = 3, /* Send FUA (Force Unit Access) */
|
||||||
rotational media */
|
NBD_FLAG_ROTATIONAL_BIT = 4, /* Use elevator algorithm -
|
||||||
#define NBD_FLAG_SEND_TRIM (1 << 5) /* Send TRIM (discard) */
|
rotational media */
|
||||||
#define NBD_FLAG_SEND_WRITE_ZEROES (1 << 6) /* Send WRITE_ZEROES */
|
NBD_FLAG_SEND_TRIM_BIT = 5, /* Send TRIM (discard) */
|
||||||
#define NBD_FLAG_SEND_DF (1 << 7) /* Send DF (Do not Fragment) */
|
NBD_FLAG_SEND_WRITE_ZEROES_BIT = 6, /* Send WRITE_ZEROES */
|
||||||
#define NBD_FLAG_CAN_MULTI_CONN (1 << 8) /* Multi-client cache consistent */
|
NBD_FLAG_SEND_DF_BIT = 7, /* Send DF (Do not Fragment) */
|
||||||
#define NBD_FLAG_SEND_RESIZE (1 << 9) /* Send resize */
|
NBD_FLAG_CAN_MULTI_CONN_BIT = 8, /* Multi-client cache consistent */
|
||||||
#define NBD_FLAG_SEND_CACHE (1 << 10) /* Send CACHE (prefetch) */
|
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
|
/* New-style handshake (global) flags, sent from server to client, and
|
||||||
control what will happen during handshake phase. */
|
control what will happen during handshake phase. */
|
||||||
|
46
qemu-nbd.c
46
qemu-nbd.c
@ -279,37 +279,25 @@ static int qemu_nbd_client_list(SocketAddress *saddr, QCryptoTLSCreds *tls,
|
|||||||
printf(" description: %s\n", list[i].description);
|
printf(" description: %s\n", list[i].description);
|
||||||
}
|
}
|
||||||
if (list[i].flags & NBD_FLAG_HAS_FLAGS) {
|
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(" size: %" PRIu64 "\n", list[i].size);
|
||||||
printf(" flags: 0x%x (", list[i].flags);
|
printf(" flags: 0x%x (", list[i].flags);
|
||||||
if (list[i].flags & NBD_FLAG_READ_ONLY) {
|
for (size_t bit = 0; bit < ARRAY_SIZE(flag_names); bit++) {
|
||||||
printf(" readonly");
|
if (flag_names[bit] && (list[i].flags & (1 << bit))) {
|
||||||
}
|
printf(" %s", flag_names[bit]);
|
||||||
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");
|
|
||||||
}
|
|
||||||
if (list[i].flags & NBD_FLAG_SEND_CACHE) {
|
|
||||||
printf(" cache");
|
|
||||||
}
|
}
|
||||||
printf(" )\n");
|
printf(" )\n");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user