diff options
-rw-r--r-- | drivers/block/xen-blkfront.c | 8 | ||||
-rw-r--r-- | include/xen/interface/io/blkif.h | 16 |
2 files changed, 15 insertions, 9 deletions
diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c index d7aa39e349a6..cc4514c9d8a6 100644 --- a/drivers/block/xen-blkfront.c +++ b/drivers/block/xen-blkfront.c | |||
@@ -281,7 +281,7 @@ static int blkif_queue_request(struct request *req) | |||
281 | info->shadow[id].request = req; | 281 | info->shadow[id].request = req; |
282 | 282 | ||
283 | ring_req->id = id; | 283 | ring_req->id = id; |
284 | ring_req->sector_number = (blkif_sector_t)blk_rq_pos(req); | 284 | ring_req->u.rw.sector_number = (blkif_sector_t)blk_rq_pos(req); |
285 | ring_req->handle = info->handle; | 285 | ring_req->handle = info->handle; |
286 | 286 | ||
287 | ring_req->operation = rq_data_dir(req) ? | 287 | ring_req->operation = rq_data_dir(req) ? |
@@ -317,7 +317,7 @@ static int blkif_queue_request(struct request *req) | |||
317 | rq_data_dir(req) ); | 317 | rq_data_dir(req) ); |
318 | 318 | ||
319 | info->shadow[id].frame[i] = mfn_to_pfn(buffer_mfn); | 319 | info->shadow[id].frame[i] = mfn_to_pfn(buffer_mfn); |
320 | ring_req->seg[i] = | 320 | ring_req->u.rw.seg[i] = |
321 | (struct blkif_request_segment) { | 321 | (struct blkif_request_segment) { |
322 | .gref = ref, | 322 | .gref = ref, |
323 | .first_sect = fsect, | 323 | .first_sect = fsect, |
@@ -615,7 +615,7 @@ static void blkif_completion(struct blk_shadow *s) | |||
615 | { | 615 | { |
616 | int i; | 616 | int i; |
617 | for (i = 0; i < s->req.nr_segments; i++) | 617 | for (i = 0; i < s->req.nr_segments; i++) |
618 | gnttab_end_foreign_access(s->req.seg[i].gref, 0, 0UL); | 618 | gnttab_end_foreign_access(s->req.u.rw.seg[i].gref, 0, 0UL); |
619 | } | 619 | } |
620 | 620 | ||
621 | static irqreturn_t blkif_interrupt(int irq, void *dev_id) | 621 | static irqreturn_t blkif_interrupt(int irq, void *dev_id) |
@@ -932,7 +932,7 @@ static int blkif_recover(struct blkfront_info *info) | |||
932 | /* Rewrite any grant references invalidated by susp/resume. */ | 932 | /* Rewrite any grant references invalidated by susp/resume. */ |
933 | for (j = 0; j < req->nr_segments; j++) | 933 | for (j = 0; j < req->nr_segments; j++) |
934 | gnttab_grant_foreign_access_ref( | 934 | gnttab_grant_foreign_access_ref( |
935 | req->seg[j].gref, | 935 | req->u.rw.seg[j].gref, |
936 | info->xbdev->otherend_id, | 936 | info->xbdev->otherend_id, |
937 | pfn_to_mfn(info->shadow[req->id].frame[j]), | 937 | pfn_to_mfn(info->shadow[req->id].frame[j]), |
938 | rq_data_dir(info->shadow[req->id].request)); | 938 | rq_data_dir(info->shadow[req->id].request)); |
diff --git a/include/xen/interface/io/blkif.h b/include/xen/interface/io/blkif.h index c2d1fa4dc1ee..e4f743cfa151 100644 --- a/include/xen/interface/io/blkif.h +++ b/include/xen/interface/io/blkif.h | |||
@@ -51,11 +51,7 @@ typedef uint64_t blkif_sector_t; | |||
51 | */ | 51 | */ |
52 | #define BLKIF_MAX_SEGMENTS_PER_REQUEST 11 | 52 | #define BLKIF_MAX_SEGMENTS_PER_REQUEST 11 |
53 | 53 | ||
54 | struct blkif_request { | 54 | struct blkif_request_rw { |
55 | uint8_t operation; /* BLKIF_OP_??? */ | ||
56 | uint8_t nr_segments; /* number of segments */ | ||
57 | blkif_vdev_t handle; /* only for read/write requests */ | ||
58 | uint64_t id; /* private guest value, echoed in resp */ | ||
59 | blkif_sector_t sector_number;/* start sector idx on disk (r/w only) */ | 55 | blkif_sector_t sector_number;/* start sector idx on disk (r/w only) */ |
60 | struct blkif_request_segment { | 56 | struct blkif_request_segment { |
61 | grant_ref_t gref; /* reference to I/O buffer frame */ | 57 | grant_ref_t gref; /* reference to I/O buffer frame */ |
@@ -65,6 +61,16 @@ struct blkif_request { | |||
65 | } seg[BLKIF_MAX_SEGMENTS_PER_REQUEST]; | 61 | } seg[BLKIF_MAX_SEGMENTS_PER_REQUEST]; |
66 | }; | 62 | }; |
67 | 63 | ||
64 | struct blkif_request { | ||
65 | uint8_t operation; /* BLKIF_OP_??? */ | ||
66 | uint8_t nr_segments; /* number of segments */ | ||
67 | blkif_vdev_t handle; /* only for read/write requests */ | ||
68 | uint64_t id; /* private guest value, echoed in resp */ | ||
69 | union { | ||
70 | struct blkif_request_rw rw; | ||
71 | } u; | ||
72 | }; | ||
73 | |||
68 | struct blkif_response { | 74 | struct blkif_response { |
69 | uint64_t id; /* copied from request */ | 75 | uint64_t id; /* copied from request */ |
70 | uint8_t operation; /* copied from request */ | 76 | uint8_t operation; /* copied from request */ |