summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--hw/block/xen_blkif.h20
1 files changed, 18 insertions, 2 deletions
diff --git a/hw/block/xen_blkif.h b/hw/block/xen_blkif.h
index 7ccf92ec2a..0738684410 100644
--- a/hw/block/xen_blkif.h
+++ b/hw/block/xen_blkif.h
@@ -28,6 +28,14 @@ struct blkif_x86_32_request {
     blkif_sector_t sector_number;    /* start sector idx on disk (r/w only)  */
     struct blkif_request_segment seg[BLKIF_MAX_SEGMENTS_PER_REQUEST];
 };
+struct blkif_x86_32_request_discard {
+    uint8_t        operation;        /* BLKIF_OP_DISCARD                     */
+    uint8_t        flag;             /* nr_segments in request struct        */
+    blkif_vdev_t   handle;           /* only for read/write requests         */
+    uint64_t       id;               /* private guest value, echoed in resp  */
+    blkif_sector_t sector_number;    /* start sector idx on disk (r/w only)  */
+    uint64_t       nr_sectors;       /* # of contiguous sectors to discard   */
+};
 struct blkif_x86_32_response {
     uint64_t        id;              /* copied from request */
     uint8_t         operation;       /* copied from request */
@@ -46,6 +54,14 @@ struct blkif_x86_64_request {
     blkif_sector_t sector_number;    /* start sector idx on disk (r/w only)  */
     struct blkif_request_segment seg[BLKIF_MAX_SEGMENTS_PER_REQUEST];
 };
+struct blkif_x86_64_request_discard {
+    uint8_t        operation;        /* BLKIF_OP_DISCARD                     */
+    uint8_t        flag;             /* nr_segments in request struct        */
+    blkif_vdev_t   handle;           /* only for read/write requests         */
+    uint64_t       __attribute__((__aligned__(8))) id;
+    blkif_sector_t sector_number;    /* start sector idx on disk (r/w only)  */
+    uint64_t       nr_sectors;       /* # of contiguous sectors to discard   */
+};
 struct blkif_x86_64_response {
     uint64_t       __attribute__((__aligned__(8))) id;
     uint8_t         operation;       /* copied from request */
@@ -88,7 +104,7 @@ static inline void blkif_get_x86_32_req(blkif_request_t *dst,
     /* Prevent the compiler from using src->... instead. */
     barrier();
     if (dst->operation == BLKIF_OP_DISCARD) {
-        struct blkif_request_discard *s = (void *)src;
+        struct blkif_x86_32_request_discard *s = (void *)src;
         struct blkif_request_discard *d = (void *)dst;
         d->nr_sectors = s->nr_sectors;
         return;
@@ -114,7 +130,7 @@ static inline void blkif_get_x86_64_req(blkif_request_t *dst,
     /* Prevent the compiler from using src->... instead. */
     barrier();
     if (dst->operation == BLKIF_OP_DISCARD) {
-        struct blkif_request_discard *s = (void *)src;
+        struct blkif_x86_64_request_discard *s = (void *)src;
         struct blkif_request_discard *d = (void *)dst;
         d->nr_sectors = s->nr_sectors;
         return;