Correct failure to attach the PV block front device on Citrix
XenServer configurations that advertise the multi-page ring extension, but only allow a single page of ring space. sys/dev/xen/blkfront/blkfront.c: If only one page of ring space is being used, do not publish in the XenStore the number of pages in use (1), via either of the supported multi-page ring extension schemes. Single page operation is the same with or without the ring-page extension being negotiated. Relying on the legacy behavior avoids an incompatible difference in how the two ring-page extension schemes that are out in the wild, deal with the base case of a single page. The Amazon/Red Hat drivers use the same XenStore variable as if the extension was not negotiated. The Citrix drivers assume the new ring reference XenStore variables will be available Reported by: Oliver Schonefeld <schonefeld@ids-mannheim.de> MFC after: 3 days
This commit is contained in:
parent
bd944e019e
commit
0d17232400
@ -698,6 +698,7 @@ blkfront_initialize(struct xb_softc *sc)
|
||||
return;
|
||||
|
||||
/* Support both backend schemes for relaying ring page limits. */
|
||||
if (sc->ring_pages > 1) {
|
||||
error = xs_printf(XST_NIL, node_path,
|
||||
"num-ring-pages","%u", sc->ring_pages);
|
||||
if (error) {
|
||||
@ -706,14 +707,17 @@ blkfront_initialize(struct xb_softc *sc)
|
||||
node_path);
|
||||
return;
|
||||
}
|
||||
|
||||
error = xs_printf(XST_NIL, node_path,
|
||||
"ring-page-order","%u", fls(sc->ring_pages) - 1);
|
||||
"ring-page-order", "%u",
|
||||
fls(sc->ring_pages) - 1);
|
||||
if (error) {
|
||||
xenbus_dev_fatal(sc->xb_dev, error,
|
||||
"writing %s/ring-page-order",
|
||||
node_path);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
error = xs_printf(XST_NIL, node_path,
|
||||
"max-requests","%u", sc->max_requests);
|
||||
|
Loading…
x
Reference in New Issue
Block a user