• Javier González's avatar
    lightnvm: manage open and closed blocks separately · ff0e498b
    Javier González authored
    LightNVM targets need to know the state of the flash block when doing
    flash optimizations. An example is implementing a write buffer to
    respect the flash page size. Currently, block state is not accounted
    for; the media manager only differentiates among free, bad and in-use
    blocks.
    
    This patch adds the logic in the generic media manager to enable
    targets manage blocks into open and close separately, and it implements
    such management in rrpc. It also adds a set of flags to describe the
    state of the block (open, closed, free, bad).
    
    In order to avoid taking two locks (nvm_lun and rrpc_lun) consecutively,
    we introduce lockless get_/put_block primitives so that the open and
    close list locks and future common logic is handled within the nvm_lun
    lock.
    Signed-off-by: default avatarJavier González <javier@cnexlabs.com>
    Signed-off-by: default avatarMatias Bjørling <m@bjorling.me>
    Signed-off-by: default avatarJens Axboe <axboe@fb.com>
    ff0e498b
gennvm.c 11.1 KB