|
@@ -475,17 +475,9 @@ static void do_ubd_request(struct request_queue * q);
|
|
|
/* Only changed by ubd_init, which is an initcall. */
|
|
|
int thread_fd = -1;
|
|
|
|
|
|
-static void ubd_end_request(struct request *req, int bytes, int uptodate)
|
|
|
+static void ubd_end_request(struct request *req, int bytes, int error)
|
|
|
{
|
|
|
- if (!end_that_request_first(req, uptodate, bytes >> 9)) {
|
|
|
- struct ubd *dev = req->rq_disk->private_data;
|
|
|
- unsigned long flags;
|
|
|
-
|
|
|
- add_disk_randomness(req->rq_disk);
|
|
|
- spin_lock_irqsave(&dev->lock, flags);
|
|
|
- end_that_request_last(req, uptodate);
|
|
|
- spin_unlock_irqrestore(&dev->lock, flags);
|
|
|
- }
|
|
|
+ blk_end_request(req, error, bytes);
|
|
|
}
|
|
|
|
|
|
/* 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)
|
|
|
static inline void ubd_finish(struct request *req, int bytes)
|
|
|
{
|
|
|
if(bytes < 0){
|
|
|
- ubd_end_request(req, 0, 0);
|
|
|
+ ubd_end_request(req, 0, -EIO);
|
|
|
return;
|
|
|
}
|
|
|
- ubd_end_request(req, bytes, 1);
|
|
|
+ ubd_end_request(req, bytes, 0);
|
|
|
}
|
|
|
|
|
|
static LIST_HEAD(restart);
|