diff options
author | Bob Liu <bob.liu@oracle.com> | 2015-11-13 22:12:10 -0500 |
---|---|---|
committer | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2016-01-04 09:56:01 -0500 |
commit | eb5df87fab0ae7114b83dc7f338b27d039374767 (patch) | |
tree | 79db30961cabf0f9e500b6c33f3f1a4c5c29c4b7 /include/xen | |
parent | 627ccd20b4ad3ba836472468208e2ac4dfadbf03 (diff) |
xen/blkif: document blkif multi-queue/ring extension
Document the multi-queue/ring feature in terms of XenStore keys to be written by
the backend and by the frontend.
Signed-off-by: Bob Liu <bob.liu@oracle.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 | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/include/xen/interface/io/blkif.h b/include/xen/interface/io/blkif.h index c33e1c489eb2..8b8cfadf7833 100644 --- a/include/xen/interface/io/blkif.h +++ b/include/xen/interface/io/blkif.h | |||
@@ -28,6 +28,54 @@ typedef uint16_t blkif_vdev_t; | |||
28 | typedef uint64_t blkif_sector_t; | 28 | typedef uint64_t blkif_sector_t; |
29 | 29 | ||
30 | /* | 30 | /* |
31 | * Multiple hardware queues/rings: | ||
32 | * If supported, the backend will write the key "multi-queue-max-queues" to | ||
33 | * the directory for that vbd, and set its value to the maximum supported | ||
34 | * number of queues. | ||
35 | * Frontends that are aware of this feature and wish to use it can write the | ||
36 | * key "multi-queue-num-queues" with the number they wish to use, which must be | ||
37 | * greater than zero, and no more than the value reported by the backend in | ||
38 | * "multi-queue-max-queues". | ||
39 | * | ||
40 | * For frontends requesting just one queue, the usual event-channel and | ||
41 | * ring-ref keys are written as before, simplifying the backend processing | ||
42 | * to avoid distinguishing between a frontend that doesn't understand the | ||
43 | * multi-queue feature, and one that does, but requested only one queue. | ||
44 | * | ||
45 | * Frontends requesting two or more queues must not write the toplevel | ||
46 | * event-channel and ring-ref keys, instead writing those keys under sub-keys | ||
47 | * having the name "queue-N" where N is the integer ID of the queue/ring for | ||
48 | * which those keys belong. Queues are indexed from zero. | ||
49 | * For example, a frontend with two queues must write the following set of | ||
50 | * queue-related keys: | ||
51 | * | ||
52 | * /local/domain/1/device/vbd/0/multi-queue-num-queues = "2" | ||
53 | * /local/domain/1/device/vbd/0/queue-0 = "" | ||
54 | * /local/domain/1/device/vbd/0/queue-0/ring-ref = "<ring-ref#0>" | ||
55 | * /local/domain/1/device/vbd/0/queue-0/event-channel = "<evtchn#0>" | ||
56 | * /local/domain/1/device/vbd/0/queue-1 = "" | ||
57 | * /local/domain/1/device/vbd/0/queue-1/ring-ref = "<ring-ref#1>" | ||
58 | * /local/domain/1/device/vbd/0/queue-1/event-channel = "<evtchn#1>" | ||
59 | * | ||
60 | * It is also possible to use multiple queues/rings together with | ||
61 | * feature multi-page ring buffer. | ||
62 | * For example, a frontend requests two queues/rings and the size of each ring | ||
63 | * buffer is two pages must write the following set of related keys: | ||
64 | * | ||
65 | * /local/domain/1/device/vbd/0/multi-queue-num-queues = "2" | ||
66 | * /local/domain/1/device/vbd/0/ring-page-order = "1" | ||
67 | * /local/domain/1/device/vbd/0/queue-0 = "" | ||
68 | * /local/domain/1/device/vbd/0/queue-0/ring-ref0 = "<ring-ref#0>" | ||
69 | * /local/domain/1/device/vbd/0/queue-0/ring-ref1 = "<ring-ref#1>" | ||
70 | * /local/domain/1/device/vbd/0/queue-0/event-channel = "<evtchn#0>" | ||
71 | * /local/domain/1/device/vbd/0/queue-1 = "" | ||
72 | * /local/domain/1/device/vbd/0/queue-1/ring-ref0 = "<ring-ref#2>" | ||
73 | * /local/domain/1/device/vbd/0/queue-1/ring-ref1 = "<ring-ref#3>" | ||
74 | * /local/domain/1/device/vbd/0/queue-1/event-channel = "<evtchn#1>" | ||
75 | * | ||
76 | */ | ||
77 | |||
78 | /* | ||
31 | * REQUEST CODES. | 79 | * REQUEST CODES. |
32 | */ | 80 | */ |
33 | #define BLKIF_OP_READ 0 | 81 | #define BLKIF_OP_READ 0 |