[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH RESEND 1/1] libxl: introduce an option for disabling the non-O_DIRECT workaround
From: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> Document and implement a new option that permits disk backends which would otherwise have to avoid O_DIRECT (because of the network memory lifetime bug) to use it anyway. This is: direct-io-safe in the xl domain disk config specification direct_io_safe in the libxl disk API direct-io-safe in the backend xenstore interface Add a reference to xen/include/public/io/blkif.h in docs/misc/vbd-interface.txt. Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Tested-by: Felipe Franciosi <felipe@xxxxxxxxxxxx> --- docs/misc/vbd-interface.txt | 6 + docs/misc/xl-disk-configuration.txt | 38 ++ tools/libxl/libxl.c | 4 + tools/libxl/libxl.h | 7 + tools/libxl/libxl_types.idl | 1 + tools/libxl/libxlu_disk_l.c | 681 ++++++++++++++++++----------------- tools/libxl/libxlu_disk_l.h | 2 +- tools/libxl/libxlu_disk_l.l | 1 + xen/include/public/io/blkif.h | 22 ++ 9 files changed, 428 insertions(+), 334 deletions(-) diff --git a/docs/misc/vbd-interface.txt b/docs/misc/vbd-interface.txt index 3952e73..f873db0 100644 --- a/docs/misc/vbd-interface.txt +++ b/docs/misc/vbd-interface.txt @@ -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. diff --git a/docs/misc/xl-disk-configuration.txt b/docs/misc/xl-disk-configuration.txt index cf22397..11fee9a 100644 --- a/docs/misc/xl-disk-configuration.txt +++ b/docs/misc/xl-disk-configuration.txt @@ -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 diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 30b0b06..914db03 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -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)); diff --git a/tools/libxl/libxl.h b/tools/libxl/libxl.h index b2c3015..84f9c0e 100644 --- a/tools/libxl/libxl.h +++ b/tools/libxl/libxl.h @@ -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 diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl index 0f7bbf8..8944686 100644 --- a/tools/libxl/libxl_types.idl +++ b/tools/libxl/libxl_types.idl @@ -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", [ diff --git a/tools/libxl/libxlu_disk_l.c b/tools/libxl/libxlu_disk_l.c index 03adfef..c97f0b2 100644 --- a/tools/libxl/libxlu_disk_l.c +++ b/tools/libxl/libxlu_disk_l.c @@ -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" diff --git a/tools/libxl/libxlu_disk_l.h b/tools/libxl/libxlu_disk_l.h index 0176249..59ce7cf 100644 --- a/tools/libxl/libxlu_disk_l.h +++ b/tools/libxl/libxlu_disk_l.h @@ -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 diff --git a/tools/libxl/libxlu_disk_l.l b/tools/libxl/libxlu_disk_l.l index 7c4e7f1..ba8577c 100644 --- a/tools/libxl/libxlu_disk_l.l +++ b/tools/libxl/libxlu_disk_l.l @@ -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 */ diff --git a/xen/include/public/io/blkif.h b/xen/include/public/io/blkif.h index c3e169c..1e7cea9 100644 --- a/xen/include/public/io/blkif.h +++ b/xen/include/public/io/blkif.h @@ -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 -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |