From 0d8783cabc507adda3a5889919e6ce181acb3df8 Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Fri, 9 Nov 2018 05:41:23 -0700 Subject: [PATCH] bdev/passthru: check early for duplicate passthru bdev names The bdev layer will sort of check this when we try to register the bdev, but it's better to catch this much earlier. That way we catch it when the name gets inserted into the list, rather than when the base bdev appears. Signed-off-by: Jim Harris Change-Id: I846cb138fa848078d2c76356273870c607d79548 Reviewed-on: https://review.gerrithub.io/432602 Chandler-Test-Pool: SPDK Automated Test System Reviewed-by: Shuhei Matsumoto Reviewed-by: Ben Walker Tested-by: SPDK CI Jenkins --- lib/bdev/passthru/vbdev_passthru.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/bdev/passthru/vbdev_passthru.c b/lib/bdev/passthru/vbdev_passthru.c index 920090779..315857907 100644 --- a/lib/bdev/passthru/vbdev_passthru.c +++ b/lib/bdev/passthru/vbdev_passthru.c @@ -378,6 +378,13 @@ vbdev_passthru_insert_name(const char *bdev_name, const char *vbdev_name) { struct bdev_names *name; + TAILQ_FOREACH(name, &g_bdev_names, link) { + if (strcmp(vbdev_name, name->vbdev_name) == 0) { + SPDK_ERRLOG("passthru bdev %s already exists\n", vbdev_name); + return -EEXIST; + } + } + name = calloc(1, sizeof(struct bdev_names)); if (!name) { SPDK_ERRLOG("could not allocate bdev_names\n");