diff options
author | Stephen Rothwell <sfr@canb.auug.org.au> | 2008-06-05 12:13:59 +1000 |
---|---|---|
committer | Stephen Rothwell <sfr@canb.auug.org.au> | 2008-06-05 12:13:59 +1000 |
commit | 16b4fd76eff75b94a2644a5021dd02a1626c6e99 (patch) | |
tree | 63934adb7d75303eeeea1813c14de1474a3962c0 /drivers/block | |
parent | a37a60331f7158e717f6d7de8e8d90887afae570 (diff) | |
parent | 2e024d9e479142c74611ec9b8f8a8e3eb0e3c621 (diff) |
Merge branch 'quilt/ide'
Diffstat (limited to 'drivers/block')
-rw-r--r-- | drivers/block/paride/pd.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/drivers/block/paride/pd.c b/drivers/block/paride/pd.c index 570f3b70dce7..5fdfa7c888ce 100644 --- a/drivers/block/paride/pd.c +++ b/drivers/block/paride/pd.c @@ -712,19 +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; - blk_rq_init(NULL, &rq); - rq.rq_disk = disk->gd; - 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; } |