Revision c557e889 hw/scsi-disk.c
b/hw/scsi-disk.c | ||
---|---|---|
1147 | 1147 |
return len; |
1148 | 1148 |
} |
1149 | 1149 |
|
1150 |
static void scsi_disk_purge_requests(SCSIDiskState *s) |
|
1151 |
{ |
|
1152 |
SCSIDiskReq *r; |
|
1153 |
|
|
1154 |
while (!QTAILQ_EMPTY(&s->qdev.requests)) { |
|
1155 |
r = DO_UPCAST(SCSIDiskReq, req, QTAILQ_FIRST(&s->qdev.requests)); |
|
1156 |
if (r->req.aiocb) { |
|
1157 |
bdrv_aio_cancel(r->req.aiocb); |
|
1158 |
} |
|
1159 |
scsi_req_dequeue(&r->req); |
|
1160 |
scsi_req_unref(&r->req); |
|
1161 |
} |
|
1162 |
} |
|
1163 |
|
|
1164 | 1150 |
static void scsi_disk_reset(DeviceState *dev) |
1165 | 1151 |
{ |
1166 | 1152 |
SCSIDiskState *s = DO_UPCAST(SCSIDiskState, qdev.qdev, dev); |
1167 | 1153 |
uint64_t nb_sectors; |
1168 | 1154 |
|
1169 |
scsi_disk_purge_requests(s);
|
|
1155 |
scsi_device_purge_requests(&s->qdev);
|
|
1170 | 1156 |
|
1171 | 1157 |
bdrv_get_geometry(s->bs, &nb_sectors); |
1172 | 1158 |
nb_sectors /= s->cluster_size; |
... | ... | |
1180 | 1166 |
{ |
1181 | 1167 |
SCSIDiskState *s = DO_UPCAST(SCSIDiskState, qdev, dev); |
1182 | 1168 |
|
1183 |
scsi_disk_purge_requests(s);
|
|
1169 |
scsi_device_purge_requests(&s->qdev);
|
|
1184 | 1170 |
blockdev_mark_auto_del(s->qdev.conf.bs); |
1185 | 1171 |
} |
1186 | 1172 |
|
Also available in: Unified diff