Lines Matching refs:shadow
121 struct vscsifrnt_shadow *shadow[VSCSIIF_MAX_REQS];
163 info->shadow[id] = NULL;
182 struct vscsifrnt_shadow *shadow)
186 struct scsi_cmnd *sc = shadow->sc;
197 info->shadow[id] = shadow;
198 shadow->rqid = id;
204 ring_req->act = shadow->act;
205 ring_req->ref_rqid = shadow->ref_rqid;
206 ring_req->nr_segments = shadow->nr_segments;
220 for (i = 0; i < (shadow->nr_segments & ~VSCSIIF_SG_GRANT); i++)
221 ring_req->seg[i] = shadow->seg[i];
223 shadow->inflight = true;
240 struct vscsifrnt_shadow *shadow)
244 if (shadow->sc->sc_data_direction == DMA_NONE)
247 for (i = 0; i < shadow->nr_grants; i++) {
248 if (unlikely(!gnttab_try_end_foreign_access(shadow->gref[i]))) {
254 kfree(shadow->sg);
302 struct vscsifrnt_shadow *shadow;
308 shadow = info->shadow[id];
309 sc = shadow->sc;
313 scsifront_gnttab_done(info, shadow);
336 struct vscsifrnt_shadow *shadow = info->shadow[id];
340 shadow->wait_reset = 1;
341 switch (shadow->rslt_reset) {
344 shadow->rslt_reset = SUCCESS;
346 shadow->rslt_reset = FAILED;
351 kfree(shadow);
361 wake_up(&shadow->wq_reset);
367 struct vscsifrnt_shadow *shadow;
370 !info->shadow[ring_rsp->rqid]->inflight) {
374 shadow = info->shadow[ring_rsp->rqid];
375 shadow->inflight = false;
377 if (shadow->act == VSCSIIF_ACT_SCSI_CDB)
472 struct vscsifrnt_shadow *shadow)
497 shadow->sg = kcalloc(data_grants,
499 if (!shadow->sg)
502 seg = shadow->sg ? : shadow->seg;
507 kfree(shadow->sg);
526 shadow->gref[ref_cnt] = ref;
527 shadow->seg[ref_cnt].gref = ref;
528 shadow->seg[ref_cnt].offset = (uint16_t)off;
529 shadow->seg[ref_cnt].length = (uint16_t)bytes;
562 shadow->gref[ref_cnt] = ref;
577 shadow->nr_segments = VSCSIIF_SG_GRANT | seg_grants;
579 shadow->nr_segments = (uint8_t)ref_cnt;
580 shadow->nr_grants = ref_cnt;
610 struct vscsifrnt_shadow *shadow = scsi_cmd_priv(sc);
619 shadow->sc = sc;
620 shadow->act = VSCSIIF_ACT_SCSI_CDB;
628 err = map_data_for_request(info, sc, shadow);
640 if (scsifront_do_request(info, shadow)) {
641 scsifront_gnttab_done(info, shadow);
666 struct vscsifrnt_shadow *shadow, *s = scsi_cmd_priv(sc);
672 shadow = kzalloc(sizeof(*shadow), GFP_NOIO);
673 if (!shadow)
676 shadow->act = act;
677 shadow->rslt_reset = RSLT_RESET_WAITING;
678 shadow->sc = sc;
679 shadow->ref_rqid = s->rqid;
680 init_waitqueue_head(&shadow->wq_reset);
688 if (!scsifront_do_request(info, shadow))
702 err = wait_event_interruptible(shadow->wq_reset, shadow->wait_reset);
706 err = shadow->rslt_reset;
707 scsifront_put_rqid(info, shadow->rqid);
708 kfree(shadow);
711 shadow->rslt_reset = RSLT_RESET_ERR;
722 kfree(shadow);