Revision f48a7a6e hw/esp.c
b/hw/esp.c | ||
---|---|---|
217 | 217 |
s->async_len = 0; |
218 | 218 |
} |
219 | 219 |
|
220 |
if (target >= ESP_MAX_DEVS || !s->bus.devs[target]) { |
|
220 |
s->current_dev = scsi_device_find(&s->bus, target, 0); |
|
221 |
if (!s->current_dev) { |
|
221 | 222 |
// No such drive |
222 | 223 |
s->rregs[ESP_RSTAT] = 0; |
223 | 224 |
s->rregs[ESP_RINTR] = INTR_DC; |
... | ... | |
225 | 226 |
esp_raise_irq(s); |
226 | 227 |
return 0; |
227 | 228 |
} |
228 |
s->current_dev = s->bus.devs[target]; |
|
229 | 229 |
return dmalen; |
230 | 230 |
} |
231 | 231 |
|
... | ... | |
233 | 233 |
{ |
234 | 234 |
int32_t datalen; |
235 | 235 |
int lun; |
236 |
SCSIDevice *current_lun; |
|
236 | 237 |
|
237 | 238 |
trace_esp_do_busid_cmd(busid); |
238 | 239 |
lun = busid & 7; |
239 |
s->current_req = scsi_req_new(s->current_dev, 0, lun, buf, NULL); |
|
240 |
current_lun = scsi_device_find(&s->bus, s->current_dev->id, lun); |
|
241 |
s->current_req = scsi_req_new(current_lun, 0, lun, buf, NULL); |
|
240 | 242 |
datalen = scsi_req_enqueue(s->current_req); |
241 | 243 |
s->ti_size = datalen; |
242 | 244 |
if (datalen != 0) { |
Also available in: Unified diff