]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/block/paride/pd.c
Merge branch 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6
[linux-2.6-omap-h63xx.git] / drivers / block / paride / pd.c
index df819f8a95a6d0db78e95153e0194deea4730e88..5fdfa7c888cebc98aacc9873a9f7216f79c3a1f5 100644 (file)
@@ -712,21 +712,17 @@ static void do_pd_request(struct request_queue * q)
 static int pd_special_command(struct pd_unit *disk,
                      enum action (*func)(struct pd_unit *disk))
 {
-       DECLARE_COMPLETION_ONSTACK(wait);
-       struct request rq;
+       struct request *rq;
        int err = 0;
 
-       memset(&rq, 0, sizeof(rq));
-       rq.errors = 0;
-       rq.rq_disk = disk->gd;
-       rq.ref_count = 1;
-       rq.end_io_data = &wait;
-       rq.end_io = blk_end_sync_rq;
-       blk_insert_request(disk->gd->queue, &rq, 0, func);
-       wait_for_completion(&wait);
-       if (rq.errors)
-               err = -EIO;
-       blk_put_request(&rq);
+       rq = blk_get_request(disk->gd->queue, READ, __GFP_WAIT);
+
+       rq->cmd_type = REQ_TYPE_SPECIAL;
+       rq->special = func;
+
+       err = blk_execute_rq(disk->gd->queue, disk->gd, rq, 0);
+
+       blk_put_request(rq);
        return err;
 }