diff options
author | Alberto Garcia <berto@igalia.com> | 2015-04-08 12:29:18 +0300 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2015-04-28 15:36:09 +0200 |
commit | 9b2aa84f87f5b95cb0295dcae38fbfbf115df2be (patch) | |
tree | fb2762247eacc84b4d217a126aeb6239d7614207 | |
parent | ec683d604069dcdaaa516789274bc0cdc14e5247 (diff) |
block: add bdrv_get_device_or_node_name()
This function gets the device name associated with a BlockDriverState,
or its node name if the device name is empty.
Signed-off-by: Alberto Garcia <berto@igalia.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-id: 4fa30aa8d61d9052ce266fd5429a59a14e941255.1428485266.git.berto@igalia.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
-rw-r--r-- | block.c | 9 | ||||
-rw-r--r-- | block/quorum.c | 5 | ||||
-rw-r--r-- | include/block/block.h | 1 |
3 files changed, 11 insertions, 4 deletions
@@ -3980,6 +3980,15 @@ const char *bdrv_get_device_name(const BlockDriverState *bs) return bs->blk ? blk_name(bs->blk) : ""; } +/* This can be used to identify nodes that might not have a device + * name associated. Since node and device names live in the same + * namespace, the result is unambiguous. The exception is if both are + * absent, then this returns an empty (non-null) string. */ +const char *bdrv_get_device_or_node_name(const BlockDriverState *bs) +{ + return bs->blk ? blk_name(bs->blk) : bs->node_name; +} + int bdrv_get_flags(BlockDriverState *bs) { return bs->open_flags; diff --git a/block/quorum.c b/block/quorum.c index 437b12251d..f91ef75a84 100644 --- a/block/quorum.c +++ b/block/quorum.c @@ -226,10 +226,7 @@ static void quorum_report_bad(QuorumAIOCB *acb, char *node_name, int ret) static void quorum_report_failure(QuorumAIOCB *acb) { - const char *reference = bdrv_get_device_name(acb->common.bs)[0] ? - bdrv_get_device_name(acb->common.bs) : - acb->common.bs->node_name; - + const char *reference = bdrv_get_device_or_node_name(acb->common.bs); qapi_event_send_quorum_failure(reference, acb->sector_num, acb->nb_sectors, &error_abort); } diff --git a/include/block/block.h b/include/block/block.h index 4c57d63fe2..b285e0d659 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -398,6 +398,7 @@ void bdrv_iterate_format(void (*it)(void *opaque, const char *name), void *opaque); const char *bdrv_get_node_name(const BlockDriverState *bs); const char *bdrv_get_device_name(const BlockDriverState *bs); +const char *bdrv_get_device_or_node_name(const BlockDriverState *bs); int bdrv_get_flags(BlockDriverState *bs); int bdrv_write_compressed(BlockDriverState *bs, int64_t sector_num, const uint8_t *buf, int nb_sectors); |