target: Make all control CDBs scatter-gather
authorAndy Grover <agrover@redhat.com>
Wed, 20 Jul 2011 19:13:28 +0000 (19:13 +0000)
committerNicholas Bellinger <nab@linux-iscsi.org>
Fri, 22 Jul 2011 09:37:48 +0000 (09:37 +0000)
commit05d1c7c0d0db4cc25548d9aadebb416888a82327
tree290243526d188a7f6a683b0e13a63c7207471fa1
parente22a7f075226c51f3f71b922e9eeb4f99fac1475
target: Make all control CDBs scatter-gather

Previously, some control CDBs did not allocate memory in pages for their
data buffer, but just did a kmalloc. This patch makes all cdbs allocate
pages.

This has the benefit of streamlining some paths that had to behave
differently when we used two allocation methods. The downside is that
all accesses to the data buffer need to kmap it before use, and need to
handle data in page-sized chunks if more than a page is needed for a given
command's data buffer.

Finally, note that cdbs with no data buffers are handled a little
differently. Before, SCSI_NON_DATA_CDBs would not call get_mem at all
(they'd be in the final else in transport_allocate_resources) but now
these will make it into generic_get_mem, but just not allocate any
buffers.

Signed-off-by: Andy Grover <agrover@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/target_core_alua.c
drivers/target/target_core_cdb.c
drivers/target/target_core_device.c
drivers/target/target_core_pr.c
drivers/target/target_core_pscsi.c
drivers/target/target_core_transport.c
drivers/target/tcm_fc/tfc_cmd.c
drivers/target/tcm_fc/tfc_io.c
include/target/target_core_base.h
include/target/target_core_transport.h