[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-users] storage driver domains
Hello, On 31/07/14 19:10, Kuba wrote: > W dniu 2014-07-26 13:42, Kuba pisze: >> Thank you for your help, but unfortunately I cannot get it to work (Xen >> 4.4 compiled from sources with Debian 7 Dom0 with kernel 3.10.33). I'm >> trying to provide storage from one FreeBSD 10 DomU (provider.conf) to >> another FreeBSD 10 DomU (consumer.conf). I boot provider DomU in livecd >> mode and create a zvol (tank/test). Long story short, I can get consumer >> DomU's kernel to see the storage (when booted in livecd mode), but >> cannot get the bios to see it too (and boot from it). >> >> When I try to boot consumer DomU with this in consumer.conf: >> >> #device_model_version="qemu-xen-traditional" >> device_model_stubdomain_override=0 >> disk=[ >> 'format=raw,backendtype=phy,backend=provider,vdev=xvdb,target=/dev/zvol/tank/test', >> >> >> 'file:/root/fbsd.iso,xvda,r,devtype=cdrom' AFAICT, if you use qemu-traditional stubdomains you should use hdb and hda instead of xvdb and xvda. >> ] >> boot='d' >> >> I get: >> >> # xl create consumer.conf >> Parsing config from consumer.conf >> libxl: error: libxl_dm.c:1371:device_model_spawn_outcome: domain 47 >> device model: spawn failed (rc=-3) >> libxl: error: libxl_create.c:1186:domcreate_devmodel_started: device >> model did not start: -3 >> libxl: error: libxl_dm.c:1475:kill_device_model: Device Model already >> exited >> libxl: error: libxl_device.c:1115:device_destroy_be_timeout_cb: timed >> out while waiting for /local/domain/31/backend/vbd/47/51728 to be removed >> libxl: error: libxl.c:1457:devices_destroy_cb: libxl__devices_destroy >> failed for 47 >> >> >> And in qemu-dm-consumer.log: >> qemu-system-i386: -drive >> file=/dev/zvol/tank/test,if=ide,index=1,media=disk,format=raw,cache=writeback: >> >> could not open disk image /dev/zvol/tank/test: No such file or directory >> >> >> But when I use a stubdomain: >> >> #device_model_version="qemu-xen-traditional" >> device_model_stubdomain_override=1 >> >> consumer DomU boots fine and I see /dev/xbd1 properly (and I'm sure its >> the tank/test zvol from provider DomU). However qemu-dm-consumer.log >> contains: >> >> frontend `/local/domain/49/device/vbd/51728' devtype `vbd' expected >> backend `/local/domain/0/backend/qdisk/49/51728' got >> `/local/domain/31/backend/vbd/49/51728', ignoring >> frontend `/local/domain/49/device/vbd/51728' devtype `vbd' expected >> backend `/local/domain/0/backend/qdisk/49/51728' got >> `/local/domain/31/backend/vbd/49/51728', ignoring Yes, not sure why, but qemu-traditional stubdomains were not able to use disks from driver domains. The following patch solved the problem for me, you should apply it to tools/qemu-xen-traditional-dir: --- diff --git a/xenstore.c b/xenstore.c index b0d6f77..44fe99d 100644 --- a/xenstore.c +++ b/xenstore.c @@ -247,8 +247,11 @@ static void xenstore_get_backend_path(char **backend, const char *devtype, char *backend_dompath=0; char *expected_backend=0; char *frontend_backend_path=0; + char *frontend_domid_path=0; char *backend_frontend_path=0; char *frontend_doublecheck=0; + char *backend_domid_str=0; + int backend_domid; int len; const char *frontend_idpath_slash; @@ -270,13 +273,21 @@ static void xenstore_get_backend_path(char **backend, const char *devtype, frontend_path) == -1) goto out; + if (pasprintf(&frontend_domid_path, "%s/backend-id", + frontend_path) + == -1) goto out; + bpath = xs_read(xsh, XBT_NULL, frontend_backend_path, &len); + backend_domid_str = xs_read(xsh, XBT_NULL, frontend_domid_path, &len); + if (!backend_domid_str) goto out; + backend_domid = atoi(backend_domid_str); + /* now we must check that the backend is intended for use * by this frontend, since the frontend's /backend xenstore node * is writeable by the untrustworthy guest. */ - backend_dompath = xs_get_domain_path(xsh, domid_backend); + backend_dompath = xs_get_domain_path(xsh, backend_domid); if (!backend_dompath) goto out; const char *expected_devtypes[4]; @@ -336,6 +347,8 @@ static void xenstore_get_backend_path(char **backend, const char *devtype, free(frontend_backend_path); free(backend_frontend_path); free(frontend_doublecheck); + free(frontend_domid_path); + free(backend_domid_str); } static const char *xenstore_get_guest_uuid(void) _______________________________________________ Xen-users mailing list Xen-users@xxxxxxxxxxxxx http://lists.xen.org/xen-users
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |