|
@@ -435,7 +435,12 @@ static int idedisk_prep_fn(struct request_queue *q, struct request *rq)
|
|
|
if (!(rq->cmd_flags & REQ_FLUSH))
|
|
|
return BLKPREP_OK;
|
|
|
|
|
|
- cmd = kzalloc(sizeof(*cmd), GFP_ATOMIC);
|
|
|
+ if (rq->special) {
|
|
|
+ cmd = rq->special;
|
|
|
+ memset(cmd, 0, sizeof(*cmd));
|
|
|
+ } else {
|
|
|
+ cmd = kzalloc(sizeof(*cmd), GFP_ATOMIC);
|
|
|
+ }
|
|
|
|
|
|
/* FIXME: map struct ide_taskfile on rq->cmd[] */
|
|
|
BUG_ON(cmd == NULL);
|