aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/um/drivers/ubd_kern.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c
index b1a77b11f089..99f9f9605e9c 100644
--- a/arch/um/drivers/ubd_kern.c
+++ b/arch/um/drivers/ubd_kern.c
@@ -475,17 +475,9 @@ static void do_ubd_request(struct request_queue * q);
475/* Only changed by ubd_init, which is an initcall. */ 475/* Only changed by ubd_init, which is an initcall. */
476int thread_fd = -1; 476int thread_fd = -1;
477 477
478static void ubd_end_request(struct request *req, int bytes, int uptodate) 478static void ubd_end_request(struct request *req, int bytes, int error)
479{ 479{
480 if (!end_that_request_first(req, uptodate, bytes >> 9)) { 480 blk_end_request(req, error, bytes);
481 struct ubd *dev = req->rq_disk->private_data;
482 unsigned long flags;
483
484 add_disk_randomness(req->rq_disk);
485 spin_lock_irqsave(&dev->lock, flags);
486 end_that_request_last(req, uptodate);
487 spin_unlock_irqrestore(&dev->lock, flags);
488 }
489} 481}
490 482
491/* Callable only from interrupt context - otherwise you need to do 483/* Callable only from interrupt context - otherwise you need to do
@@ -493,10 +485,10 @@ static void ubd_end_request(struct request *req, int bytes, int uptodate)
493static inline void ubd_finish(struct request *req, int bytes) 485static inline void ubd_finish(struct request *req, int bytes)
494{ 486{
495 if(bytes < 0){ 487 if(bytes < 0){
496 ubd_end_request(req, 0, 0); 488 ubd_end_request(req, 0, -EIO);
497 return; 489 return;
498 } 490 }
499 ubd_end_request(req, bytes, 1); 491 ubd_end_request(req, bytes, 0);
500} 492}
501 493
502static LIST_HEAD(restart); 494static LIST_HEAD(restart);