Lines Matching refs:shadow

189 	struct blk_shadow shadow[];
291 rinfo->shadow_free = rinfo->shadow[free].req.u.rw.id;
292 rinfo->shadow[free].req.u.rw.id = 0x0fffffee; /* debug */
299 if (rinfo->shadow[id].req.u.rw.id != id)
301 if (rinfo->shadow[id].request == NULL)
303 rinfo->shadow[id].req.u.rw.id = rinfo->shadow_free;
304 rinfo->shadow[id].request = NULL;
555 rinfo->shadow[id].request = req;
556 rinfo->shadow[id].status = REQ_PROCESSING;
557 rinfo->shadow[id].associated_id = NO_ASSOCIATED_ID;
559 rinfo->shadow[id].req.u.rw.id = id;
572 ring_req = &rinfo->shadow[id].req;
585 rinfo->shadow[id].status = REQ_WAITING;
618 * We always use the shadow of the first request to store the list
623 struct blk_shadow *shadow = &rinfo->shadow[setup->id];
642 shadow->indirect_grants[n] = gnt_list_entry;
650 * All the grants are stored in the shadow of the first
653 shadow->grants_used[setup->grant_idx] = gnt_list_entry;
764 ring_req = &rinfo->shadow[id].req;
766 num_sg = blk_rq_map_sg(req->q, req, rinfo->shadow[id].sg);
769 for_each_sg(rinfo->shadow[id].sg, sg, num_sg, i)
776 rinfo->shadow[id].num_sg = num_sg;
817 extra_ring_req = &rinfo->shadow[extra_id].req;
823 rinfo->shadow[extra_id].num_sg = 0;
828 rinfo->shadow[extra_id].associated_id = id;
829 rinfo->shadow[id].associated_id = extra_id;
840 for_each_sg(rinfo->shadow[id].sg, sg, num_sg, i) {
862 rinfo->shadow[id].status = REQ_WAITING;
865 rinfo->shadow[extra_id].status = REQ_WAITING;
1315 if (!rinfo->shadow[i].request)
1318 segs = rinfo->shadow[i].req.operation == BLKIF_OP_INDIRECT ?
1319 rinfo->shadow[i].req.u.indirect.nr_segments :
1320 rinfo->shadow[i].req.u.rw.nr_segments;
1322 persistent_gnt = rinfo->shadow[i].grants_used[j];
1329 if (rinfo->shadow[i].req.operation != BLKIF_OP_INDIRECT)
1337 persistent_gnt = rinfo->shadow[i].indirect_grants[j];
1344 kvfree(rinfo->shadow[i].grants_used);
1345 rinfo->shadow[i].grants_used = NULL;
1346 kvfree(rinfo->shadow[i].indirect_grants);
1347 rinfo->shadow[i].indirect_grants = NULL;
1348 kvfree(rinfo->shadow[i].sg);
1349 rinfo->shadow[i].sg = NULL;
1464 struct blk_shadow *s = &rinfo->shadow[*id];
1474 struct blk_shadow *s2 = &rinfo->shadow[s->associated_id];
1476 /* Keep the status of the current response in shadow. */
1487 * All the grants is stored in the first shadow in order
1630 if (rinfo->shadow[id].status != REQ_WAITING) {
1636 rinfo->shadow[id].status = REQ_PROCESSING;
1637 req = rinfo->shadow[id].request;
1639 op = rinfo->shadow[id].req.operation;
1641 op = rinfo->shadow[id].req.u.indirect.indirect_op;
1695 rinfo->shadow[id].req.u.rw.nr_segments == 0)) {
1972 rinfo->shadow[j].req.u.rw.id = j + 1;
1973 rinfo->shadow[BLK_RING_SIZE(info)-1].req.u.rw.id = 0x0fffffff;
2011 info->rinfo_size = struct_size(info->rinfo, shadow,
2173 struct blk_shadow *shadow = rinfo->shadow;
2177 if (!shadow[j].request)
2183 if (req_op(shadow[j].request) == REQ_OP_FLUSH ||
2184 req_op(shadow[j].request) == REQ_OP_DISCARD ||
2185 req_op(shadow[j].request) == REQ_OP_SECURE_ERASE ||
2186 shadow[j].request->cmd_flags & REQ_FUA) {
2194 list_add(&shadow[j].request->queuelist, &info->requests);
2197 merge_bio.head = shadow[j].request->bio;
2198 merge_bio.tail = shadow[j].request->biotail;
2200 shadow[j].request->bio = NULL;
2201 blk_mq_end_request(shadow[j].request, BLK_STS_OK);
2318 rinfo->shadow[i].grants_used =
2320 sizeof(rinfo->shadow[i].grants_used[0]),
2322 rinfo->shadow[i].sg = kvcalloc(psegs,
2323 sizeof(rinfo->shadow[i].sg[0]),
2326 rinfo->shadow[i].indirect_grants =
2328 sizeof(rinfo->shadow[i].indirect_grants[0]),
2330 if ((rinfo->shadow[i].grants_used == NULL) ||
2331 (rinfo->shadow[i].sg == NULL) ||
2333 (rinfo->shadow[i].indirect_grants == NULL)))
2335 sg_init_table(rinfo->shadow[i].sg, psegs);
2344 kvfree(rinfo->shadow[i].grants_used);
2345 rinfo->shadow[i].grants_used = NULL;
2346 kvfree(rinfo->shadow[i].sg);
2347 rinfo->shadow[i].sg = NULL;
2348 kvfree(rinfo->shadow[i].indirect_grants);
2349 rinfo->shadow[i].indirect_grants = NULL;