test/unit/lib/nvmf: Add unit test stubs

With some build environments (e.g. clang, see #1613) linking fails with
unresolved references. This is caused by the inclusion of 'unused code'
which is usually discarded by the linker. The 'unused code' contains
references to functions that have not been 'stubbed' out. The failure
can be seen by removing 'LDFLAGS += -Wl,--gc-sections' in
spdk.unittest.mk

Resolved by adding stubs for missing references. These are never called
so return an arbtrary default value.

Part of a set of independent changes which
Fixes #1613

Signed-off-by: Nick Connolly <nick.connolly@mayadata.io>
Change-Id: Iab76fbdebb13a9fda652418a0d75148d24c62378
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5082
Community-CI: Broadcom CI
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
This commit is contained in:
Nick Connolly 2020-11-11 14:14:34 +00:00 committed by Tomasz Zawadzki
parent e49d3c6612
commit 3b461269d2
6 changed files with 111 additions and 0 deletions

View File

@ -181,6 +181,26 @@ DEFINE_STUB_V(nvmf_transport_qpair_abort_request,
DEFINE_STUB_V(spdk_nvme_print_command, (uint16_t qid, struct spdk_nvme_cmd *cmd));
DEFINE_STUB_V(spdk_nvme_print_completion, (uint16_t qid, struct spdk_nvme_cpl *cpl));
DEFINE_STUB_V(nvmf_subsystem_remove_ctrlr, (struct spdk_nvmf_subsystem *subsystem,
struct spdk_nvmf_ctrlr *ctrlr));
DEFINE_STUB(spdk_nvmf_bdev_ctrlr_abort_cmd,
int,
(struct spdk_bdev *bdev, struct spdk_bdev_desc *desc, struct spdk_io_channel *ch,
struct spdk_nvmf_request *req, struct spdk_nvmf_request *req_to_abort),
0);
DEFINE_STUB(nvmf_transport_req_free,
int,
(struct spdk_nvmf_request *req),
0);
DEFINE_STUB(spdk_nvmf_bdev_ctrlr_nvme_passthru_admin,
int,
(struct spdk_bdev *bdev, struct spdk_bdev_desc *desc, struct spdk_io_channel *ch,
struct spdk_nvmf_request *req, spdk_nvmf_nvme_passthru_cmd_cb cb_fn),
0);
int
spdk_nvmf_qpair_disconnect(struct spdk_nvmf_qpair *qpair, nvmf_qpair_disconnect_cb cb_fn, void *ctx)
{

View File

@ -46,6 +46,27 @@ DEFINE_STUB(spdk_nvmf_request_complete, int, (struct spdk_nvmf_request *req), -1
DEFINE_STUB(spdk_bdev_get_name, const char *, (const struct spdk_bdev *bdev), "test");
DEFINE_STUB(spdk_bdev_get_acwu, uint16_t, (const struct spdk_bdev *bdev), 0);
DEFINE_STUB(spdk_bdev_get_data_block_size, uint32_t,
(const struct spdk_bdev *bdev), 512);
DEFINE_STUB(nvmf_ctrlr_process_admin_cmd, int, (struct spdk_nvmf_request *req), 0);
DEFINE_STUB(spdk_bdev_comparev_blocks, int, (struct spdk_bdev_desc *desc,
struct spdk_io_channel *ch, struct iovec *iov, int iovcnt,
uint64_t offset_blocks, uint64_t num_blocks,
spdk_bdev_io_completion_cb cb, void *cb_arg), 0);
DEFINE_STUB(spdk_bdev_nvme_admin_passthru, int,
(struct spdk_bdev_desc *desc, struct spdk_io_channel *ch,
const struct spdk_nvme_cmd *cmd, void *buf, size_t nbytes,
spdk_bdev_io_completion_cb cb, void *cb_arg), 0);
DEFINE_STUB(spdk_bdev_abort, int,
(struct spdk_bdev_desc *desc, struct spdk_io_channel *ch,
void *bio_cb_arg, spdk_bdev_io_completion_cb cb, void *cb_arg), 0);
struct spdk_bdev {
uint32_t blocklen;
uint64_t num_blocks;

View File

@ -59,6 +59,40 @@ DEFINE_STUB(nvmf_ctrlr_async_event_discovery_log_change_notice,
int,
(struct spdk_nvmf_ctrlr *ctrlr), 0);
DEFINE_STUB(spdk_nvmf_qpair_disconnect, int,
(struct spdk_nvmf_qpair *qpair,
nvmf_qpair_disconnect_cb cb_fn, void *ctx), 0);
DEFINE_STUB(spdk_bdev_open_ext, int,
(const char *bdev_name, bool write, spdk_bdev_event_cb_t event_cb,
void *event_ctx, struct spdk_bdev_desc **desc), 0);
DEFINE_STUB(spdk_bdev_desc_get_bdev, struct spdk_bdev *,
(struct spdk_bdev_desc *desc), NULL);
DEFINE_STUB(spdk_bdev_get_md_size, uint32_t,
(const struct spdk_bdev *bdev), 0);
DEFINE_STUB(spdk_bdev_is_md_interleaved, bool,
(const struct spdk_bdev *bdev), false);
DEFINE_STUB(spdk_bdev_module_claim_bdev, int,
(struct spdk_bdev *bdev, struct spdk_bdev_desc *desc,
struct spdk_bdev_module *module), 0);
DEFINE_STUB_V(nvmf_ctrlr_reservation_notice_log,
(struct spdk_nvmf_ctrlr *ctrlr, struct spdk_nvmf_ns *ns,
enum spdk_nvme_reservation_notification_log_page_type type));
DEFINE_STUB(spdk_nvmf_request_complete, int,
(struct spdk_nvmf_request *req), -1);
DEFINE_STUB(nvmf_ctrlr_async_event_ana_change_notice, int,
(struct spdk_nvmf_ctrlr *ctrlr), 0);
DEFINE_STUB(spdk_nvme_transport_id_trtype_str, const char *,
(enum spdk_nvme_transport_type trtype), NULL);
const char *
spdk_bdev_get_name(const struct spdk_bdev *bdev)
{

View File

@ -63,6 +63,8 @@ DEFINE_STUB(spdk_mem_map_alloc, struct spdk_mem_map *, (uint64_t default_transla
const struct spdk_mem_map_ops *ops, void *cb_ctx), NULL);
DEFINE_STUB(spdk_nvmf_qpair_disconnect, int, (struct spdk_nvmf_qpair *qpair,
nvmf_qpair_disconnect_cb cb_fn, void *ctx), 0);
DEFINE_STUB(spdk_nvmf_qpair_get_listen_trid, int,
(struct spdk_nvmf_qpair *qpair, struct spdk_nvme_transport_id *trid), 0);
DEFINE_STUB_V(spdk_mem_map_free, (struct spdk_mem_map **pmap));
struct spdk_trace_histories *g_trace_histories;

View File

@ -67,6 +67,28 @@ DEFINE_STUB(spdk_nvmf_transport_stop_listen,
DEFINE_STUB_V(nvmf_update_discovery_log,
(struct spdk_nvmf_tgt *tgt, const char *hostnqn));
DEFINE_STUB(spdk_nvmf_qpair_disconnect,
int,
(struct spdk_nvmf_qpair *qpair,
nvmf_qpair_disconnect_cb cb_fn, void *ctx), 0);
DEFINE_STUB(nvmf_transport_find_listener,
struct spdk_nvmf_listener *,
(struct spdk_nvmf_transport *transport,
const struct spdk_nvme_transport_id *trid), NULL);
DEFINE_STUB(spdk_nvmf_request_complete,
int,
(struct spdk_nvmf_request *req), 0);
DEFINE_STUB(nvmf_ctrlr_async_event_ana_change_notice,
int,
(struct spdk_nvmf_ctrlr *ctrlr), 0);
DEFINE_STUB(spdk_nvme_transport_id_trtype_str,
const char *,
(enum spdk_nvme_transport_type trtype), NULL);
int
spdk_nvmf_transport_listen(struct spdk_nvmf_transport *transport,
const struct spdk_nvme_transport_id *trid)

View File

@ -218,6 +218,18 @@ DEFINE_STUB_V(nvmf_transport_qpair_abort_request,
DEFINE_STUB_V(spdk_nvme_print_command, (uint16_t qid, struct spdk_nvme_cmd *cmd));
DEFINE_STUB_V(spdk_nvme_print_completion, (uint16_t qid, struct spdk_nvme_cpl *cpl));
DEFINE_STUB(nvmf_transport_req_free,
int,
(struct spdk_nvmf_request *req),
0);
DEFINE_STUB(spdk_nvmf_bdev_ctrlr_nvme_passthru_admin,
int,
(struct spdk_bdev *bdev, struct spdk_bdev_desc *desc,
struct spdk_io_channel *ch, struct spdk_nvmf_request *req,
spdk_nvmf_nvme_passthru_cmd_cb cb_fn),
0)
struct spdk_trace_histories *g_trace_histories;
struct spdk_bdev {