• Bart Van Assche's avatar
    nvme: set physical block size and optimal I/O size · 81adb863
    Bart Van Assche authored
    >From the NVMe 1.4 spec:
    
    NSFEAT bit 4 if set to 1: indicates that the fields NPWG, NPWA, NPDG, NPDA,
    and NOWS are defined for this namespace and should be used by the host for
    I/O optimization;
    [ ... ]
    Namespace Preferred Write Granularity (NPWG): This field indicates the
    smallest recommended write granularity in logical blocks for this namespace.
    This is a 0's based value. The size indicated should be less than or equal
    to Maximum Data Transfer Size (MDTS) that is specified in units of minimum
    memory page size. The value of this field may change if the namespace is
    reformatted. The size should be a multiple of Namespace Preferred Write
    Alignment (NPWA). Refer to section 8.25 for how this field is utilized to
    improve performance and endurance.
    [ ... ]
    Each Write, Write Uncorrectable, or Write Zeroes commands should address a
    multiple of Namespace Preferred Write Granularity (NPWG) (refer to Figure
    245) and Stream Write Size (SWS) (refer to Figure 515) logical blocks (as
    expressed in the NLB field), and the SLBA field of the command should be
    aligned to Namespace Preferred Write Alignment (NPWA) (refer to Figure 245)
    for best performance.
    Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
    Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    81adb863
core.c 102 KB