@@ -125,3 +125,9 @@ because they directly map the bottom 8 bits of the xenstore integer
directly to the Linux guest's device number and throw away the rest;
they can crash due to minor number clashes. With these guests, the
workaround is not to supply problematic combinations of devices.
+
+
+Other frontend and backend options
+----------------------------------
+
+See xen/include/public/io/blkif.h for the full list of options.
@@ -178,6 +178,44 @@ information to be interpreted by the executable program <script>,
These scripts are normally called "block-<script>".
+direct-io-safe
+--------------
+
+Description: Disables non-O_DIRECT workaround
+Supported values: absent, present
+Mandatory: No
+Default value: absent (workaround may be enabled)
+
+There is a memory lifetime bug in some driver domain (dom0) kernels
+which can cause crashes when using O_DIRECT. The bug occurs due to a
+mismatch between the backend-visible lifetime of pages used for the
+Xen PV network protocol and that expected by the backend kernel's
+networking subsystem. This can cause crashes when using certain
+backends with certain underlying storage.
+
+See:
+ http://lists.xen.org/archives/html/xen-devel/2012-12/msg01154.html
+
+For this reason, (this version of) the Xen libxl toolstack disables
+O_DIRECT when using the qemu-based Xen PV backend ("qdisk").
+
+However, this workaround has performance and scaling implications, and
+it is only necessary if the underlying device is a network filesystem.
+If the underlying device is not, then it is good to disable it; that
+is what this option is for.
+
+This option simply requests that the workaround be disabled. (However,
+not all backends versions which use the workaround understand this
+option, so this is on a best effort basis.)
+
+It's important to note that if you are storing the VM disk on a
+network filesystem or a network block device (NFS or ISCSI) it might
+not be safe to use this option. Otherwise specifying it is safe and
+can give better performances.
+
+If in the future the bug is fixed properly this option will then be
+silently ignored.
+
============================================
DEPRECATED PARAMETERS, PREFIXES AND SYNTAXES
@@ -2205,6 +2205,10 @@ static void device_disk_add(libxl__egc *egc, uint32_t domid,
flexarray_append(back, disk->readwrite ? "w" : "r");
flexarray_append(back, "device-type");
flexarray_append(back, disk->is_cdrom ? "cdrom" : "disk");
+ if (disk->direct_io_safe) {
+ flexarray_append(back, "direct-io-safe");
+ flexarray_append(back, "1");
+ }
flexarray_append(front, "backend-id");
flexarray_append(front, libxl__sprintf(gc, "%d", disk->backend_domid));
@@ -95,6 +95,13 @@
#define LIBXL_HAVE_BUILDINFO_EVENT_CHANNELS 1
/*
+ * LIBXL_HAVE_DEVICE_DISK_DIRECT_IO_SAFE indicates that a
+ * 'direct_io_safe' field (of boolean type) is present in
+ * libxl_device_disk.
+ */
+#define LIBXL_HAVE_DEVICE_DISK_DIRECT_IO_SAFE 1
+
+/*
* libxl ABI compatibility
*
* The only guarantee which libxl makes regarding ABI compatibility
@@ -416,6 +416,7 @@ libxl_device_disk = Struct("device_disk", [
("removable", integer),
("readwrite", integer),
("is_cdrom", integer),
+ ("direct_io_safe", bool),
])
libxl_device_nic = Struct("device_nic", [
@@ -361,8 +361,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
*yy_cp = '\0'; \
yyg->yy_c_buf_p = yy_cp;
-#define YY_NUM_RULES 26
-#define YY_END_OF_BUFFER 27
+#define YY_NUM_RULES 27
+#define YY_END_OF_BUFFER 28
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -370,90 +370,92 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static yyconst flex_int16_t yy_acclist[454] =
+static yyconst flex_int16_t yy_acclist[470] =
{ 0,
- 25, 25, 27, 23, 24, 26, 8193, 23, 24, 26,
- 16385, 8193, 23, 26,16385, 23, 24, 26, 24, 26,
- 23, 24, 26, 23, 24, 26, 23, 24, 26, 23,
- 24, 26, 23, 24, 26, 23, 24, 26, 23, 24,
- 26, 23, 24, 26, 23, 24, 26, 23, 24, 26,
- 23, 24, 26, 23, 24, 26, 23, 24, 26, 23,
- 24, 26, 23, 24, 26, 25, 26, 26, 23, 23,
- 8193, 23, 8193, 23,16385, 8193, 23, 8193, 23, 23,
- 8214, 23,16406, 23, 23, 23, 23, 23, 23, 23,
- 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
-
- 23, 23, 25, 8193, 23, 8193, 23, 8193, 8214, 23,
- 8214, 23, 8214, 13, 23, 23, 23, 23, 23, 23,
- 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
- 23, 23, 8214, 23, 8214, 23, 8214, 13, 23, 18,
- 8214, 23,16406, 23, 23, 23, 23, 23, 23, 23,
- 8207, 8214, 23,16399,16406, 21, 8214, 23,16406, 23,
- 8206, 8214, 23,16398,16406, 23, 23, 8209, 8214, 23,
- 16401,16406, 23, 23, 23, 23, 18, 8214, 23, 18,
- 8214, 23, 18, 23, 18, 8214, 23, 3, 23, 23,
- 20, 8214, 23,16406, 23, 23, 8207, 8214, 23, 8207,
-
- 8214, 23, 8207, 23, 8207, 8214, 21, 8214, 23, 21,
- 8214, 23, 21, 23, 21, 8214, 8206, 8214, 23, 8206,
- 8214, 23, 8206, 23, 8206, 8214, 23, 8209, 8214, 23,
- 8209, 8214, 23, 8209, 23, 8209, 8214, 23, 23, 10,
- 23, 18, 8214, 23, 18, 8214, 23, 18, 8214, 18,
- 23, 18, 23, 3, 23, 23, 20, 8214, 23, 20,
- 8214, 23, 20, 23, 20, 8214, 23, 19, 8214, 23,
- 16406, 8207, 8214, 23, 8207, 8214, 23, 8207, 8214, 8207,
- 23, 8207, 21, 8214, 23, 21, 8214, 23, 21, 8214,
- 21, 23, 21, 8206, 8214, 23, 8206, 8214, 23, 8206,
-
- 8214, 8206, 23, 8206, 23, 8209, 8214, 23, 8209, 8214,
- 23, 8209, 8214, 8209, 23, 8209, 23, 23, 10, 13,
- 10, 7, 23, 23, 20, 8214, 23, 20, 8214, 23,
- 20, 8214, 20, 23, 20, 2, 19, 8214, 23, 19,
- 8214, 23, 19, 23, 19, 8214, 11, 23, 12, 10,
- 10, 13, 7, 13, 7, 8, 23, 6, 2, 13,
- 2, 19, 8214, 23, 19, 8214, 23, 19, 8214, 19,
- 23, 19, 11, 13, 11, 16, 8214, 23,16406, 12,
- 13, 12, 7, 7, 13, 8, 13, 8, 23, 6,
- 13, 6, 6, 13, 6, 13, 2, 2, 13, 11,
-
- 11, 13, 16, 8214, 23, 16, 8214, 23, 16, 23,
- 16, 8214, 12, 13, 8, 8, 13, 23, 6, 6,
- 13, 6, 6, 16, 8214, 23, 16, 8214, 23, 16,
- 8214, 16, 23, 16, 23, 6, 6, 9, 6, 5,
- 6, 9, 13, 9, 4, 6, 5, 6, 9, 9,
- 13, 4, 6
+ 26, 26, 28, 24, 25, 27, 8193, 24, 25, 27,
+ 16385, 8193, 24, 27,16385, 24, 25, 27, 25, 27,
+ 24, 25, 27, 24, 25, 27, 24, 25, 27, 24,
+ 25, 27, 24, 25, 27, 24, 25, 27, 24, 25,
+ 27, 24, 25, 27, 24, 25, 27, 24, 25, 27,
+ 24, 25, 27, 24, 25, 27, 24, 25, 27, 24,
+ 25, 27, 24, 25, 27, 26, 27, 27, 24, 24,
+ 8193, 24, 8193, 24,16385, 8193, 24, 8193, 24, 24,
+ 8215, 24,16407, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+
+ 24, 24, 24, 26, 8193, 24, 8193, 24, 8193, 8215,
+ 24, 8215, 24, 8215, 14, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 8215, 24, 8215, 24, 8215, 14,
+ 24, 19, 8215, 24,16407, 24, 24, 24, 24, 24,
+ 24, 24, 24, 8208, 8215, 24,16400,16407, 22, 8215,
+ 24,16407, 24, 8207, 8215, 24,16399,16407, 24, 24,
+ 8210, 8215, 24,16402,16407, 24, 24, 24, 24, 19,
+ 8215, 24, 19, 8215, 24, 19, 24, 19, 8215, 24,
+ 3, 24, 24, 24, 21, 8215, 24,16407, 24, 24,
+
+ 8208, 8215, 24, 8208, 8215, 24, 8208, 24, 8208, 8215,
+ 22, 8215, 24, 22, 8215, 24, 22, 24, 22, 8215,
+ 8207, 8215, 24, 8207, 8215, 24, 8207, 24, 8207, 8215,
+ 24, 8210, 8215, 24, 8210, 8215, 24, 8210, 24, 8210,
+ 8215, 24, 24, 10, 24, 19, 8215, 24, 19, 8215,
+ 24, 19, 8215, 19, 24, 19, 24, 3, 24, 24,
+ 24, 21, 8215, 24, 21, 8215, 24, 21, 24, 21,
+ 8215, 24, 20, 8215, 24,16407, 8208, 8215, 24, 8208,
+ 8215, 24, 8208, 8215, 8208, 24, 8208, 22, 8215, 24,
+ 22, 8215, 24, 22, 8215, 22, 24, 22, 8207, 8215,
+
+ 24, 8207, 8215, 24, 8207, 8215, 8207, 24, 8207, 24,
+ 8210, 8215, 24, 8210, 8215, 24, 8210, 8215, 8210, 24,
+ 8210, 24, 24, 10, 14, 10, 7, 24, 24, 24,
+ 21, 8215, 24, 21, 8215, 24, 21, 8215, 21, 24,
+ 21, 2, 20, 8215, 24, 20, 8215, 24, 20, 24,
+ 20, 8215, 11, 24, 13, 10, 10, 14, 7, 14,
+ 7, 8, 24, 6, 24, 2, 14, 2, 20, 8215,
+ 24, 20, 8215, 24, 20, 8215, 20, 24, 20, 11,
+ 14, 11, 17, 8215, 24,16407, 13, 14, 13, 7,
+ 7, 14, 8, 14, 8, 24, 6, 14, 6, 6,
+
+ 14, 6, 14, 24, 2, 2, 14, 11, 11, 14,
+ 17, 8215, 24, 17, 8215, 24, 17, 24, 17, 8215,
+ 13, 14, 8, 8, 14, 24, 6, 6, 14, 6,
+ 6, 24, 17, 8215, 24, 17, 8215, 24, 17, 8215,
+ 17, 24, 17, 24, 6, 6, 24, 9, 6, 5,
+ 6, 24, 9, 14, 9, 4, 6, 5, 6, 24,
+ 9, 9, 14, 4, 6, 12, 24, 12, 24
} ;
-static yyconst flex_int16_t yy_accept[257] =
+static yyconst flex_int16_t yy_accept[271] =
{ 0,
1, 1, 1, 2, 3, 4, 7, 12, 16, 19,
21, 24, 27, 30, 33, 36, 39, 42, 45, 48,
51, 54, 57, 60, 63, 66, 68, 69, 70, 71,
73, 76, 78, 79, 80, 81, 84, 84, 85, 86,
87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 106, 108,
- 109, 111, 113, 114, 115, 116, 117, 118, 119, 120,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 107,
+ 109, 110, 112, 114, 115, 116, 117, 118, 119, 120,
121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 135, 137, 138, 139, 140, 144, 145,
- 146, 147, 148, 149, 150, 151, 156, 160, 161, 166,
-
- 167, 168, 173, 174, 175, 176, 177, 180, 183, 185,
- 187, 188, 190, 191, 195, 196, 197, 200, 203, 205,
- 207, 210, 213, 215, 217, 220, 223, 225, 227, 228,
- 231, 234, 236, 238, 239, 240, 241, 242, 245, 248,
- 250, 252, 253, 254, 256, 257, 260, 263, 265, 267,
- 268, 272, 275, 278, 280, 282, 283, 286, 289, 291,
- 293, 294, 297, 300, 302, 304, 305, 306, 309, 312,
- 314, 316, 317, 318, 319, 321, 322, 323, 324, 325,
- 328, 331, 333, 335, 336, 337, 340, 343, 345, 347,
- 348, 349, 350, 351, 353, 355, 356, 357, 358, 359,
-
- 361, 362, 365, 368, 370, 372, 373, 375, 376, 380,
- 382, 383, 384, 386, 388, 389, 390, 392, 393, 395,
- 397, 398, 400, 401, 403, 406, 409, 411, 413, 415,
- 416, 418, 419, 420, 422, 423, 424, 427, 430, 432,
- 434, 435, 436, 437, 438, 439, 440, 442, 444, 445,
- 447, 449, 450, 452, 454, 454
+ 131, 132, 133, 134, 135, 137, 139, 140, 141, 142,
+ 146, 147, 148, 149, 150, 151, 152, 153, 154, 159,
+
+ 163, 164, 169, 170, 171, 176, 177, 178, 179, 180,
+ 183, 186, 188, 190, 191, 193, 194, 195, 199, 200,
+ 201, 204, 207, 209, 211, 214, 217, 219, 221, 224,
+ 227, 229, 231, 232, 235, 238, 240, 242, 243, 244,
+ 245, 246, 249, 252, 254, 256, 257, 258, 260, 261,
+ 262, 265, 268, 270, 272, 273, 277, 280, 283, 285,
+ 287, 288, 291, 294, 296, 298, 299, 302, 305, 307,
+ 309, 310, 311, 314, 317, 319, 321, 322, 323, 324,
+ 326, 327, 328, 329, 330, 331, 334, 337, 339, 341,
+ 342, 343, 346, 349, 351, 353, 354, 355, 356, 357,
+
+ 359, 361, 362, 363, 364, 365, 366, 368, 369, 372,
+ 375, 377, 379, 380, 382, 383, 387, 389, 390, 391,
+ 393, 395, 396, 397, 399, 400, 402, 404, 405, 406,
+ 408, 409, 411, 414, 417, 419, 421, 423, 424, 426,
+ 427, 428, 430, 431, 432, 433, 436, 439, 441, 443,
+ 444, 445, 446, 447, 448, 449, 450, 452, 453, 455,
+ 456, 458, 460, 461, 462, 464, 466, 468, 470, 470
} ;
static yyconst flex_int32_t yy_ec[256] =
@@ -496,244 +498,252 @@ static yyconst flex_int32_t yy_meta[34] =
1, 1, 1
} ;
-static yyconst flex_int16_t yy_base[315] =
+static yyconst flex_int16_t yy_base[329] =
{ 0,
- 0, 0, 563, 559, 558, 546, 32, 35, 665, 665,
- 44, 62, 30, 41, 50, 51, 532, 64, 47, 66,
- 67, 524, 68, 516, 72, 0, 665, 514, 665, 87,
- 91, 0, 0, 100, 500, 109, 0, 74, 95, 87,
- 32, 96, 105, 110, 77, 97, 40, 113, 116, 112,
- 118, 120, 121, 122, 123, 125, 0, 137, 0, 0,
- 147, 0, 0, 494, 129, 126, 134, 143, 145, 147,
- 148, 149, 151, 153, 156, 160, 155, 167, 162, 175,
- 168, 159, 188, 0, 0, 665, 166, 197, 179, 185,
- 176, 200, 460, 186, 193, 216, 225, 205, 234, 221,
-
- 237, 247, 204, 230, 244, 213, 254, 0, 256, 0,
- 251, 258, 254, 279, 256, 259, 267, 0, 269, 0,
- 286, 0, 288, 0, 290, 0, 297, 0, 267, 299,
- 0, 301, 0, 288, 297, 459, 302, 310, 0, 0,
- 0, 0, 305, 665, 307, 319, 0, 321, 0, 322,
- 332, 335, 0, 0, 0, 0, 339, 0, 0, 0,
- 0, 342, 0, 0, 0, 0, 340, 349, 0, 0,
- 0, 0, 337, 345, 450, 665, 442, 350, 352, 360,
- 0, 0, 0, 0, 424, 362, 0, 364, 0, 420,
- 319, 371, 419, 665, 418, 665, 417, 276, 368, 416,
-
- 665, 373, 0, 0, 0, 0, 415, 665, 382, 414,
- 0, 413, 665, 412, 665, 368, 411, 665, 384, 352,
- 410, 665, 409, 665, 391, 0, 395, 0, 0, 405,
- 665, 382, 316, 665, 385, 397, 399, 0, 0, 0,
- 0, 396, 403, 406, 271, 407, 228, 200, 665, 175,
- 665, 77, 665, 665, 665, 429, 433, 436, 440, 444,
- 448, 452, 456, 460, 464, 468, 472, 476, 480, 484,
- 488, 492, 496, 500, 504, 508, 512, 516, 520, 524,
- 528, 532, 536, 540, 544, 548, 552, 556, 560, 564,
- 568, 572, 576, 580, 584, 588, 592, 596, 600, 604,
-
- 608, 612, 616, 620, 624, 628, 632, 636, 640, 644,
- 648, 652, 656, 660
+ 0, 0, 673, 657, 648, 616, 32, 35, 691, 691,
+ 44, 62, 30, 41, 50, 51, 598, 64, 47, 66,
+ 67, 586, 68, 582, 72, 0, 691, 584, 691, 87,
+ 91, 0, 0, 100, 574, 109, 0, 74, 95, 87,
+ 71, 96, 97, 105, 110, 112, 113, 40, 116, 119,
+ 115, 120, 121, 124, 125, 127, 126, 0, 151, 0,
+ 0, 153, 0, 0, 572, 128, 135, 139, 137, 136,
+ 153, 156, 154, 148, 161, 162, 165, 166, 167, 170,
+ 169, 178, 179, 171, 189, 0, 0, 691, 172, 202,
+ 187, 174, 184, 202, 205, 558, 198, 206, 228, 237,
+
+ 211, 246, 210, 215, 255, 216, 251, 234, 199, 263,
+ 0, 265, 0, 252, 266, 261, 263, 292, 269, 270,
+ 278, 0, 280, 0, 299, 0, 301, 0, 303, 0,
+ 310, 0, 280, 312, 0, 314, 0, 301, 310, 556,
+ 243, 321, 0, 0, 0, 0, 275, 691, 312, 322,
+ 331, 0, 333, 0, 334, 344, 347, 0, 0, 0,
+ 0, 351, 0, 0, 0, 0, 354, 0, 0, 0,
+ 0, 352, 361, 0, 0, 0, 0, 318, 357, 548,
+ 691, 540, 359, 362, 388, 370, 0, 0, 0, 0,
+ 532, 372, 0, 374, 0, 520, 323, 381, 492, 691,
+
+ 485, 691, 476, 349, 382, 369, 468, 691, 395, 0,
+ 0, 0, 0, 449, 691, 406, 448, 0, 447, 691,
+ 446, 691, 391, 444, 691, 399, 273, 395, 442, 691,
+ 438, 691, 414, 0, 416, 0, 0, 398, 691, 412,
+ 376, 691, 401, 417, 406, 426, 0, 0, 0, 0,
+ 422, 423, 429, 426, 337, 433, 295, 423, 218, 691,
+ 83, 691, 425, 38, 691, 691, 436, 691, 691, 455,
+ 459, 462, 466, 470, 474, 478, 482, 486, 490, 494,
+ 498, 502, 506, 510, 514, 518, 522, 526, 530, 534,
+ 538, 542, 546, 550, 554, 558, 562, 566, 570, 574,
+
+ 578, 582, 586, 590, 594, 598, 602, 606, 610, 614,
+ 618, 622, 626, 630, 634, 638, 642, 646, 650, 654,
+ 658, 662, 666, 670, 674, 678, 682, 686
} ;
-static yyconst flex_int16_t yy_def[315] =
+static yyconst flex_int16_t yy_def[329] =
{ 0,
- 255, 1, 256, 256, 255, 257, 258, 258, 255, 255,
- 259, 259, 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 260, 255, 257, 255, 261,
- 258, 262, 262, 263, 12, 257, 264, 12, 12, 12,
+ 269, 1, 270, 270, 269, 271, 272, 272, 269, 269,
+ 273, 273, 12, 12, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 274, 269, 271, 269, 275,
+ 272, 276, 276, 277, 12, 271, 278, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 12, 12, 12, 12, 260, 261, 262, 262,
- 265, 266, 266, 255, 12, 12, 12, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12, 274, 275, 276,
+ 276, 279, 280, 280, 269, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
- 12, 12, 265, 266, 266, 255, 12, 267, 12, 12,
- 12, 12, 12, 12, 12, 268, 269, 12, 270, 12,
-
- 12, 271, 12, 12, 12, 12, 272, 273, 267, 273,
- 12, 12, 12, 274, 12, 12, 275, 276, 268, 276,
- 277, 278, 269, 278, 279, 280, 270, 280, 12, 281,
- 282, 271, 282, 12, 12, 283, 12, 272, 273, 273,
- 284, 284, 12, 255, 12, 285, 286, 274, 286, 12,
- 287, 275, 276, 276, 288, 288, 277, 278, 278, 289,
- 289, 279, 280, 280, 290, 290, 12, 281, 282, 282,
- 291, 291, 12, 12, 292, 255, 293, 12, 12, 285,
- 286, 286, 294, 294, 295, 296, 297, 287, 297, 298,
- 12, 299, 292, 255, 300, 255, 301, 12, 302, 303,
-
- 255, 296, 297, 297, 304, 304, 305, 255, 306, 307,
- 307, 300, 255, 308, 255, 12, 309, 255, 309, 309,
- 303, 255, 305, 255, 310, 311, 306, 311, 307, 308,
- 255, 12, 309, 255, 309, 309, 310, 311, 311, 312,
- 312, 12, 309, 309, 313, 309, 309, 314, 255, 309,
- 255, 314, 255, 255, 0, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
-
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255
+ 12, 12, 12, 12, 279, 280, 280, 269, 12, 281,
+ 12, 12, 12, 12, 12, 12, 12, 12, 282, 283,
+
+ 12, 284, 12, 12, 285, 12, 12, 12, 12, 286,
+ 287, 281, 287, 12, 12, 12, 12, 288, 12, 12,
+ 289, 290, 282, 290, 291, 292, 283, 292, 293, 294,
+ 284, 294, 12, 295, 296, 285, 296, 12, 12, 297,
+ 12, 286, 287, 287, 298, 298, 12, 269, 12, 12,
+ 299, 300, 288, 300, 12, 301, 289, 290, 290, 302,
+ 302, 291, 292, 292, 303, 303, 293, 294, 294, 304,
+ 304, 12, 295, 296, 296, 305, 305, 12, 12, 306,
+ 269, 307, 12, 12, 277, 299, 300, 300, 308, 308,
+ 309, 310, 311, 301, 311, 312, 12, 313, 306, 269,
+
+ 314, 269, 315, 12, 316, 185, 317, 269, 310, 311,
+ 311, 318, 318, 319, 269, 320, 321, 321, 314, 269,
+ 322, 269, 12, 323, 269, 323, 323, 185, 317, 269,
+ 319, 269, 324, 325, 320, 325, 321, 322, 269, 12,
+ 323, 269, 323, 323, 185, 324, 325, 325, 326, 326,
+ 12, 323, 323, 185, 327, 323, 323, 185, 328, 269,
+ 323, 269, 185, 328, 269, 269, 185, 269, 0, 269,
+ 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
+ 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
+ 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
+
+ 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
+ 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
+ 269, 269, 269, 269, 269, 269, 269, 269
} ;
-static yyconst flex_int16_t yy_nxt[699] =
+static yyconst flex_int16_t yy_nxt[725] =
{ 0,
6, 7, 8, 9, 6, 6, 6, 6, 10, 11,
12, 13, 14, 15, 16, 17, 17, 18, 17, 17,
17, 17, 19, 17, 20, 21, 22, 23, 24, 17,
25, 17, 17, 31, 31, 32, 31, 31, 32, 35,
- 33, 35, 41, 33, 28, 28, 28, 29, 34, 35,
- 35, 36, 37, 73, 42, 38, 35, 49, 68, 35,
- 35, 39, 28, 28, 28, 29, 34, 43, 45, 36,
- 37, 40, 44, 35, 46, 35, 35, 35, 51, 53,
- 249, 35, 50, 35, 55, 65, 35, 47, 56, 28,
- 59, 48, 31, 31, 32, 60, 35, 71, 67, 33,
-
- 28, 28, 28, 29, 35, 35, 35, 28, 37, 61,
- 61, 61, 62, 61, 35, 70, 61, 63, 66, 35,
- 49, 35, 35, 72, 74, 35, 69, 35, 75, 35,
- 35, 35, 35, 88, 35, 35, 82, 78, 35, 28,
- 59, 77, 87, 35, 76, 60, 80, 79, 81, 28,
- 84, 78, 35, 89, 35, 85, 35, 35, 35, 75,
- 35, 92, 35, 96, 35, 35, 90, 97, 35, 35,
- 93, 35, 94, 91, 99, 35, 35, 35, 254, 100,
- 95, 101, 102, 104, 35, 35, 98, 103, 35, 105,
- 28, 84, 111, 106, 35, 35, 85, 107, 107, 61,
-
- 108, 107, 35, 253, 107, 110, 112, 114, 113, 35,
- 75, 78, 99, 35, 35, 116, 117, 117, 61, 118,
- 117, 134, 35, 117, 120, 121, 121, 61, 122, 121,
- 35, 251, 121, 124, 125, 125, 61, 126, 125, 35,
- 137, 125, 128, 135, 102, 129, 35, 130, 130, 61,
- 131, 130, 136, 35, 130, 133, 28, 139, 28, 141,
- 35, 144, 140, 35, 142, 35, 151, 35, 35, 28,
- 153, 28, 155, 143, 249, 154, 35, 156, 145, 146,
- 146, 61, 147, 146, 150, 35, 146, 149, 28, 158,
- 28, 160, 28, 163, 159, 167, 161, 35, 164, 28,
-
- 165, 28, 169, 28, 171, 166, 35, 170, 216, 172,
- 177, 35, 28, 139, 35, 173, 35, 178, 140, 218,
- 179, 28, 181, 28, 183, 174, 209, 182, 35, 184,
- 185, 35, 186, 186, 61, 187, 186, 28, 153, 186,
- 189, 28, 158, 154, 28, 163, 35, 159, 190, 35,
- 164, 28, 169, 192, 35, 234, 191, 170, 197, 35,
- 199, 35, 28, 181, 28, 203, 28, 205, 182, 236,
- 204, 218, 206, 64, 211, 28, 203, 35, 198, 219,
- 220, 204, 225, 225, 61, 226, 225, 234, 218, 225,
- 228, 35, 232, 28, 238, 242, 235, 28, 240, 239,
-
- 218, 28, 238, 241, 245, 35, 218, 239, 215, 218,
- 218, 243, 208, 201, 234, 231, 196, 229, 224, 222,
- 215, 213, 176, 208, 244, 247, 246, 201, 250, 26,
- 26, 26, 26, 28, 28, 28, 30, 30, 30, 30,
- 35, 35, 35, 35, 57, 196, 57, 57, 58, 58,
- 58, 58, 60, 194, 60, 60, 34, 34, 34, 34,
- 64, 64, 176, 64, 83, 83, 83, 83, 85, 115,
- 85, 85, 109, 109, 109, 109, 119, 119, 119, 119,
- 123, 123, 123, 123, 127, 127, 127, 127, 132, 132,
- 132, 132, 138, 138, 138, 138, 140, 86, 140, 140,
-
- 148, 148, 148, 148, 152, 152, 152, 152, 154, 35,
- 154, 154, 157, 157, 157, 157, 159, 29, 159, 159,
- 162, 162, 162, 162, 164, 54, 164, 164, 168, 168,
- 168, 168, 170, 52, 170, 170, 175, 175, 175, 175,
- 142, 35, 142, 142, 180, 180, 180, 180, 182, 29,
- 182, 182, 188, 188, 188, 188, 156, 255, 156, 156,
- 161, 27, 161, 161, 166, 27, 166, 166, 172, 255,
- 172, 172, 193, 193, 193, 193, 195, 195, 195, 195,
- 184, 255, 184, 184, 200, 200, 200, 200, 202, 202,
- 202, 202, 204, 255, 204, 204, 207, 207, 207, 207,
-
- 210, 210, 210, 210, 212, 212, 212, 212, 214, 214,
- 214, 214, 217, 217, 217, 217, 221, 221, 221, 221,
- 206, 255, 206, 206, 223, 223, 223, 223, 227, 227,
- 227, 227, 211, 255, 211, 211, 230, 230, 230, 230,
- 233, 233, 233, 233, 237, 237, 237, 237, 239, 255,
- 239, 239, 241, 255, 241, 241, 248, 248, 248, 248,
- 252, 252, 252, 252, 5, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255
-
+ 33, 260, 41, 33, 28, 28, 28, 29, 34, 35,
+ 35, 36, 37, 75, 42, 38, 35, 50, 43, 35,
+ 35, 39, 28, 28, 28, 29, 34, 44, 46, 36,
+ 37, 40, 45, 35, 47, 35, 35, 35, 52, 54,
+ 35, 35, 51, 35, 56, 66, 266, 48, 57, 28,
+ 60, 49, 31, 31, 32, 61, 35, 69, 68, 33,
+
+ 28, 28, 28, 29, 35, 35, 35, 28, 37, 62,
+ 62, 62, 63, 62, 35, 72, 62, 64, 67, 35,
+ 50, 35, 35, 71, 35, 35, 70, 76, 35, 35,
+ 35, 77, 73, 35, 35, 35, 35, 35, 80, 74,
+ 84, 89, 90, 79, 35, 35, 35, 78, 35, 82,
+ 81, 83, 80, 28, 60, 28, 86, 35, 91, 61,
+ 92, 87, 35, 35, 93, 35, 94, 95, 77, 96,
+ 35, 35, 99, 100, 35, 35, 35, 102, 35, 35,
+ 35, 35, 97, 35, 104, 105, 103, 35, 35, 98,
+ 106, 28, 86, 35, 107, 115, 35, 87, 101, 109,
+
+ 114, 108, 110, 110, 62, 111, 110, 35, 35, 110,
+ 113, 35, 118, 117, 35, 35, 116, 80, 102, 35,
+ 35, 265, 105, 77, 35, 35, 141, 120, 121, 121,
+ 62, 122, 121, 138, 133, 121, 124, 125, 125, 62,
+ 126, 125, 140, 35, 125, 128, 129, 129, 62, 130,
+ 129, 182, 35, 129, 132, 134, 134, 62, 135, 134,
+ 35, 35, 134, 137, 139, 28, 143, 28, 145, 148,
+ 35, 144, 35, 146, 147, 35, 242, 156, 35, 35,
+ 28, 158, 28, 160, 35, 149, 159, 183, 161, 35,
+ 244, 150, 151, 151, 62, 152, 151, 155, 262, 151,
+
+ 154, 28, 163, 28, 165, 28, 168, 164, 172, 166,
+ 35, 169, 28, 170, 28, 174, 28, 176, 171, 35,
+ 175, 35, 177, 28, 143, 184, 185, 35, 178, 144,
+ 216, 35, 35, 28, 187, 28, 189, 197, 179, 188,
+ 260, 190, 191, 35, 192, 192, 62, 193, 192, 28,
+ 158, 192, 195, 28, 163, 159, 28, 168, 35, 164,
+ 196, 35, 169, 28, 174, 198, 35, 203, 35, 175,
+ 205, 35, 28, 187, 28, 210, 28, 212, 188, 225,
+ 211, 223, 213, 65, 218, 225, 34, 204, 28, 28,
+ 28, 29, 228, 226, 227, 28, 37, 28, 210, 245,
+
+ 35, 222, 242, 211, 225, 206, 233, 233, 62, 234,
+ 233, 243, 34, 233, 236, 240, 28, 247, 28, 249,
+ 225, 35, 248, 34, 250, 251, 225, 252, 28, 247,
+ 255, 35, 225, 254, 248, 258, 225, 263, 267, 268,
+ 34, 215, 34, 34, 253, 208, 256, 242, 257, 239,
+ 202, 237, 232, 34, 261, 26, 26, 26, 26, 28,
+ 28, 28, 30, 30, 30, 30, 35, 35, 35, 35,
+ 58, 230, 58, 58, 59, 59, 59, 59, 61, 222,
+ 61, 61, 34, 34, 34, 34, 65, 65, 220, 65,
+ 85, 85, 85, 85, 87, 181, 87, 87, 112, 112,
+
+ 112, 112, 123, 123, 123, 123, 127, 127, 127, 127,
+ 131, 131, 131, 131, 136, 136, 136, 136, 142, 142,
+ 142, 142, 144, 215, 144, 144, 153, 153, 153, 153,
+ 157, 157, 157, 157, 159, 208, 159, 159, 162, 162,
+ 162, 162, 164, 202, 164, 164, 167, 167, 167, 167,
+ 169, 200, 169, 169, 173, 173, 173, 173, 175, 181,
+ 175, 175, 180, 180, 180, 180, 146, 119, 146, 146,
+ 186, 186, 186, 186, 188, 88, 188, 188, 194, 194,
+ 194, 194, 161, 35, 161, 161, 166, 29, 166, 166,
+ 171, 55, 171, 171, 177, 53, 177, 177, 199, 199,
+
+ 199, 199, 201, 201, 201, 201, 190, 35, 190, 190,
+ 207, 207, 207, 207, 209, 209, 209, 209, 211, 29,
+ 211, 211, 214, 214, 214, 214, 217, 217, 217, 217,
+ 219, 219, 219, 219, 221, 221, 221, 221, 224, 224,
+ 224, 224, 229, 229, 229, 229, 213, 269, 213, 213,
+ 231, 231, 231, 231, 235, 235, 235, 235, 218, 27,
+ 218, 218, 238, 238, 238, 238, 241, 241, 241, 241,
+ 246, 246, 246, 246, 248, 27, 248, 248, 250, 269,
+ 250, 250, 259, 259, 259, 259, 264, 264, 264, 264,
+ 5, 269, 269, 269, 269, 269, 269, 269, 269, 269,
+
+ 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
+ 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
+ 269, 269, 269, 269
} ;
-static yyconst flex_int16_t yy_chk[699] =
+static yyconst flex_int16_t yy_chk[725] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 7, 7, 7, 8, 8, 8, 13,
- 7, 41, 13, 8, 11, 11, 11, 11, 11, 47,
- 14, 11, 11, 47, 14, 11, 19, 19, 41, 15,
+ 7, 264, 13, 8, 11, 11, 11, 11, 11, 48,
+ 14, 11, 11, 48, 14, 11, 19, 19, 14, 15,
16, 11, 12, 12, 12, 12, 12, 14, 16, 12,
12, 12, 15, 18, 16, 20, 21, 23, 21, 23,
- 252, 25, 20, 38, 25, 38, 45, 18, 25, 30,
- 30, 18, 31, 31, 31, 30, 40, 45, 40, 31,
-
- 34, 34, 34, 34, 39, 42, 46, 34, 34, 36,
- 36, 36, 36, 36, 43, 43, 36, 36, 39, 44,
- 44, 50, 48, 46, 48, 49, 42, 51, 49, 52,
- 53, 54, 55, 66, 56, 66, 55, 56, 65, 58,
- 58, 51, 65, 67, 50, 58, 54, 53, 54, 61,
- 61, 52, 68, 67, 69, 61, 70, 71, 72, 70,
- 73, 71, 74, 75, 77, 75, 68, 76, 82, 76,
- 72, 79, 73, 69, 78, 87, 78, 81, 250, 79,
- 74, 80, 80, 81, 80, 91, 77, 80, 89, 82,
- 83, 83, 89, 87, 90, 94, 83, 88, 88, 88,
-
- 88, 88, 95, 248, 88, 88, 90, 92, 91, 92,
- 95, 98, 98, 103, 98, 94, 96, 96, 96, 96,
- 96, 103, 106, 96, 96, 97, 97, 97, 97, 97,
- 100, 247, 97, 97, 99, 99, 99, 99, 99, 104,
- 106, 99, 99, 104, 101, 100, 101, 102, 102, 102,
- 102, 102, 105, 105, 102, 102, 107, 107, 109, 109,
- 111, 112, 107, 113, 109, 115, 116, 112, 116, 117,
- 117, 119, 119, 111, 245, 117, 129, 119, 113, 114,
- 114, 114, 114, 114, 115, 198, 114, 114, 121, 121,
- 123, 123, 125, 125, 121, 129, 123, 134, 125, 127,
-
- 127, 130, 130, 132, 132, 127, 135, 130, 198, 132,
- 137, 137, 138, 138, 143, 134, 145, 143, 138, 233,
- 145, 146, 146, 148, 148, 135, 191, 146, 191, 148,
- 150, 150, 151, 151, 151, 151, 151, 152, 152, 151,
- 151, 157, 157, 152, 162, 162, 173, 157, 167, 167,
- 162, 168, 168, 174, 174, 220, 173, 168, 178, 178,
- 179, 179, 180, 180, 186, 186, 188, 188, 180, 220,
- 186, 199, 188, 192, 192, 202, 202, 216, 178, 199,
- 199, 202, 209, 209, 209, 209, 209, 219, 235, 209,
- 209, 232, 216, 225, 225, 232, 219, 227, 227, 225,
-
- 236, 237, 237, 227, 242, 242, 243, 237, 230, 244,
- 246, 235, 223, 221, 217, 214, 212, 210, 207, 200,
- 197, 195, 193, 190, 236, 244, 243, 185, 246, 256,
- 256, 256, 256, 257, 257, 257, 258, 258, 258, 258,
- 259, 259, 259, 259, 260, 177, 260, 260, 261, 261,
- 261, 261, 262, 175, 262, 262, 263, 263, 263, 263,
- 264, 264, 136, 264, 265, 265, 265, 265, 266, 93,
- 266, 266, 267, 267, 267, 267, 268, 268, 268, 268,
- 269, 269, 269, 269, 270, 270, 270, 270, 271, 271,
- 271, 271, 272, 272, 272, 272, 273, 64, 273, 273,
-
- 274, 274, 274, 274, 275, 275, 275, 275, 276, 35,
- 276, 276, 277, 277, 277, 277, 278, 28, 278, 278,
- 279, 279, 279, 279, 280, 24, 280, 280, 281, 281,
- 281, 281, 282, 22, 282, 282, 283, 283, 283, 283,
- 284, 17, 284, 284, 285, 285, 285, 285, 286, 6,
- 286, 286, 287, 287, 287, 287, 288, 5, 288, 288,
- 289, 4, 289, 289, 290, 3, 290, 290, 291, 0,
- 291, 291, 292, 292, 292, 292, 293, 293, 293, 293,
- 294, 0, 294, 294, 295, 295, 295, 295, 296, 296,
- 296, 296, 297, 0, 297, 297, 298, 298, 298, 298,
-
- 299, 299, 299, 299, 300, 300, 300, 300, 301, 301,
- 301, 301, 302, 302, 302, 302, 303, 303, 303, 303,
- 304, 0, 304, 304, 305, 305, 305, 305, 306, 306,
- 306, 306, 307, 0, 307, 307, 308, 308, 308, 308,
- 309, 309, 309, 309, 310, 310, 310, 310, 311, 0,
- 311, 311, 312, 0, 312, 312, 313, 313, 313, 313,
- 314, 314, 314, 314, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255
-
+ 41, 25, 20, 38, 25, 38, 261, 18, 25, 30,
+ 30, 18, 31, 31, 31, 30, 40, 41, 40, 31,
+
+ 34, 34, 34, 34, 39, 42, 43, 34, 34, 36,
+ 36, 36, 36, 36, 44, 44, 36, 36, 39, 45,
+ 45, 46, 47, 43, 51, 49, 42, 49, 50, 52,
+ 53, 50, 46, 54, 55, 57, 56, 66, 57, 47,
+ 56, 66, 67, 52, 67, 70, 69, 51, 68, 55,
+ 54, 55, 53, 59, 59, 62, 62, 74, 68, 59,
+ 69, 62, 71, 73, 70, 72, 71, 73, 72, 74,
+ 75, 76, 77, 78, 77, 78, 79, 80, 81, 80,
+ 84, 89, 75, 92, 82, 82, 81, 82, 83, 76,
+ 82, 85, 85, 93, 83, 92, 91, 85, 79, 89,
+
+ 91, 84, 90, 90, 90, 90, 90, 97, 109, 90,
+ 90, 94, 95, 94, 95, 98, 93, 101, 101, 103,
+ 101, 259, 104, 98, 104, 106, 109, 97, 99, 99,
+ 99, 99, 99, 106, 103, 99, 99, 100, 100, 100,
+ 100, 100, 108, 108, 100, 100, 102, 102, 102, 102,
+ 102, 141, 141, 102, 102, 105, 105, 105, 105, 105,
+ 107, 114, 105, 105, 107, 110, 110, 112, 112, 115,
+ 116, 110, 117, 112, 114, 115, 227, 120, 119, 120,
+ 121, 121, 123, 123, 147, 116, 121, 147, 123, 133,
+ 227, 117, 118, 118, 118, 118, 118, 119, 257, 118,
+
+ 118, 125, 125, 127, 127, 129, 129, 125, 133, 127,
+ 138, 129, 131, 131, 134, 134, 136, 136, 131, 139,
+ 134, 149, 136, 142, 142, 149, 150, 178, 138, 142,
+ 197, 150, 197, 151, 151, 153, 153, 178, 139, 151,
+ 255, 153, 155, 155, 156, 156, 156, 156, 156, 157,
+ 157, 156, 156, 162, 162, 157, 167, 167, 204, 162,
+ 172, 172, 167, 173, 173, 179, 179, 183, 183, 173,
+ 184, 184, 186, 186, 192, 192, 194, 194, 186, 241,
+ 192, 204, 194, 198, 198, 205, 206, 183, 185, 185,
+ 185, 185, 206, 205, 205, 185, 185, 209, 209, 228,
+
+ 223, 238, 226, 209, 243, 185, 216, 216, 216, 216,
+ 216, 226, 228, 216, 216, 223, 233, 233, 235, 235,
+ 244, 240, 233, 245, 235, 240, 252, 243, 246, 246,
+ 251, 251, 253, 245, 246, 254, 256, 258, 263, 267,
+ 258, 231, 263, 254, 244, 229, 252, 224, 253, 221,
+ 219, 217, 214, 267, 256, 270, 270, 270, 270, 271,
+ 271, 271, 272, 272, 272, 272, 273, 273, 273, 273,
+ 274, 207, 274, 274, 275, 275, 275, 275, 276, 203,
+ 276, 276, 277, 277, 277, 277, 278, 278, 201, 278,
+ 279, 279, 279, 279, 280, 199, 280, 280, 281, 281,
+
+ 281, 281, 282, 282, 282, 282, 283, 283, 283, 283,
+ 284, 284, 284, 284, 285, 285, 285, 285, 286, 286,
+ 286, 286, 287, 196, 287, 287, 288, 288, 288, 288,
+ 289, 289, 289, 289, 290, 191, 290, 290, 291, 291,
+ 291, 291, 292, 182, 292, 292, 293, 293, 293, 293,
+ 294, 180, 294, 294, 295, 295, 295, 295, 296, 140,
+ 296, 296, 297, 297, 297, 297, 298, 96, 298, 298,
+ 299, 299, 299, 299, 300, 65, 300, 300, 301, 301,
+ 301, 301, 302, 35, 302, 302, 303, 28, 303, 303,
+ 304, 24, 304, 304, 305, 22, 305, 305, 306, 306,
+
+ 306, 306, 307, 307, 307, 307, 308, 17, 308, 308,
+ 309, 309, 309, 309, 310, 310, 310, 310, 311, 6,
+ 311, 311, 312, 312, 312, 312, 313, 313, 313, 313,
+ 314, 314, 314, 314, 315, 315, 315, 315, 316, 316,
+ 316, 316, 317, 317, 317, 317, 318, 5, 318, 318,
+ 319, 319, 319, 319, 320, 320, 320, 320, 321, 4,
+ 321, 321, 322, 322, 322, 322, 323, 323, 323, 323,
+ 324, 324, 324, 324, 325, 3, 325, 325, 326, 0,
+ 326, 326, 327, 327, 327, 327, 328, 328, 328, 328,
+ 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
+
+ 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
+ 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
+ 269, 269, 269, 269
} ;
#define YY_TRAILING_MASK 0x2000
@@ -890,7 +900,7 @@ static int vdev_and_devtype(DiskParseContext *dpc, char *str) {
#define DPC ((DiskParseContext*)yyextra)
-#line 894 "libxlu_disk_l.c"
+#line 904 "libxlu_disk_l.c"
#define INITIAL 0
#define LEXERR 1
@@ -1131,7 +1141,7 @@ YY_DECL
/*----- the scanner rules which do the parsing -----*/
-#line 1135 "libxlu_disk_l.c"
+#line 1145 "libxlu_disk_l.c"
if ( !yyg->yy_init )
{
@@ -1195,14 +1205,14 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 256 )
+ if ( yy_current_state >= 270 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
*yyg->yy_state_ptr++ = yy_current_state;
++yy_cp;
}
- while ( yy_current_state != 255 );
+ while ( yy_current_state != 269 );
yy_find_action:
yy_current_state = *--yyg->yy_state_ptr;
@@ -1313,34 +1323,39 @@ YY_RULE_SETUP
#line 175 "libxlu_disk_l.l"
{ STRIP(','); SAVESTRING("script", script, FROMEQUALS); }
YY_BREAK
-/* the target magic parameter, eats the rest of the string */
case 12:
YY_RULE_SETUP
-#line 179 "libxlu_disk_l.l"
+#line 176 "libxlu_disk_l.l"
+{ DPC->disk->direct_io_safe = 1; }
+ YY_BREAK
+/* the target magic parameter, eats the rest of the string */
+case 13:
+YY_RULE_SETUP
+#line 180 "libxlu_disk_l.l"
{ STRIP(','); SAVESTRING("target", pdev_path, FROMEQUALS); }
YY_BREAK
/* unknown parameters */
-case 13:
-/* rule 13 can match eol */
+case 14:
+/* rule 14 can match eol */
YY_RULE_SETUP
-#line 183 "libxlu_disk_l.l"
+#line 184 "libxlu_disk_l.l"
{ xlu__disk_err(DPC,yytext,"unknown parameter"); }
YY_BREAK
/* deprecated prefixes */
/* the "/.*" in these patterns ensures that they count as if they
* matched the whole string, so these patterns take precedence */
-case 14:
+case 15:
YY_RULE_SETUP
-#line 190 "libxlu_disk_l.l"
+#line 191 "libxlu_disk_l.l"
{
STRIP(':');
DPC->had_depr_prefix=1; DEPRECATE("use `[format=]...,'");
setformat(DPC, yytext);
}
YY_BREAK
-case 15:
+case 16:
YY_RULE_SETUP
-#line 196 "libxlu_disk_l.l"
+#line 197 "libxlu_disk_l.l"
{
char *newscript;
STRIP(':');
@@ -1354,30 +1369,22 @@ YY_RULE_SETUP
free(newscript);
}
YY_BREAK
-case 16:
+case 17:
*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
yyg->yy_c_buf_p = yy_cp = yy_bp + 8;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
-#line 209 "libxlu_disk_l.l"
-{ DPC->had_depr_prefix=1; DEPRECATE(0); }
- YY_BREAK
-case 17:
-YY_RULE_SETUP
#line 210 "libxlu_disk_l.l"
{ DPC->had_depr_prefix=1; DEPRECATE(0); }
YY_BREAK
case 18:
-*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
-yyg->yy_c_buf_p = yy_cp = yy_bp + 4;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 211 "libxlu_disk_l.l"
{ DPC->had_depr_prefix=1; DEPRECATE(0); }
YY_BREAK
case 19:
*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
-yyg->yy_c_buf_p = yy_cp = yy_bp + 6;
+yyg->yy_c_buf_p = yy_cp = yy_bp + 4;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 212 "libxlu_disk_l.l"
@@ -1385,7 +1392,7 @@ YY_RULE_SETUP
YY_BREAK
case 20:
*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
-yyg->yy_c_buf_p = yy_cp = yy_bp + 5;
+yyg->yy_c_buf_p = yy_cp = yy_bp + 6;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 213 "libxlu_disk_l.l"
@@ -1393,26 +1400,34 @@ YY_RULE_SETUP
YY_BREAK
case 21:
*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
-yyg->yy_c_buf_p = yy_cp = yy_bp + 4;
+yyg->yy_c_buf_p = yy_cp = yy_bp + 5;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 214 "libxlu_disk_l.l"
{ DPC->had_depr_prefix=1; DEPRECATE(0); }
YY_BREAK
case 22:
-/* rule 22 can match eol */
+*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */
+yyg->yy_c_buf_p = yy_cp = yy_bp + 4;
+YY_DO_BEFORE_ACTION; /* set up yytext again */
+YY_RULE_SETUP
+#line 215 "libxlu_disk_l.l"
+{ DPC->had_depr_prefix=1; DEPRECATE(0); }
+ YY_BREAK
+case 23:
+/* rule 23 can match eol */
YY_RULE_SETUP
-#line 216 "libxlu_disk_l.l"
+#line 217 "libxlu_disk_l.l"
{
xlu__disk_err(DPC,yytext,"unknown deprecated disk prefix");
return 0;
}
YY_BREAK
/* positional parameters */
-case 23:
-/* rule 23 can match eol */
+case 24:
+/* rule 24 can match eol */
YY_RULE_SETUP
-#line 223 "libxlu_disk_l.l"
+#line 224 "libxlu_disk_l.l"
{
STRIP(',');
@@ -1439,27 +1454,27 @@ YY_RULE_SETUP
}
}
YY_BREAK
-case 24:
+case 25:
YY_RULE_SETUP
-#line 249 "libxlu_disk_l.l"
+#line 250 "libxlu_disk_l.l"
{
BEGIN(LEXERR);
yymore();
}
YY_BREAK
-case 25:
+case 26:
YY_RULE_SETUP
-#line 253 "libxlu_disk_l.l"
+#line 254 "libxlu_disk_l.l"
{
xlu__disk_err(DPC,yytext,"bad disk syntax"); return 0;
}
YY_BREAK
-case 26:
+case 27:
YY_RULE_SETUP
-#line 256 "libxlu_disk_l.l"
+#line 257 "libxlu_disk_l.l"
YY_FATAL_ERROR( "flex scanner jammed" );
YY_BREAK
-#line 1463 "libxlu_disk_l.c"
+#line 1478 "libxlu_disk_l.c"
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(LEXERR):
yyterminate();
@@ -1723,7 +1738,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 256 )
+ if ( yy_current_state >= 270 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1747,11 +1762,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 256 )
+ if ( yy_current_state >= 270 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- yy_is_jam = (yy_current_state == 255);
+ yy_is_jam = (yy_current_state == 269);
if ( ! yy_is_jam )
*yyg->yy_state_ptr++ = yy_current_state;
@@ -2551,4 +2566,4 @@ void xlu__disk_yyfree (void * ptr , yyscan_t yyscanner)
#define YYTABLES_NAME "yytables"
-#line 256 "libxlu_disk_l.l"
+#line 257 "libxlu_disk_l.l"
@@ -344,7 +344,7 @@ extern int xlu__disk_yylex (yyscan_t yyscanner);
#undef YY_DECL
#endif
-#line 256 "libxlu_disk_l.l"
+#line 257 "libxlu_disk_l.l"
#line 350 "libxlu_disk_l.h"
#undef xlu__disk_yyIN_HEADER
@@ -173,6 +173,7 @@ backendtype=[^,]*,? { STRIP(','); setbackendtype(DPC,FROMEQUALS); }
vdev=[^,]*,? { STRIP(','); SAVESTRING("vdev", vdev, FROMEQUALS); }
script=[^,]*,? { STRIP(','); SAVESTRING("script", script, FROMEQUALS); }
+direct-io-safe,? { DPC->disk->direct_io_safe = 1; }
/* the target magic parameter, eats the rest of the string */
@@ -97,6 +97,28 @@
*
* The type of the backing device/object.
*
+ *
+ * direct-io-safe
+ * Values: 0/1 (boolean)
+ * Default Value: 0
+ *
+ * The underlying storage is not affected by the direct IO memory
+ * lifetime bug. See:
+ * http://lists.xen.org/archives/html/xen-devel/2012-12/msg01154.html
+ *
+ * Therefore this option gives the backend permission to use
+ * O_DIRECT, notwithstanding that bug.
+ *
+ * That is, if this option is enabled, use of O_DIRECT is safe,
+ * in circumstances where we would normally have avoided it as a
+ * workaround for that bug. This option is not relevant for all
+ * backends, and even not necessarily supported for those for
+ * which it is relevant. A backend which knows that it is not
+ * affected by the bug can ignore this option.
+ *
+ * This option doesn't require a backend to use O_DIRECT, so it
+ * should not be used to try to control the caching behaviour.
+ *
*--------------------------------- Features ---------------------------------
*
* feature-barrier