Re: [PATCH V2] scsi:spraid: initial commit of Ramaxel spraid driver

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

 



On 11/30/21 12:38 PM, Yanling Song wrote:
> On Mon, 29 Nov 2021 14:04:12 +0100
> Hannes Reinecke <hare@xxxxxxx> wrote:
> 
>> 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?
>>
> 
> Actually it is a SCSI driver, and it does register a scsi_host_template
> and host does send SCSI commands to our raid controller just like other
> raid controllers. You are right "it looks a lot like NVMe" since we
> believe the communication mechanism of NVME between host and the end
> device is good and it was leveraged when we designed the raid
> controller. That's why it looks like there are some code from NVME
> because the mechanism is the same.
> 
Thank you, but that was precisely my question.

Seeing that the driver is using the NVMe mechanism to communicate
commands between the driver and the hardware, doesn't it make it a NVMe
driver?
Especially as you are sending NVMe commands and not SCSI commands, so
you always will have to re-write the incoming SCSI commands into NVMe
commands, and knowing from experience this is not a good fit.

Hence my question: what exactly is SCSI specific on the hardware side?
Wouldn't an implementation as a NVMe driver be a better fit, as then you
could leverage all the existing code like setup prps, completion
handling etc?

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		           Kernel Storage Architect
hare@xxxxxxx			                  +49 911 74053 688
SUSE Software Solutions Germany GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), GF: Felix Imendörffer



[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