• Igor Konopko's avatar
    lightnvm: do not remove instance under global lock · 843f2edb
    Igor Konopko authored
    Currently all the target instances are removed under global nvm_lock.
    This was needed to ensure that nvm_dev struct will not be freed by
    hot unplug event during target removal. However, current implementation
    has some drawbacks, since the same lock is used when new nvme subsystem
    is registered, so we can have a situation, that due to long process of
    target removal on drive A, registration (and listing in OS) of the
    drive B will take a lot of time, since it will wait for that lock.
    
    Now when we have kref which ensures that nvm_dev will not be freed in
    the meantime, we can easily get rid of this lock for a time when we are
    removing nvm targets.
    Signed-off-by: default avatarIgor Konopko <igor.j.konopko@intel.com>
    Reviewed-by: default avatarJavier González <javier@javigon.com>
    Signed-off-by: default avatarMatias Bjørling <mb@lightnvm.io>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    843f2edb
core.c 31 KB