• Javier González's avatar
    lightnvm: pblk: guarantee mw_cunits on read buffer · d672d92d
    Javier González authored
    OCSSD 2.0 defines the amount of data that the host must buffer per chunk
    to guarantee reads through the geometry field mw_cunits. This value is
    the base that pblk uses to determine the size of its read buffer.
    Currently, this size is set to be the closes power-of-2 to mw_cunits
    times the number of parallel units available to the pblk instance for
    each open line (currently one). When an entry (4KB) is put in the
    buffer, the L2P table points to it. As the buffer wraps up, the L2P is
    updated to point to addresses on the device, thus guaranteeing mw_cunits
    at a chunk level.
    
    However, given that pblk cannot write to the device under ws_min
    (normally ws_opt), there might be a window in which the buffer starts
    wrapping up and updating L2P entries before the mw_cunits value in a
    chunk has been surpassed.
    
    In order not to violate the mw_cunits constrain in this case, account
    for ws_opt on the read buffer creation.
    Signed-off-by: default avatarJavier González <javier@cnexlabs.com>
    Signed-off-by: default avatarMatias Bjørling <mb@lightnvm.io>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    d672d92d
pblk-init.c 31.3 KB