Source
164
164
int ret = 0;
165
165
166
166
if (!(setting->flags & DS_SYNC))
167
167
return setting->set(drive, arg);
168
168
169
169
rq = blk_get_request(q, REQ_OP_DRV_IN, 0);
170
170
ide_req(rq)->type = ATA_PRIV_MISC;
171
171
scsi_req(rq)->cmd_len = 5;
172
172
scsi_req(rq)->cmd[0] = REQ_DEVSET_EXEC;
173
173
*(int *)&scsi_req(rq)->cmd[1] = arg;
174
-
rq->special = setting->set;
174
+
ide_req(rq)->special = setting->set;
175
175
176
176
blk_execute_rq(q, NULL, rq, 0);
177
177
ret = scsi_req(rq)->result;
178
178
blk_put_request(rq);
179
179
180
180
return ret;
181
181
}
182
182
183
183
ide_startstop_t ide_do_devset(ide_drive_t *drive, struct request *rq)
184
184
{
185
-
int err, (*setfunc)(ide_drive_t *, int) = rq->special;
185
+
int err, (*setfunc)(ide_drive_t *, int) = ide_req(rq)->special;
186
186
187
187
err = setfunc(drive, *(int *)&scsi_req(rq)->cmd[1]);
188
188
if (err)
189
189
scsi_req(rq)->result = err;
190
190
ide_complete_rq(drive, 0, blk_rq_bytes(rq));
191
191
return ide_stopped;
192
192
}