[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] tools/libxl: libxl_device_generic_add: handle NULL fents or bents
# HG changeset patch # User Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> # Date 1281728049 -3600 # Node ID 1fffba3a48ffe3466bac9d8f97ae484ab2156d8d # Parent 5decc6971f2a5ef4d72a7f52b7e4dab29c1042da tools/libxl: libxl_device_generic_add: handle NULL fents or bents This is going to be used by libxl_console_add in the next patch to avoid creating the device/console path on xenstore for console 0. Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> --- tools/libxl/libxl_device.c | 30 +++++++++++++++--------------- tools/libxl/libxl_xshelp.c | 3 +++ 2 files changed, 18 insertions(+), 15 deletions(-) diff -r 5decc6971f2a -r 1fffba3a48ff tools/libxl/libxl_device.c --- a/tools/libxl/libxl_device.c Fri Aug 13 16:56:42 2010 +0100 +++ b/tools/libxl/libxl_device.c Fri Aug 13 20:34:09 2010 +0100 @@ -76,21 +76,21 @@ retry_transaction: t = xs_transaction_start(ctx->xsh); /* FIXME: read frontend_path and check state before removing stuff */ - xs_rm(ctx->xsh, t, frontend_path); - xs_rm(ctx->xsh, t, backend_path); - - xs_mkdir(ctx->xsh, t, frontend_path); - xs_set_permissions(ctx->xsh, t, frontend_path, frontend_perms, ARRAY_SIZE(frontend_perms)); - - xs_mkdir(ctx->xsh, t, backend_path); - xs_set_permissions(ctx->xsh, t, backend_path, backend_perms, ARRAY_SIZE(backend_perms)); - - xs_write(ctx->xsh, t, libxl_sprintf(&gc, "%s/backend", frontend_path), backend_path, strlen(backend_path)); - xs_write(ctx->xsh, t, libxl_sprintf(&gc, "%s/frontend", backend_path), frontend_path, strlen(frontend_path)); - - /* and write frontend kvs and backend kvs */ - libxl_xs_writev(&gc, t, backend_path, bents); - libxl_xs_writev(&gc, t, frontend_path, fents); + if (fents) { + xs_rm(ctx->xsh, t, frontend_path); + xs_mkdir(ctx->xsh, t, frontend_path); + xs_set_permissions(ctx->xsh, t, frontend_path, frontend_perms, ARRAY_SIZE(frontend_perms)); + xs_write(ctx->xsh, t, libxl_sprintf(&gc, "%s/backend", frontend_path), backend_path, strlen(backend_path)); + libxl_xs_writev(&gc, t, frontend_path, fents); + } + + if (bents) { + xs_rm(ctx->xsh, t, backend_path); + xs_mkdir(ctx->xsh, t, backend_path); + xs_set_permissions(ctx->xsh, t, backend_path, backend_perms, ARRAY_SIZE(backend_perms)); + xs_write(ctx->xsh, t, libxl_sprintf(&gc, "%s/frontend", backend_path), frontend_path, strlen(frontend_path)); + libxl_xs_writev(&gc, t, backend_path, bents); + } if (!xs_transaction_end(ctx->xsh, t, 0)) { if (errno == EAGAIN) diff -r 5decc6971f2a -r 1fffba3a48ff tools/libxl/libxl_xshelp.c --- a/tools/libxl/libxl_xshelp.c Fri Aug 13 16:56:42 2010 +0100 +++ b/tools/libxl/libxl_xshelp.c Fri Aug 13 20:34:09 2010 +0100 @@ -48,6 +48,9 @@ char **libxl_xs_kvs_of_flexarray(libxl_g { char **kvs; int i; + + if (!length) + return NULL; kvs = libxl_calloc(gc, length + 2, sizeof(char *)); if (kvs) { _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |