Commit 7a4a1ccd authored by Frank Munzert's avatar Frank Munzert Committed by Martin Schwidefsky

[S390] tape block: complete request with correct locking

__blk_end_request must be called with request queue lock held. We need to use
blk_end_request rather than  __blk_end_request.
Signed-off-by: default avatarFrank Munzert <munzert@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent da5aae70
...@@ -76,7 +76,7 @@ tapeblock_trigger_requeue(struct tape_device *device) ...@@ -76,7 +76,7 @@ tapeblock_trigger_requeue(struct tape_device *device)
static void static void
tapeblock_end_request(struct request *req, int error) tapeblock_end_request(struct request *req, int error)
{ {
if (__blk_end_request(req, error, blk_rq_bytes(req))) if (blk_end_request(req, error, blk_rq_bytes(req)))
BUG(); BUG();
} }
...@@ -166,7 +166,7 @@ tapeblock_requeue(struct work_struct *work) { ...@@ -166,7 +166,7 @@ tapeblock_requeue(struct work_struct *work) {
nr_queued++; nr_queued++;
spin_unlock(get_ccwdev_lock(device->cdev)); spin_unlock(get_ccwdev_lock(device->cdev));
spin_lock(&device->blk_data.request_queue_lock); spin_lock_irq(&device->blk_data.request_queue_lock);
while ( while (
!blk_queue_plugged(queue) && !blk_queue_plugged(queue) &&
elv_next_request(queue) && elv_next_request(queue) &&
...@@ -176,7 +176,9 @@ tapeblock_requeue(struct work_struct *work) { ...@@ -176,7 +176,9 @@ tapeblock_requeue(struct work_struct *work) {
if (rq_data_dir(req) == WRITE) { if (rq_data_dir(req) == WRITE) {
DBF_EVENT(1, "TBLOCK: Rejecting write request\n"); DBF_EVENT(1, "TBLOCK: Rejecting write request\n");
blkdev_dequeue_request(req); blkdev_dequeue_request(req);
spin_unlock_irq(&device->blk_data.request_queue_lock);
tapeblock_end_request(req, -EIO); tapeblock_end_request(req, -EIO);
spin_lock_irq(&device->blk_data.request_queue_lock);
continue; continue;
} }
blkdev_dequeue_request(req); blkdev_dequeue_request(req);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment