Use SPDK_CONTAINEROF in a few more places

A few open-coded sequences equivalent to SPDK_CONTAINEROF() were
scattered around; replace them with the macro from spdk/util.h.

Change-Id: I95c6e6838902f411420573399ced7c58c2e4ef84
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/418126
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Daniel Verkamp 2018-07-05 15:04:43 -07:00 committed by Jim Harris
parent 7d24e2a4cd
commit 4a9dce9a48
4 changed files with 8 additions and 7 deletions

View File

@ -47,6 +47,7 @@
#include "spdk/queue.h" #include "spdk/queue.h"
#include "spdk/scsi_spec.h" #include "spdk/scsi_spec.h"
#include "spdk/thread.h" #include "spdk/thread.h"
#include "spdk/util.h"
#include "spdk/uuid.h" #include "spdk/uuid.h"
/** Block device module */ /** Block device module */
@ -690,8 +691,7 @@ struct spdk_bdev_module *spdk_bdev_module_list_find(const char *name);
static inline struct spdk_bdev_io * static inline struct spdk_bdev_io *
spdk_bdev_io_from_ctx(void *ctx) spdk_bdev_io_from_ctx(void *ctx)
{ {
return (struct spdk_bdev_io *) return SPDK_CONTAINEROF(ctx, struct spdk_bdev_io, driver_ctx);
((uintptr_t)ctx - offsetof(struct spdk_bdev_io, driver_ctx));
} }
struct spdk_bdev_part_base; struct spdk_bdev_part_base;

View File

@ -37,6 +37,7 @@
#include "iscsi/iscsi.h" #include "iscsi/iscsi.h"
#include "spdk/scsi.h" #include "spdk/scsi.h"
#include "spdk/util.h"
struct spdk_iscsi_task { struct spdk_iscsi_task {
struct spdk_scsi_task scsi; struct spdk_scsi_task scsi;
@ -169,7 +170,7 @@ struct spdk_iscsi_task *spdk_iscsi_task_get(struct spdk_iscsi_conn *conn,
static inline struct spdk_iscsi_task * static inline struct spdk_iscsi_task *
spdk_iscsi_task_from_scsi_task(struct spdk_scsi_task *task) spdk_iscsi_task_from_scsi_task(struct spdk_scsi_task *task)
{ {
return (struct spdk_iscsi_task *)((uintptr_t)task - offsetof(struct spdk_iscsi_task, scsi)); return SPDK_CONTAINEROF(task, struct spdk_iscsi_task, scsi);
} }
static inline struct spdk_iscsi_task * static inline struct spdk_iscsi_task *

View File

@ -316,14 +316,14 @@ static inline struct nvme_pcie_ctrlr *
nvme_pcie_ctrlr(struct spdk_nvme_ctrlr *ctrlr) nvme_pcie_ctrlr(struct spdk_nvme_ctrlr *ctrlr)
{ {
assert(ctrlr->trid.trtype == SPDK_NVME_TRANSPORT_PCIE); assert(ctrlr->trid.trtype == SPDK_NVME_TRANSPORT_PCIE);
return (struct nvme_pcie_ctrlr *)((uintptr_t)ctrlr - offsetof(struct nvme_pcie_ctrlr, ctrlr)); return SPDK_CONTAINEROF(ctrlr, struct nvme_pcie_ctrlr, ctrlr);
} }
static inline struct nvme_pcie_qpair * static inline struct nvme_pcie_qpair *
nvme_pcie_qpair(struct spdk_nvme_qpair *qpair) nvme_pcie_qpair(struct spdk_nvme_qpair *qpair)
{ {
assert(qpair->trtype == SPDK_NVME_TRANSPORT_PCIE); assert(qpair->trtype == SPDK_NVME_TRANSPORT_PCIE);
return (struct nvme_pcie_qpair *)((uintptr_t)qpair - offsetof(struct nvme_pcie_qpair, qpair)); return SPDK_CONTAINEROF(qpair, struct nvme_pcie_qpair, qpair);
} }
static volatile void * static volatile void *

View File

@ -154,14 +154,14 @@ static inline struct nvme_rdma_qpair *
nvme_rdma_qpair(struct spdk_nvme_qpair *qpair) nvme_rdma_qpair(struct spdk_nvme_qpair *qpair)
{ {
assert(qpair->trtype == SPDK_NVME_TRANSPORT_RDMA); assert(qpair->trtype == SPDK_NVME_TRANSPORT_RDMA);
return (struct nvme_rdma_qpair *)((uintptr_t)qpair - offsetof(struct nvme_rdma_qpair, qpair)); return SPDK_CONTAINEROF(qpair, struct nvme_rdma_qpair, qpair);
} }
static inline struct nvme_rdma_ctrlr * static inline struct nvme_rdma_ctrlr *
nvme_rdma_ctrlr(struct spdk_nvme_ctrlr *ctrlr) nvme_rdma_ctrlr(struct spdk_nvme_ctrlr *ctrlr)
{ {
assert(ctrlr->trid.trtype == SPDK_NVME_TRANSPORT_RDMA); assert(ctrlr->trid.trtype == SPDK_NVME_TRANSPORT_RDMA);
return (struct nvme_rdma_ctrlr *)((uintptr_t)ctrlr - offsetof(struct nvme_rdma_ctrlr, ctrlr)); return SPDK_CONTAINEROF(ctrlr, struct nvme_rdma_ctrlr, ctrlr);
} }
static struct spdk_nvme_rdma_req * static struct spdk_nvme_rdma_req *