Re: [PATCH V2 4/4] nvme: lightnvm: add late setup of block size and metadata

From: Matias BjÃrling
Date: Thu Feb 15 2018 - 03:57:50 EST


On 02/12/2018 09:21 PM, Javier Gonzalez wrote:

On 9 Feb 2018, at 01.27, Matias BjÃrling <mb@xxxxxxxxxxx> wrote:

The nvme driver sets up the size of the nvme namespace in two steps.
First it initializes the device with standard logical block and
metadata sizes, and then sets the correct logical block and metadata
size. Due to the OCSSD 2.0 specification relies on the namespace to
expose these sizes for correct initialization, let it be updated
appropriately on the LightNVM side as well.

Signed-off-by: Matias BjÃrling <mb@xxxxxxxxxxx>
---


This late initialization breaks ligthnvm's core init since the sector
size (csecs) is used on the first init part to set the logical block size.

nvm_core_init -> blk_queue_logical_block_size(dev->q, dev_geo->c.csecs);

We can do do a nvme_nvm_revalidate and set this on the revalidation path
instead of simply updating the info as in nvme_nvm_update_nvm_info().'

I believe that is what the patch does (nvme_nvm_update_nvm_info is called from the nvme_revalidate_disk context).

The nvm_core_init initialization of the block size is redundant and should be removed. I'll update the patch.