diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c index c3f0ee16594d..86848c6303f6 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c @@ -445,6 +445,14 @@ static void nbd_clear_que(struct nbd_device *lo) req->errors++; nbd_end_request(req); } + + while (!list_empty(&lo->waiting_queue)) { + req = list_entry(lo->waiting_queue.next, struct request, + queuelist); + list_del_init(&req->queuelist); + req->errors++; + nbd_end_request(req); + } } @@ -594,6 +602,7 @@ static int __nbd_ioctl(struct block_device *bdev, struct nbd_device *lo, lo->file = NULL; nbd_clear_que(lo); BUG_ON(!list_empty(&lo->queue_head)); + BUG_ON(!list_empty(&lo->waiting_queue)); if (file) fput(file); return 0;