[PATCH 01/14] target: remove target_submit_cmd_map_sgls

Mike Christie
2021-02-11T12:32:05Z

Thsee patches have some conflicts with some in_interrupt changes
so the following patches were made over Martin's 5.12 branches.

The patches handle Christoph's review comment to remove
target_submit_cmd_map_sgls in this thread:

https://www.spinics.net/lists/linux-scsi/msg154443.html

which is for the "target: fix cmd plugging and completion"
patchset:
https://patchwork.kernel.org/project/linux-scsi/list/?series=431163

The patches actually do a little more than just kill the
function and the set was getting longer, so I'm sending
it separately now. These patches do:

1. Breaks up target_submit_cmd_map_sgls into 3 helpers:
-------------------------------------------------------

- target_init_cmd: Do the basic general setup and get a refcount to
the session to make sure the caller can execute the cmd.

- target_submit_prep: Do the mapping, cdb processing and get a ref
to the lun.

- target_submit: Pass the cmd to LIO core for execution.

The above functions must be used by drivers that either:
- rely on lio for session shutdown synchronization by calling
target_stop_session.
- need to map sgls

2. Make target_submit_cmd easier to use.
----------------------------------------

It seems a lot of drivers were not handling target_submit_cmd*
errors correctly, or were handling it but it would never return a
failure for them. The only way target_submit_cmd* would fail is if
the driver also used target_stop_session, but a lot of drivers
did their own session sync up, so I simplified the API.
target_submit_cmd never returns a failure so callers do not have
worry about it.