summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sbull/sbull.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/sbull/sbull.c b/sbull/sbull.c
index 8201f7d..0dc474e 100644
--- a/sbull/sbull.c
+++ b/sbull/sbull.c
@@ -104,11 +104,11 @@ static void sbull_request(struct request_queue *q)
{
struct request *req;
- while ((req = blk_peek_request(q)) != NULL) {
+ while ((req = blk_fetch_request(q)) != NULL) {
struct sbull_dev *dev = req->rq_disk->private_data;
if (req->cmd_type != REQ_TYPE_FS) {
printk (KERN_NOTICE "Skip non-fs request\n");
- blk_end_request(req, 0, blk_rq_cur_bytes(req));
+ __blk_end_request_cur(req, -EIO);
continue;
}
// printk (KERN_NOTICE "Req dev %d dir %ld sec %ld, nr %d f %lx\n",
@@ -117,7 +117,7 @@ static void sbull_request(struct request_queue *q)
// req->flags);
sbull_transfer(dev, blk_rq_pos(req), blk_rq_cur_sectors(req),
req->buffer, rq_data_dir(req));
- blk_end_request(req, 1, blk_rq_cur_bytes(req));
+ __blk_end_request_cur(req, 0);
}
}
@@ -168,17 +168,14 @@ static void sbull_full_request(struct request_queue *q)
int sectors_xferred;
struct sbull_dev *dev = q->queuedata;
- while ((req = blk_peek_request(q)) != NULL) {
+ while ((req = blk_fetch_request(q)) != NULL) {
if (req->cmd_type != REQ_TYPE_FS) {
printk (KERN_NOTICE "Skip non-fs request\n");
- blk_end_request(req, 0, blk_rq_cur_bytes(req));
+ __blk_end_request(req, -EIO, blk_rq_cur_bytes(req));
continue;
}
sectors_xferred = sbull_xfer_request(dev, req);
- if (! __blk_end_request(req, 1, sectors_xferred)) {
- blk_start_request(req);
- __blk_end_request(req, 0, blk_rq_cur_bytes(req));
- }
+ __blk_end_request(req, 0, sectors_xferred);
}
}