diff options
| author | Owen Smith <owen.smith@citrix.com> | 2010-12-22 10:05:00 -0500 |
|---|---|---|
| committer | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2011-03-08 15:07:00 -0500 |
| commit | 51de69523ffe1c17994dc2f260369f29dfdce71c (patch) | |
| tree | 8e118a1c94cf6aec4cf4a42d0510f85b6a2b669a /include/xen | |
| parent | c56eb8fb6dccb83d9fe62fd4dc00c834de9bc470 (diff) | |
xen: Union the blkif_request request specific fields
Prepare for extending the block device ring to allow request
specific fields, by moving the request specific fields for
reads, writes and barrier requests to a union member.
Acked-by: Jens Axboe <jaxboe@fusionio.com>
Signed-off-by: Owen Smith <owen.smith@citrix.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Diffstat (limited to 'include/xen')
| -rw-r--r-- | include/xen/interface/io/blkif.h | 16 |
1 files changed, 11 insertions, 5 deletions
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 */ |
