From: Nicholas Bellinger <[email protected]> This patch allows backend driver sbc_ops function pointers to be accessed externally, so external target consumers can perform target_iostate + target_iomem I/O submission outside of /sys/kernel/config/target/$FABRIC/ users.
Specifically, IBLOCK, FILEIO, and RAMDISK have been enabled, while PSCSI and TCMU have left sbc_ops NULL as they perform SCSI CDB pass-through. Cc: Jens Axboe <[email protected]> Cc: Christoph Hellwig <[email protected]> Cc: Martin Petersen <[email protected]> Cc: Sagi Grimberg <[email protected]> Cc: Hannes Reinecke <[email protected]> Cc: Mike Christie <[email protected]> Signed-off-by: Nicholas Bellinger <[email protected]> --- drivers/target/target_core_file.c | 1 + drivers/target/target_core_iblock.c | 1 + drivers/target/target_core_pscsi.c | 1 + drivers/target/target_core_rd.c | 1 + drivers/target/target_core_user.c | 1 + include/target/target_core_backend.h | 4 ++++ 6 files changed, 9 insertions(+) diff --git a/drivers/target/target_core_file.c b/drivers/target/target_core_file.c index b4956a5e..6f0064e 100644 --- a/drivers/target/target_core_file.c +++ b/drivers/target/target_core_file.c @@ -815,6 +815,7 @@ static const struct target_backend_ops fileio_ops = { .inquiry_prod = "FILEIO", .inquiry_rev = FD_VERSION, .owner = THIS_MODULE, + .sbc_ops = &fd_sbc_ops, .attach_hba = fd_attach_hba, .detach_hba = fd_detach_hba, .alloc_device = fd_alloc_device, diff --git a/drivers/target/target_core_iblock.c b/drivers/target/target_core_iblock.c index 00781c8..29d3167 100644 --- a/drivers/target/target_core_iblock.c +++ b/drivers/target/target_core_iblock.c @@ -833,6 +833,7 @@ static const struct target_backend_ops iblock_ops = { .inquiry_prod = "IBLOCK", .inquiry_rev = IBLOCK_VERSION, .owner = THIS_MODULE, + .sbc_ops = &iblock_sbc_ops, .attach_hba = iblock_attach_hba, .detach_hba = iblock_detach_hba, .alloc_device = iblock_alloc_device, diff --git a/drivers/target/target_core_pscsi.c b/drivers/target/target_core_pscsi.c index c52f943..4284dbf 100644 --- a/drivers/target/target_core_pscsi.c +++ b/drivers/target/target_core_pscsi.c @@ -1127,6 +1127,7 @@ static void pscsi_req_done(struct request *req, int uptodate) static const struct target_backend_ops pscsi_ops = { .name = "pscsi", .owner = THIS_MODULE, + .sbc_ops = NULL, .transport_flags = TRANSPORT_FLAG_PASSTHROUGH, .attach_hba = pscsi_attach_hba, .detach_hba = pscsi_detach_hba, diff --git a/drivers/target/target_core_rd.c b/drivers/target/target_core_rd.c index a38a37f..e9df036 100644 --- a/drivers/target/target_core_rd.c +++ b/drivers/target/target_core_rd.c @@ -662,6 +662,7 @@ static const struct target_backend_ops rd_mcp_ops = { .name = "rd_mcp", .inquiry_prod = "RAMDISK-MCP", .inquiry_rev = RD_MCP_VERSION, + .sbc_ops = &rd_sbc_ops, .attach_hba = rd_attach_hba, .detach_hba = rd_detach_hba, .alloc_device = rd_alloc_device, diff --git a/drivers/target/target_core_user.c b/drivers/target/target_core_user.c index 3467560..ec6142b 100644 --- a/drivers/target/target_core_user.c +++ b/drivers/target/target_core_user.c @@ -1151,6 +1151,7 @@ static const struct target_backend_ops tcmu_ops = { .name = "user", .owner = THIS_MODULE, .transport_flags = TRANSPORT_FLAG_PASSTHROUGH, + .sbc_ops = NULL, .attach_hba = tcmu_attach_hba, .detach_hba = tcmu_detach_hba, .alloc_device = tcmu_alloc_device, diff --git a/include/target/target_core_backend.h b/include/target/target_core_backend.h index 9efe718..15f731f 100644 --- a/include/target/target_core_backend.h +++ b/include/target/target_core_backend.h @@ -8,6 +8,10 @@ struct target_backend_ops { char inquiry_prod[16]; char inquiry_rev[4]; struct module *owner; + /* + * Used by NVMe-target for se_cmd dispatch without SCSI CDB parsing + */ + struct sbc_ops *sbc_ops; u8 transport_flags; -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html

