Merge remote-tracking branch 'sstabellini/xen-2013-10-10' into staging
# By Matthew Daley (1) and Roger Pau Monné (1) # Via Stefano Stabellini * sstabellini/xen-2013-10-10: qemu/xen: make use of xenstore relative paths xen_disk: mark ioreq as mapped before unmapping in error case
This commit is contained in:
commit
f2c6bcfc2e
@ -405,6 +405,7 @@ static int ioreq_map(struct ioreq *ioreq)
|
||||
xen_be_printf(&ioreq->blkdev->xendev, 0,
|
||||
"can't map grant ref %d (%s, %d maps)\n",
|
||||
refs[i], strerror(errno), ioreq->blkdev->cnt_map);
|
||||
ioreq->mapped = 1;
|
||||
ioreq_unmap(ioreq);
|
||||
return -1;
|
||||
}
|
||||
|
@ -205,7 +205,6 @@ static struct XenDevice *xen_be_get_xendev(const char *type, int dom, int dev,
|
||||
struct XenDevOps *ops)
|
||||
{
|
||||
struct XenDevice *xendev;
|
||||
char *dom0;
|
||||
|
||||
xendev = xen_be_find_xendev(type, dom, dev);
|
||||
if (xendev) {
|
||||
@ -219,12 +218,10 @@ static struct XenDevice *xen_be_get_xendev(const char *type, int dom, int dev,
|
||||
xendev->dev = dev;
|
||||
xendev->ops = ops;
|
||||
|
||||
dom0 = xs_get_domain_path(xenstore, 0);
|
||||
snprintf(xendev->be, sizeof(xendev->be), "%s/backend/%s/%d/%d",
|
||||
dom0, xendev->type, xendev->dom, xendev->dev);
|
||||
snprintf(xendev->be, sizeof(xendev->be), "backend/%s/%d/%d",
|
||||
xendev->type, xendev->dom, xendev->dev);
|
||||
snprintf(xendev->name, sizeof(xendev->name), "%s-%d",
|
||||
xendev->type, xendev->dev);
|
||||
free(dom0);
|
||||
|
||||
xendev->debug = debug;
|
||||
xendev->local_port = -1;
|
||||
@ -570,14 +567,12 @@ static int xenstore_scan(const char *type, int dom, struct XenDevOps *ops)
|
||||
{
|
||||
struct XenDevice *xendev;
|
||||
char path[XEN_BUFSIZE], token[XEN_BUFSIZE];
|
||||
char **dev = NULL, *dom0;
|
||||
char **dev = NULL;
|
||||
unsigned int cdev, j;
|
||||
|
||||
/* setup watch */
|
||||
dom0 = xs_get_domain_path(xenstore, 0);
|
||||
snprintf(token, sizeof(token), "be:%p:%d:%p", type, dom, ops);
|
||||
snprintf(path, sizeof(path), "%s/backend/%s/%d", dom0, type, dom);
|
||||
free(dom0);
|
||||
snprintf(path, sizeof(path), "backend/%s/%d", type, dom);
|
||||
if (!xs_watch(xenstore, path, token)) {
|
||||
xen_be_printf(NULL, 0, "xen be: watching backend path (%s) failed\n", path);
|
||||
return -1;
|
||||
@ -603,12 +598,10 @@ static void xenstore_update_be(char *watch, char *type, int dom,
|
||||
struct XenDevOps *ops)
|
||||
{
|
||||
struct XenDevice *xendev;
|
||||
char path[XEN_BUFSIZE], *dom0, *bepath;
|
||||
char path[XEN_BUFSIZE], *bepath;
|
||||
unsigned int len, dev;
|
||||
|
||||
dom0 = xs_get_domain_path(xenstore, 0);
|
||||
len = snprintf(path, sizeof(path), "%s/backend/%s/%d", dom0, type, dom);
|
||||
free(dom0);
|
||||
len = snprintf(path, sizeof(path), "backend/%s/%d", type, dom);
|
||||
if (strncmp(path, watch, len) != 0) {
|
||||
return;
|
||||
}
|
||||
|
@ -949,7 +949,7 @@ static void xenstore_record_dm_state(struct xs_handle *xs, const char *state)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
snprintf(path, sizeof (path), "/local/domain/0/device-model/%u/state", xen_domid);
|
||||
snprintf(path, sizeof (path), "device-model/%u/state", xen_domid);
|
||||
if (!xs_write(xs, XBT_NULL, path, state, strlen(state))) {
|
||||
fprintf(stderr, "error recording dm state\n");
|
||||
exit(1);
|
||||
|
Loading…
Reference in New Issue
Block a user