Skip to content

Commit

Permalink
target: add a parse_cdb method to the backend drivers
Browse files Browse the repository at this point in the history
Instead of trying to handle all SCSI command sets in one function
(transport_generic_cmd_sequencer) call out to the backend driver to perform
this functionality.  For pSCSI a copy of the existing code is used, but for
all virtual backends we can use a new parse_sbc_cdb helper is used to
provide a simple SBC emulation.

For now this setups means a fair amount of duplication between pSCSI and the
SBC library, but patches later in this series will sort out that problem.

(nab: Fix up build failure in target_core_pscsi.c)

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
  • Loading branch information
Christoph Hellwig authored and Nicholas Bellinger committed Jul 17, 2012
1 parent 88455ec commit d6e0175
Show file tree
Hide file tree
Showing 10 changed files with 936 additions and 733 deletions.
1 change: 1 addition & 0 deletions drivers/target/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ target_core_mod-y := target_core_configfs.o \
target_core_tpg.o \
target_core_transport.o \
target_core_cdb.o \
target_core_sbc.o \
target_core_spc.o \
target_core_ua.o \
target_core_rd.o \
Expand Down
1 change: 1 addition & 0 deletions drivers/target/target_core_file.c
Original file line number Diff line number Diff line change
Expand Up @@ -561,6 +561,7 @@ static struct se_subsystem_api fileio_template = {
.allocate_virtdevice = fd_allocate_virtdevice,
.create_virtdevice = fd_create_virtdevice,
.free_device = fd_free_device,
.parse_cdb = sbc_parse_cdb,
.execute_cmd = fd_execute_cmd,
.do_sync_cache = fd_emulate_sync_cache,
.check_configfs_dev_params = fd_check_configfs_dev_params,
Expand Down
1 change: 1 addition & 0 deletions drivers/target/target_core_iblock.c
Original file line number Diff line number Diff line change
Expand Up @@ -653,6 +653,7 @@ static struct se_subsystem_api iblock_template = {
.allocate_virtdevice = iblock_allocate_virtdevice,
.create_virtdevice = iblock_create_virtdevice,
.free_device = iblock_free_device,
.parse_cdb = sbc_parse_cdb,
.execute_cmd = iblock_execute_cmd,
.do_discard = iblock_do_discard,
.do_sync_cache = iblock_emulate_sync_cache,
Expand Down
3 changes: 0 additions & 3 deletions drivers/target/target_core_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,6 @@ int core_tpg_post_addlun(struct se_portal_group *, struct se_lun *,
struct se_lun *core_tpg_pre_dellun(struct se_portal_group *, u32 unpacked_lun);
int core_tpg_post_dellun(struct se_portal_group *, struct se_lun *);

/* target_core_spc.c */
int spc_parse_cdb(struct se_cmd *cmd, unsigned int *size, bool passthrough);

/* target_core_transport.c */
extern struct kmem_cache *se_tmr_req_cache;

Expand Down
Loading

0 comments on commit d6e0175

Please sign in to comment.