lightnvm: cleanup queue before target removal
authorJavier González <javier@javigon.com>
Mon, 16 Nov 2015 14:34:47 +0000 (15:34 +0100)
committerJens Axboe <axboe@fb.com>
Mon, 16 Nov 2015 22:20:41 +0000 (15:20 -0700)
This prevents outstanding IOs to be sent for completion to target after
the target has been removed. The flow is now: stop new IOs > cleanup
queue > remove target.

Signed-off-by: Javier Gonzalez <javier@cnexlabs.com>
Signed-off-by: Matias Bjørling <m@bjorling.me>
Signed-off-by: Jens Axboe <axboe@fb.com>
drivers/lightnvm/core.c

index 790b1d7a8d43e7407f8e4f5e47301dad32393592..8a556f3f36bb226996153f671c73ab532b5de168 100644 (file)
@@ -460,11 +460,11 @@ static void nvm_remove_target(struct nvm_target *t)
        lockdep_assert_held(&nvm_lock);
 
        del_gendisk(tdisk);
+       blk_cleanup_queue(q);
+
        if (tt->exit)
                tt->exit(tdisk->private_data);
 
-       blk_cleanup_queue(q);
-
        put_disk(tdisk);
 
        list_del(&t->list);