On 11/26/21 8:33 AM, Yanling Song wrote:
This initial commit contains Ramaxel's spraid module.
Signed-off-by: Yanling Song <songyl@xxxxxxxxxxx>
Changes from V1:
1. Use BSG module to replace with ioctrl
2. Use author's email as MODULE_AUTHOR
3. Remove "default=m" in drivers/scsi/spraid/Kconfig
4. To be changed in the next version:
a. Use get_unaligned_be*() in spraid_setup_rw_cmd();
b. Use pr_debug() instead of introducing dev_log_dbg().
---
Documentation/scsi/spraid.rst | 16 +
MAINTAINERS | 7 +
drivers/scsi/Kconfig | 1 +
drivers/scsi/Makefile | 1 +
drivers/scsi/spraid/Kconfig | 10 +
drivers/scsi/spraid/Makefile | 7 +
drivers/scsi/spraid/spraid.h | 693 ++++++
drivers/scsi/spraid/spraid_main.c | 3328 +++++++++++++++++++++++++++++
8 files changed, 4063 insertions(+)
create mode 100644 Documentation/scsi/spraid.rst
create mode 100644 drivers/scsi/spraid/Kconfig
create mode 100644 drivers/scsi/spraid/Makefile
create mode 100644 drivers/scsi/spraid/spraid.h
create mode 100644 drivers/scsi/spraid/spraid_main.c
Hmm.
This entire thing looks like an NVMe controller which is made to look
like a SCSI controller.
It even uses most of the NVMe structures.
And from what I've seen there is not much SCSI specific in here; I/O and
queue setup is pretty much what every NVMe controller does.
So why not make it a true NVMe controller?
Yes, you would need to discuss with the NVMe folks on how a RAID
controller should look like in NVMe terms.
But overall I guess the driver would be far smaller and possibly easier
to maintain.
So where's the benefit having it as a SCSI driver (apart from the fact
that is allows you to side-step having to discuss the interface with
NVMexpress.org ...)?
Or, to put it the other way round: Is there anything SCSI specific which
would prevent such an approach?
Cheers,
Hannes
--
Dr. Hannes Reinecke <hare@xxxxxxx>
<insert signature here>