diff options
-rw-r--r-- | drivers/block/rbd.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c index 73ed5f3a862d..585378bc988c 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c @@ -5982,7 +5982,6 @@ static ssize_t do_rbd_remove(struct bus_type *bus, struct list_head *tmp; int dev_id; char opt_buf[6]; - bool already = false; bool force = false; int ret; @@ -6015,13 +6014,13 @@ static ssize_t do_rbd_remove(struct bus_type *bus, spin_lock_irq(&rbd_dev->lock); if (rbd_dev->open_count && !force) ret = -EBUSY; - else - already = test_and_set_bit(RBD_DEV_FLAG_REMOVING, - &rbd_dev->flags); + else if (test_and_set_bit(RBD_DEV_FLAG_REMOVING, + &rbd_dev->flags)) + ret = -EINPROGRESS; spin_unlock_irq(&rbd_dev->lock); } spin_unlock(&rbd_dev_list_lock); - if (ret < 0 || already) + if (ret) return ret; if (force) { |