diff options
Diffstat (limited to 'arch/um/drivers/ubd_kern.c')
-rw-r--r-- | arch/um/drivers/ubd_kern.c | 16 |
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. */ |
476 | int thread_fd = -1; | 476 | int thread_fd = -1; |
477 | 477 | ||
478 | static void ubd_end_request(struct request *req, int bytes, int uptodate) | 478 | static 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) | |||
493 | static inline void ubd_finish(struct request *req, int bytes) | 485 | static 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 | ||
502 | static LIST_HEAD(restart); | 494 | static LIST_HEAD(restart); |