Lines Matching refs:shadow
118 struct vscsifrnt_shadow *shadow[VSCSIIF_MAX_REQS];
160 info->shadow[id] = NULL;
179 struct vscsifrnt_shadow *shadow)
183 struct scsi_cmnd *sc = shadow->sc;
194 info->shadow[id] = shadow;
195 shadow->rqid = id;
201 ring_req->act = shadow->act;
202 ring_req->ref_rqid = shadow->ref_rqid;
203 ring_req->nr_segments = shadow->nr_segments;
217 for (i = 0; i < (shadow->nr_segments & ~VSCSIIF_SG_GRANT); i++)
218 ring_req->seg[i] = shadow->seg[i];
228 struct vscsifrnt_shadow *shadow)
232 if (shadow->sc->sc_data_direction == DMA_NONE)
235 for (i = 0; i < shadow->nr_grants; i++) {
236 if (unlikely(!gnttab_try_end_foreign_access(shadow->gref[i]))) {
243 kfree(shadow->sg);
249 struct vscsifrnt_shadow *shadow;
255 shadow = info->shadow[id];
256 sc = shadow->sc;
260 scsifront_gnttab_done(info, shadow);
280 struct vscsifrnt_shadow *shadow = info->shadow[id];
284 shadow->wait_reset = 1;
285 switch (shadow->rslt_reset) {
287 shadow->rslt_reset = ring_rsp->rslt;
292 kfree(shadow);
299 shadow->rslt_reset, id);
304 wake_up(&shadow->wq_reset);
315 if (info->shadow[ring_rsp->rqid]->act == VSCSIIF_ACT_SCSI_CDB)
393 struct vscsifrnt_shadow *shadow)
418 shadow->sg = kcalloc(data_grants,
420 if (!shadow->sg)
423 seg = shadow->sg ? : shadow->seg;
428 kfree(shadow->sg);
447 shadow->gref[ref_cnt] = ref;
448 shadow->seg[ref_cnt].gref = ref;
449 shadow->seg[ref_cnt].offset = (uint16_t)off;
450 shadow->seg[ref_cnt].length = (uint16_t)bytes;
483 shadow->gref[ref_cnt] = ref;
498 shadow->nr_segments = VSCSIIF_SG_GRANT | seg_grants;
500 shadow->nr_segments = (uint8_t)ref_cnt;
501 shadow->nr_grants = ref_cnt;
531 struct vscsifrnt_shadow *shadow = scsi_cmd_priv(sc);
537 shadow->sc = sc;
538 shadow->act = VSCSIIF_ACT_SCSI_CDB;
546 err = map_data_for_request(info, sc, shadow);
558 if (scsifront_do_request(info, shadow)) {
559 scsifront_gnttab_done(info, shadow);
584 struct vscsifrnt_shadow *shadow, *s = scsi_cmd_priv(sc);
587 shadow = kzalloc(sizeof(*shadow), GFP_NOIO);
588 if (!shadow)
591 shadow->act = act;
592 shadow->rslt_reset = RSLT_RESET_WAITING;
593 shadow->sc = sc;
594 shadow->ref_rqid = s->rqid;
595 init_waitqueue_head(&shadow->wq_reset);
603 if (!scsifront_do_request(info, shadow))
617 err = wait_event_interruptible(shadow->wq_reset, shadow->wait_reset);
621 err = shadow->rslt_reset;
622 scsifront_put_rqid(info, shadow->rqid);
623 kfree(shadow);
626 shadow->rslt_reset = RSLT_RESET_ERR;
637 kfree(shadow);