• Rakesh Pandit's avatar
    lightnvm: prevent bd removal if busy · bb6aa6f0
    Rakesh Pandit authored
    When a virtual block device is formatted and mounted after creating
    with "nvme lnvm create... -t pblk", a removal from "nvm lnvm remove"
    would result in this:
    
    446416.309757] bdi-block not registered
    [446416.309773] ------------[ cut here ]------------
    [446416.309780] WARNING: CPU: 3 PID: 4319 at fs/fs-writeback.c:2159
      __mark_inode_dirty+0x268/0x340
    
    Ideally removal should return -EBUSY as block device is mounted after
    formatting.  This patch tries to address this checking if whole device
    or any partition of it already mounted or not before removal.
    
    Whole device is checked using "bd_super" member of block device.  This
    member is always set once block device has been mounted using a
    filesystem.  Another member "bd_part_count" takes care of checking any
    if any partitions are under use.  "bd_part_count" is only updated
    under locks when partitions are opened or closed (first open and last
    release).  This at least does take care sending -EBUSY if removal is
    being attempted while whole block device or any partition is mounted.
    Signed-off-by: default avatarRakesh Pandit <rakesh@tuxera.com>
    Reviewed-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@kernel.dk>
    bb6aa6f0
core.c 30.5 KB