Subject: Re: linux-next: build failure after merge of the block tree

From: Matias Bjørling <[email-masked]>
Date: Fri, 4 Dec 2015 13:16:21 +0100

On 12/03/2015 05:42 PM, Christoph Hellwig wrote:
> On Thu, Dec 03, 2015 at 12:07:23PM +0100, Matias Bjørling wrote:
>> What is the reason to keep the nvme_ns internally to the nvme core?
>>
>> We can definitely move ->nsid and the lba_shift into nvm_dev. Only thing I
>> have is that it moves a small part of nvme logic into the lightnvm core.
>
> It's a structure specific to the NVM command set, and the block device
> use to implement it in Linux.  Similar to how you wouldn't use the SCSI
> disk driver data structures to implement the tape driver for example.
>

Granted. Taking a step back and see how it would look in the 
specification. For that case, the identify geometry should properly 
replace the identify namespace command and extend the controller 
identify with a method to expose identify geometry structures. It falls 
back to that we don't have the appropriate bits in the specification (as 
there isn't a vendor specific command set (CSS) place at the moment). 
I'll rather not (and patches properly won't be accepted) push specific 
meanings to reserved bits in the standard, which then is overruled by 
vendor specific pci id's.

The NVMe and LightNVM still shares some common ground as I/O 
submission/completion still follows normal I/O submissions. The 
Submission/Completion sizes (SQES/CQES), ONCS bits, number of namespaces 
could properly be either abstracted or duplicated in vendor specific bits.

I'll work on getting ->nsid, and lba_shift abstracted away. However, the 
best solution will be to get some bits in the spec and implement it 
appropriately.