[RFC 0/3] target: qla2xxx LLD target mode and tcm_qla2xxx fabric module

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Nicholas Bellinger <nab@xxxxxxxxxxxxxxx>

Greetings all,

Attached is the initial RFC series for adding QLA2XXX LLD target mode support
against v8.03.04-k0 on .37-rc3, along a new tcm_qla2xxx.ko fabric module in
complete (eg: non incremental) form in order to add a bit more context for review.
At this point this code should be considered a 'for-39' item, and is being posted
for early review now in order to get the discussion rolling on necessary changes
required to enable target mode within the mainline qla2xxx LLD.

An overview of the current status and mini-howto is available here:

http://www.linux-iscsi.org/index.php/Qlogic

The series has been broken up into three individual patches:

This qla2xxx LLD changes in patch #1 and #2 are based on qla2x00t v8.02.01-k4 /
.26 and qla2x00t-target.ko from the SCST project, and are a modern refactoring ->
forward port of this logic to mainline qla2xxx code.

Patch #1 adds the main qla2x_target.c logic and associated headers into the
qla2xxx LLD, including the main struct qla_target_template API for interaction
with tcm_qla2xxx.

Patch #2 adds the various callbacks into struct qla_hw_data->qla2x_tmpl and
qla2x_target.c logic within qla2xxx proper.

Patch #3 adds the seperate tcm_qla2xxx fabric module using a generic configfs
control plane on modern v4 target mode code.  This module defines it's own set
of struct qla_target_template callers for interaction with qla2x_target.c ->
qla2xxx LLD code.

The LLD changes and tcm_qla2xxx should currently be considered ALPHA -> BETA
status, and thus far has been run exclusively using PCIe device passthrough
with MSI-X interrupts into KVM guest.  Large block I/O is stable, and is able
to run for sustained periods at line-rate (1000 MB/sec) in non NPIV mode.
The FC nexus handling in qla2x_target.c is stable and able to pass initial
testing (shutdown, cable pull, etc).  This also includes being able to shutdown
tcm_qla2xx and disable target mode on an individual struct qla_hw_data, and
then reload tcm_qla2xxx and recreate the configfs groups, re-enable target
mode on the same qla_hw_data and everything work as expected w/o shutting
down qla2xxx LLD.

There will be ongoing work to continue to improve and stabilize this code
for future mainline acceptance.  Code review and feedback are welcome.

Best Regards,

Signed-off-by: Nicholas A. Bellinger <nab@xxxxxxxxxxxxxxx>

Nicholas Bellinger (3):
  qla2xxx: Add target mode support into 2xxx series LLD code
  qla2xxx: Enable 2xxx series LLD target mode support
  tcm_qla2xxx: Add HW target mode I/O, control and TMR path code

 drivers/scsi/qla2xxx/Makefile                     |    4 +-
 drivers/scsi/qla2xxx/qla2x_target.c               | 5060 +++++++++++++++++++++
 drivers/scsi/qla2xxx/qla2x_target.h               |  290 ++
 drivers/scsi/qla2xxx/qla2x_tgt.h                  |  140 +
 drivers/scsi/qla2xxx/qla2x_tgt_def.h              |  717 +++
 drivers/scsi/qla2xxx/qla_attr.c                   |   14 +-
 drivers/scsi/qla2xxx/qla_def.h                    |   68 +-
 drivers/scsi/qla2xxx/qla_fw.h                     |   10 +
 drivers/scsi/qla2xxx/qla_gbl.h                    |   11 +
 drivers/scsi/qla2xxx/qla_gs.c                     |   14 +-
 drivers/scsi/qla2xxx/qla_init.c                   |  329 ++-
 drivers/scsi/qla2xxx/qla_iocb.c                   |  105 +-
 drivers/scsi/qla2xxx/qla_isr.c                    |  232 +-
 drivers/scsi/qla2xxx/qla_mbx.c                    |  172 +-
 drivers/scsi/qla2xxx/qla_mid.c                    |   35 +-
 drivers/scsi/qla2xxx/qla_os.c                     |  250 +-
 drivers/target/tcm_qla2xxx/Kbuild                 |    6 +
 drivers/target/tcm_qla2xxx/Kconfig                |    6 +
 drivers/target/tcm_qla2xxx/tcm_qla2xxx_base.h     |   91 +
 drivers/target/tcm_qla2xxx/tcm_qla2xxx_configfs.c | 1319 ++++++
 drivers/target/tcm_qla2xxx/tcm_qla2xxx_fabric.c   |  766 ++++
 drivers/target/tcm_qla2xxx/tcm_qla2xxx_fabric.h   |   48 +
 22 files changed, 9631 insertions(+), 56 deletions(-)
 create mode 100644 drivers/scsi/qla2xxx/qla2x_target.c
 create mode 100644 drivers/scsi/qla2xxx/qla2x_target.h
 create mode 100644 drivers/scsi/qla2xxx/qla2x_tgt.h
 create mode 100644 drivers/scsi/qla2xxx/qla2x_tgt_def.h
 create mode 100644 drivers/target/tcm_qla2xxx/Kbuild
 create mode 100644 drivers/target/tcm_qla2xxx/Kconfig
 create mode 100644 drivers/target/tcm_qla2xxx/tcm_qla2xxx_base.h
 create mode 100644 drivers/target/tcm_qla2xxx/tcm_qla2xxx_configfs.c
 create mode 100644 drivers/target/tcm_qla2xxx/tcm_qla2xxx_fabric.c
 create mode 100644 drivers/target/tcm_qla2xxx/tcm_qla2xxx_fabric.h

-- 
1.7.3.3

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux