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