From df6b55fd8cb22b0172c2daf39561439f4a162e55 Mon Sep 17 00:00:00 2001 From: gila Date: Tue, 5 Feb 2019 11:46:48 +0100 Subject: [PATCH] bdev: make spdk_bdev_register_module_xxx function names predictable Currently, the SPDK_BDEV_REGISTER_MODULE() macro uses __LINE__ to generate functions like spdk_bdev_module_register_187(). Typically, this is not a problem as these functions are not called directly rather, they are only used as constructor functions to load the bdevs during system startup. There are languages however, (e.g rust) that require these functions to be referenced explicitly to prevent them from being removed during the linking phase. In order to reference them, having the names predictable (and potentially changed per commit) makes things easier. Change-Id: I15947ed9136912cfe2368db7e5bba833f1d94b15 Signed-off-by: gila Reviewed-on: https://review.gerrithub.io/c/443536 Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Jim Harris --- include/spdk/bdev_module.h | 24 ++++++------------------ lib/bdev/aio/bdev_aio.c | 2 +- lib/bdev/crypto/vbdev_crypto.c | 2 +- lib/bdev/error/vbdev_error.c | 2 +- lib/bdev/ftl/bdev_ftl.c | 2 +- lib/bdev/gpt/vbdev_gpt.c | 2 +- lib/bdev/iscsi/bdev_iscsi.c | 2 +- lib/bdev/lvol/vbdev_lvol.c | 2 +- lib/bdev/malloc/bdev_malloc.c | 2 +- lib/bdev/null/bdev_null.c | 2 +- lib/bdev/nvme/bdev_nvme.c | 2 +- lib/bdev/ocf/vbdev_ocf.c | 2 +- lib/bdev/passthru/vbdev_passthru.c | 2 +- lib/bdev/pmem/bdev_pmem.c | 2 +- lib/bdev/raid/bdev_raid.c | 2 +- lib/bdev/rbd/bdev_rbd.c | 2 +- lib/bdev/split/vbdev_split.c | 2 +- lib/bdev/virtio/bdev_virtio_blk.c | 2 +- lib/bdev/virtio/bdev_virtio_scsi.c | 2 +- test/unit/lib/bdev/bdev.c/bdev_ut.c | 4 ++-- test/unit/lib/bdev/mt/bdev.c/bdev_ut.c | 2 +- test/unit/lib/bdev/part.c/part_ut.c | 4 ++-- 22 files changed, 29 insertions(+), 41 deletions(-) diff --git a/include/spdk/bdev_module.h b/include/spdk/bdev_module.h index ae703c383..d38a66f37 100644 --- a/include/spdk/bdev_module.h +++ b/include/spdk/bdev_module.h @@ -1004,24 +1004,12 @@ struct spdk_bdev *spdk_bdev_part_get_base_bdev(struct spdk_bdev_part *part); uint64_t spdk_bdev_part_get_offset_blocks(struct spdk_bdev_part *part); /* - * Macro used to register module for later initialization. + * Macro used to register module for later initialization. */ -#define SPDK_BDEV_MODULE_REGISTER(_module) \ - __attribute__((constructor)) static void \ - SPDK_BDEV_MODULE_REGISTER_FN_NAME(__LINE__) (void) \ - { \ - spdk_bdev_module_list_add(_module); \ - } - -/* - * This is helper macro for automatic function generation. - * - */ -#define SPDK_BDEV_MODULE_REGISTER_FN_NAME(line) SPDK_BDEV_MODULE_REGISTER_FN_NAME_(line) - -/* - * Second helper macro for "stringize" trick to work. - */ -#define SPDK_BDEV_MODULE_REGISTER_FN_NAME_(line) spdk_bdev_module_register_ ## line +#define SPDK_BDEV_MODULE_REGISTER(name, module) \ +static void __attribute__((constructor)) spdk_bdev_module_register_##name(void) \ +{ \ + spdk_bdev_module_list_add(module); \ +} \ #endif /* SPDK_BDEV_MODULE_H */ diff --git a/lib/bdev/aio/bdev_aio.c b/lib/bdev/aio/bdev_aio.c index f63559a7b..8a33f60d3 100644 --- a/lib/bdev/aio/bdev_aio.c +++ b/lib/bdev/aio/bdev_aio.c @@ -98,7 +98,7 @@ static struct spdk_bdev_module aio_if = { .get_ctx_size = bdev_aio_get_ctx_size, }; -SPDK_BDEV_MODULE_REGISTER(&aio_if) +SPDK_BDEV_MODULE_REGISTER(aio, &aio_if) static int bdev_aio_open(struct file_disk *disk) diff --git a/lib/bdev/crypto/vbdev_crypto.c b/lib/bdev/crypto/vbdev_crypto.c index 2cd3de3ce..0ec9ee22b 100644 --- a/lib/bdev/crypto/vbdev_crypto.c +++ b/lib/bdev/crypto/vbdev_crypto.c @@ -1394,7 +1394,7 @@ static struct spdk_bdev_module crypto_if = { .config_json = vbdev_crypto_config_json }; -SPDK_BDEV_MODULE_REGISTER(&crypto_if) +SPDK_BDEV_MODULE_REGISTER(crypto, &crypto_if) static int vbdev_crypto_claim(struct spdk_bdev *bdev) diff --git a/lib/bdev/error/vbdev_error.c b/lib/bdev/error/vbdev_error.c index 4b645fbc8..213e71c08 100644 --- a/lib/bdev/error/vbdev_error.c +++ b/lib/bdev/error/vbdev_error.c @@ -93,7 +93,7 @@ static struct spdk_bdev_module error_if = { }; -SPDK_BDEV_MODULE_REGISTER(&error_if) +SPDK_BDEV_MODULE_REGISTER(error, &error_if) int spdk_vbdev_inject_error(char *name, uint32_t io_type, uint32_t error_type, uint32_t error_num) diff --git a/lib/bdev/ftl/bdev_ftl.c b/lib/bdev/ftl/bdev_ftl.c index 974622ffc..d9e96708e 100644 --- a/lib/bdev/ftl/bdev_ftl.c +++ b/lib/bdev/ftl/bdev_ftl.c @@ -123,7 +123,7 @@ static struct spdk_bdev_module g_ftl_if = { .get_ctx_size = bdev_ftl_get_ctx_size, }; -SPDK_BDEV_MODULE_REGISTER(&g_ftl_if) +SPDK_BDEV_MODULE_REGISTER(ftl, &g_ftl_if) static struct ftl_bdev_ctrlr * bdev_ftl_ctrlr_find(const struct spdk_nvme_transport_id *trid) diff --git a/lib/bdev/gpt/vbdev_gpt.c b/lib/bdev/gpt/vbdev_gpt.c index 5252fd1ee..3e8f83649 100644 --- a/lib/bdev/gpt/vbdev_gpt.c +++ b/lib/bdev/gpt/vbdev_gpt.c @@ -60,7 +60,7 @@ static struct spdk_bdev_module gpt_if = { .examine_disk = vbdev_gpt_examine, }; -SPDK_BDEV_MODULE_REGISTER(&gpt_if) +SPDK_BDEV_MODULE_REGISTER(gpt, &gpt_if) /* Base block device gpt context */ struct gpt_base { diff --git a/lib/bdev/iscsi/bdev_iscsi.c b/lib/bdev/iscsi/bdev_iscsi.c index b2329dbb6..42ae6829a 100644 --- a/lib/bdev/iscsi/bdev_iscsi.c +++ b/lib/bdev/iscsi/bdev_iscsi.c @@ -167,7 +167,7 @@ static struct spdk_bdev_module g_iscsi_bdev_module = { .async_init = true, }; -SPDK_BDEV_MODULE_REGISTER(&g_iscsi_bdev_module); +SPDK_BDEV_MODULE_REGISTER(iscsi, &g_iscsi_bdev_module); static void _bdev_iscsi_io_complete(void *_iscsi_io) diff --git a/lib/bdev/lvol/vbdev_lvol.c b/lib/bdev/lvol/vbdev_lvol.c index 4de92c497..b8202948d 100644 --- a/lib/bdev/lvol/vbdev_lvol.c +++ b/lib/bdev/lvol/vbdev_lvol.c @@ -55,7 +55,7 @@ static struct spdk_bdev_module g_lvol_if = { }; -SPDK_BDEV_MODULE_REGISTER(&g_lvol_if) +SPDK_BDEV_MODULE_REGISTER(lvol, &g_lvol_if) struct lvol_store_bdev * vbdev_get_lvs_bdev_by_lvs(struct spdk_lvol_store *lvs_orig) diff --git a/lib/bdev/malloc/bdev_malloc.c b/lib/bdev/malloc/bdev_malloc.c index eb4b2b9cf..9edf997d5 100644 --- a/lib/bdev/malloc/bdev_malloc.c +++ b/lib/bdev/malloc/bdev_malloc.c @@ -109,7 +109,7 @@ static struct spdk_bdev_module malloc_if = { }; -SPDK_BDEV_MODULE_REGISTER(&malloc_if) +SPDK_BDEV_MODULE_REGISTER(malloc, &malloc_if) static void malloc_disk_free(struct malloc_disk *malloc_disk) diff --git a/lib/bdev/null/bdev_null.c b/lib/bdev/null/bdev_null.c index a7a84f987..7fdc968e4 100644 --- a/lib/bdev/null/bdev_null.c +++ b/lib/bdev/null/bdev_null.c @@ -70,7 +70,7 @@ static struct spdk_bdev_module null_if = { .async_fini = true, }; -SPDK_BDEV_MODULE_REGISTER(&null_if) +SPDK_BDEV_MODULE_REGISTER(null, &null_if) static int bdev_null_destruct(void *ctx) diff --git a/lib/bdev/nvme/bdev_nvme.c b/lib/bdev/nvme/bdev_nvme.c index 64b3f468c..b60fea78a 100644 --- a/lib/bdev/nvme/bdev_nvme.c +++ b/lib/bdev/nvme/bdev_nvme.c @@ -184,7 +184,7 @@ static struct spdk_bdev_module nvme_if = { .get_ctx_size = bdev_nvme_get_ctx_size, }; -SPDK_BDEV_MODULE_REGISTER(&nvme_if) +SPDK_BDEV_MODULE_REGISTER(nvme, &nvme_if) static int bdev_nvme_readv(struct nvme_bdev *nbdev, struct spdk_io_channel *ch, diff --git a/lib/bdev/ocf/vbdev_ocf.c b/lib/bdev/ocf/vbdev_ocf.c index 899e44542..d27d1329b 100644 --- a/lib/bdev/ocf/vbdev_ocf.c +++ b/lib/bdev/ocf/vbdev_ocf.c @@ -966,6 +966,6 @@ static struct spdk_bdev_module ocf_if = { .get_ctx_size = vbdev_ocf_get_ctx_size, .examine_config = vbdev_ocf_examine, }; -SPDK_BDEV_MODULE_REGISTER(&ocf_if); +SPDK_BDEV_MODULE_REGISTER(ocf, &ocf_if); SPDK_LOG_REGISTER_COMPONENT("vbdev_ocf", SPDK_TRACE_VBDEV_OCF) diff --git a/lib/bdev/passthru/vbdev_passthru.c b/lib/bdev/passthru/vbdev_passthru.c index 540d9efd2..9508dcff0 100644 --- a/lib/bdev/passthru/vbdev_passthru.c +++ b/lib/bdev/passthru/vbdev_passthru.c @@ -68,7 +68,7 @@ static struct spdk_bdev_module passthru_if = { .config_json = vbdev_passthru_config_json }; -SPDK_BDEV_MODULE_REGISTER(&passthru_if) +SPDK_BDEV_MODULE_REGISTER(passthru, &passthru_if) /* List of pt_bdev names and their base bdevs via configuration file. * Used so we can parse the conf once at init and use this list in examine(). diff --git a/lib/bdev/pmem/bdev_pmem.c b/lib/bdev/pmem/bdev_pmem.c index 5cab9f728..caf024351 100644 --- a/lib/bdev/pmem/bdev_pmem.c +++ b/lib/bdev/pmem/bdev_pmem.c @@ -63,7 +63,7 @@ static struct spdk_bdev_module pmem_if = { }; -SPDK_BDEV_MODULE_REGISTER(&pmem_if) +SPDK_BDEV_MODULE_REGISTER(pmem, &pmem_if) typedef int(*spdk_bdev_pmem_io_request)(PMEMblkpool *pbp, void *buf, long long blockno); diff --git a/lib/bdev/raid/bdev_raid.c b/lib/bdev/raid/bdev_raid.c index 63cca0d1e..297826cad 100644 --- a/lib/bdev/raid/bdev_raid.c +++ b/lib/bdev/raid/bdev_raid.c @@ -1190,7 +1190,7 @@ static struct spdk_bdev_module g_raid_if = { .async_init = false, .async_fini = false, }; -SPDK_BDEV_MODULE_REGISTER(&g_raid_if) +SPDK_BDEV_MODULE_REGISTER(raid, &g_raid_if) /* * brief: diff --git a/lib/bdev/rbd/bdev_rbd.c b/lib/bdev/rbd/bdev_rbd.c index 0227798db..5ad6d8238 100644 --- a/lib/bdev/rbd/bdev_rbd.c +++ b/lib/bdev/rbd/bdev_rbd.c @@ -278,7 +278,7 @@ static struct spdk_bdev_module rbd_if = { .get_ctx_size = bdev_rbd_get_ctx_size, }; -SPDK_BDEV_MODULE_REGISTER(&rbd_if) +SPDK_BDEV_MODULE_REGISTER(rbd, &rbd_if) static int64_t bdev_rbd_rw(struct bdev_rbd *disk, struct spdk_io_channel *ch, diff --git a/lib/bdev/split/vbdev_split.c b/lib/bdev/split/vbdev_split.c index 6fd94b37f..2cf5f5882 100644 --- a/lib/bdev/split/vbdev_split.c +++ b/lib/bdev/split/vbdev_split.c @@ -95,7 +95,7 @@ static struct spdk_bdev_module split_if = { .config_json = vbdev_split_config_json, }; -SPDK_BDEV_MODULE_REGISTER(&split_if) +SPDK_BDEV_MODULE_REGISTER(split, &split_if) static void vbdev_split_base_free(void *ctx) diff --git a/lib/bdev/virtio/bdev_virtio_blk.c b/lib/bdev/virtio/bdev_virtio_blk.c index 5f6746a9f..76eddec1b 100644 --- a/lib/bdev/virtio/bdev_virtio_blk.c +++ b/lib/bdev/virtio/bdev_virtio_blk.c @@ -96,7 +96,7 @@ static struct spdk_bdev_module virtio_blk_if = { .get_ctx_size = bdev_virtio_blk_get_ctx_size, }; -SPDK_BDEV_MODULE_REGISTER(&virtio_blk_if) +SPDK_BDEV_MODULE_REGISTER(virtio_blk, &virtio_blk_if) static int bdev_virtio_blk_ch_create_cb(void *io_device, void *ctx_buf); static void bdev_virtio_blk_ch_destroy_cb(void *io_device, void *ctx_buf); diff --git a/lib/bdev/virtio/bdev_virtio_scsi.c b/lib/bdev/virtio/bdev_virtio_scsi.c index a667ca4e2..cfaa1b723 100644 --- a/lib/bdev/virtio/bdev_virtio_scsi.c +++ b/lib/bdev/virtio/bdev_virtio_scsi.c @@ -456,7 +456,7 @@ static struct spdk_bdev_module virtio_scsi_if = { .async_fini = true, }; -SPDK_BDEV_MODULE_REGISTER(&virtio_scsi_if) +SPDK_BDEV_MODULE_REGISTER(virtio_scsi, &virtio_scsi_if) static struct virtio_scsi_io_ctx * bdev_virtio_init_io_vreq(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io) diff --git a/test/unit/lib/bdev/bdev.c/bdev_ut.c b/test/unit/lib/bdev/bdev.c/bdev_ut.c index eb9cfd860..399da1bf4 100644 --- a/test/unit/lib/bdev/bdev.c/bdev_ut.c +++ b/test/unit/lib/bdev/bdev.c/bdev_ut.c @@ -287,8 +287,8 @@ struct spdk_bdev_module vbdev_ut_if = { .examine_config = vbdev_ut_examine, }; -SPDK_BDEV_MODULE_REGISTER(&bdev_ut_if) -SPDK_BDEV_MODULE_REGISTER(&vbdev_ut_if) +SPDK_BDEV_MODULE_REGISTER(bdev_ut, &bdev_ut_if) +SPDK_BDEV_MODULE_REGISTER(vbdev_ut, &vbdev_ut_if) static void vbdev_ut_examine(struct spdk_bdev *bdev) diff --git a/test/unit/lib/bdev/mt/bdev.c/bdev_ut.c b/test/unit/lib/bdev/mt/bdev.c/bdev_ut.c index ebba23002..34344e489 100644 --- a/test/unit/lib/bdev/mt/bdev.c/bdev_ut.c +++ b/test/unit/lib/bdev/mt/bdev.c/bdev_ut.c @@ -216,7 +216,7 @@ struct spdk_bdev_module bdev_ut_if = { .fini_start = fini_start, }; -SPDK_BDEV_MODULE_REGISTER(&bdev_ut_if) +SPDK_BDEV_MODULE_REGISTER(bdev_ut, &bdev_ut_if) static void register_bdev(struct ut_bdev *ut_bdev, char *name, void *io_target) diff --git a/test/unit/lib/bdev/part.c/part_ut.c b/test/unit/lib/bdev/part.c/part_ut.c index fb890f8a9..8e37133c7 100644 --- a/test/unit/lib/bdev/part.c/part_ut.c +++ b/test/unit/lib/bdev/part.c/part_ut.c @@ -86,8 +86,8 @@ struct spdk_bdev_module vbdev_ut_if = { .examine_config = vbdev_ut_examine, }; -SPDK_BDEV_MODULE_REGISTER(&bdev_ut_if) -SPDK_BDEV_MODULE_REGISTER(&vbdev_ut_if) +SPDK_BDEV_MODULE_REGISTER(bdev_ut, &bdev_ut_if) +SPDK_BDEV_MODULE_REGISTER(vbdev_ut, &vbdev_ut_if) static void vbdev_ut_examine(struct spdk_bdev *bdev)