bdev/nvme: Replace nvme_bdev_first/next_ctrlr() by nvme_ctrlr_for_each()

Replace two helper functions, nvme_bdev_first_ctrlr() and
nvme_bdev_next_ctrlr() by an new helper function nvme_ctrlr_for_each().

This will make us easier to guard data structure correctly in the
following patches.

Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Ibd81286e454fd6127fd150a7d48d8381bd1b89d3
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8721
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
This commit is contained in:
Shuhei Matsumoto 2021-07-07 22:04:35 +09:00 committed by Tomasz Zawadzki
parent 4af68eade6
commit ca4dfff9e1
3 changed files with 14 additions and 16 deletions

View File

@ -412,9 +412,9 @@ SPDK_RPC_REGISTER("bdev_nvme_attach_controller", rpc_bdev_nvme_attach_controller
SPDK_RPC_REGISTER_ALIAS_DEPRECATED(bdev_nvme_attach_controller, construct_nvme_bdev)
static void
rpc_dump_nvme_controller_info(struct spdk_json_write_ctx *w,
struct nvme_ctrlr *nvme_ctrlr)
rpc_dump_nvme_controller_info(struct nvme_ctrlr *nvme_ctrlr, void *ctx)
{
struct spdk_json_write_ctx *w = ctx;
struct spdk_nvme_transport_id *trid;
trid = nvme_ctrlr->connected_trid;
@ -483,11 +483,9 @@ rpc_bdev_nvme_get_controllers(struct spdk_jsonrpc_request *request,
spdk_json_write_array_begin(w);
if (ctrlr != NULL) {
rpc_dump_nvme_controller_info(w, ctrlr);
rpc_dump_nvme_controller_info(ctrlr, w);
} else {
for (ctrlr = nvme_bdev_first_ctrlr(); ctrlr; ctrlr = nvme_bdev_next_ctrlr(ctrlr)) {
rpc_dump_nvme_controller_info(w, ctrlr);
}
nvme_ctrlr_for_each(rpc_dump_nvme_controller_info, w);
}
spdk_json_write_array_end(w);

View File

@ -71,16 +71,14 @@ nvme_ctrlr_get_by_name(const char *name)
return NULL;
}
struct nvme_ctrlr *
nvme_bdev_first_ctrlr(void)
void
nvme_ctrlr_for_each(nvme_ctrlr_for_each_fn fn, void *ctx)
{
return TAILQ_FIRST(&g_nvme_ctrlrs);
}
struct nvme_ctrlr *nvme_ctrlr;
struct nvme_ctrlr *
nvme_bdev_next_ctrlr(struct nvme_ctrlr *prev)
{
return TAILQ_NEXT(prev, tailq);
TAILQ_FOREACH(nvme_ctrlr, &g_nvme_ctrlrs, tailq) {
fn(nvme_ctrlr, ctx);
}
}
void

View File

@ -168,8 +168,10 @@ void nvme_ctrlr_depopulate_namespace_done(struct nvme_ns *nvme_ns);
struct nvme_ctrlr *nvme_ctrlr_get(const struct spdk_nvme_transport_id *trid);
struct nvme_ctrlr *nvme_ctrlr_get_by_name(const char *name);
struct nvme_ctrlr *nvme_bdev_first_ctrlr(void);
struct nvme_ctrlr *nvme_bdev_next_ctrlr(struct nvme_ctrlr *prev);
typedef void (*nvme_ctrlr_for_each_fn)(struct nvme_ctrlr *nvme_ctrlr, void *ctx);
void nvme_ctrlr_for_each(nvme_ctrlr_for_each_fn fn, void *ctx);
void nvme_bdev_dump_trid_json(const struct spdk_nvme_transport_id *trid,
struct spdk_json_write_ctx *w);