[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] make qemu handle drbd properly
This attached patch allows qemu to accept a drbd: prefix and interpret it as a drbd resource. It then searches for it in /dev/drbd/by-res/ (which must be mapped via udev). It's against 4.0-testing. Also, the block scripts make the drbd resource primary but don't want for it to actually become available. A secondary drbd resource returns EMEDIUMTYPE so if we get that result, wait half a second and retry, up to a total of 5 retries. Fixing this in the block scripts might be better but I can't see how to do it cleanly. James diff --git a/xenstore.c b/xenstore.c index 13b8d57..f6e2170 100644 --- a/xenstore.c +++ b/xenstore.c @@ -413,6 +413,9 @@ void xenstore_parse_domain_config(int hvm_domid) char *danger_buf = NULL; char *danger_type = NULL; + int retries = 1; /* number of attempts to open the block device - drbd can take a second to become available */ + int status; + for(i = 0; i < MAX_DRIVES + 1; i++) media_filename[i] = NULL; @@ -519,6 +522,14 @@ void xenstore_parse_domain_config(int hvm_domid) format = &bdrv_raw; } + if (!strcmp(drv, "drbd")) { + char *newparams = malloc(17 + strlen(params) + 1); + sprintf(newparams, "/dev/drbd/by-res/%s", params); + free(params); + params = newparams; + format = &bdrv_raw; + retries = 5; + } #if 0 /* Phantom VBDs are disabled because the use of paths * from guest-controlled areas in xenstore is unsafe. @@ -617,7 +628,14 @@ void xenstore_parse_domain_config(int hvm_domid) fprintf(stderr, "Using file %s in read-%s mode\n", bs->filename, is_readonly ? "only" : "write"); - if (bdrv_open2(bs, params, flags, format) < 0) + do { + int status = bdrv_open2(bs, params, flags, format); + if (status != -EMEDIUMTYPE) + break; + usleep(500000); /* 500ms */ + retries--; + } while (retries); + if (status < 0) fprintf(stderr, "qemu: could not open vbd '%s' or hard disk image '%s' (drv '%s' format '%s')\n", buf, params, drv ? drv : "?", format ? format->format_name : " } _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |