* [PATCH 1 of 6 RESENT] libxl: Remove frontend and backend devices from xenstore after destroy
2011-06-05 16:50 [PATCH 0 of 6 RESENT] A bunch of fixes for libxl Marek Marczykowski
@ 2011-06-05 16:50 ` Marek Marczykowski
2011-06-06 10:00 ` Ian Campbell
2011-06-05 16:50 ` [PATCH 2 of 6 RESENT] libxl: Accept disk name in libxl_devid_to_device_disk Marek Marczykowski
` (4 subsequent siblings)
5 siblings, 1 reply; 34+ messages in thread
From: Marek Marczykowski @ 2011-06-05 16:50 UTC (permalink / raw)
To: xen-devel; +Cc: marmarek
# HG changeset patch
# User Marek Marczykowski <marmarek@mimuw.edu.pl>
# Date 1307143993 -7200
# Node ID c32797243a6ba61dd2942a0307151e42fb7bf157
# Parent 37c77bacb52aa7795978b994f9d371b979b2cb07
libxl: Remove frontend and backend devices from xenstore after destroy
Cleanup frontend and backend devices from xenstore for all dev types - not only
disks. Because backend cleanup moved to libxl__device_destroy,
libxl__devices_destroy is somehow simpler.
Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
diff -r 37c77bacb52a -r c32797243a6b tools/libxl/libxl.c
--- a/tools/libxl/libxl.c Mon May 23 17:38:28 2011 +0100
+++ b/tools/libxl/libxl.c Sat Jun 04 01:33:13 2011 +0200
@@ -1105,8 +1105,6 @@ int libxl_device_disk_del(libxl_ctx *ctx
device.devid = devid;
device.kind = DEVICE_VBD;
rc = libxl__device_del(&gc, &device, wait);
- xs_rm(ctx->xsh, XBT_NULL, libxl__device_backend_path(&gc, &device));
- xs_rm(ctx->xsh, XBT_NULL, libxl__device_frontend_path(&gc, &device));
out_free:
libxl__free_all(&gc);
return rc;
diff -r 37c77bacb52a -r c32797243a6b tools/libxl/libxl_device.c
--- a/tools/libxl/libxl_device.c Mon May 23 17:38:28 2011 +0100
+++ b/tools/libxl/libxl_device.c Sat Jun 04 01:33:13 2011 +0200
@@ -272,6 +272,8 @@ retry_transaction:
if (!force) {
xs_watch(ctx->xsh, state_path, be_path);
rc = 1;
+ } else {
+ xs_rm(ctx->xsh, XBT_NULL, be_path);
}
out:
return rc;
@@ -311,10 +313,8 @@ int libxl__devices_destroy(libxl__gc *gc
char *path, *be_path, *fe_path;
unsigned int num1, num2;
char **l1 = NULL, **l2 = NULL;
- int i, j, n = 0, n_watches = 0;
- flexarray_t *toremove;
+ int i, j, n_watches = 0;
- toremove = flexarray_make(16, 1);
path = libxl__sprintf(gc, "/local/domain/%d/device", domid);
l1 = libxl__xs_directory(gc, XBT_NULL, path, &num1);
if (!l1) {
@@ -338,7 +338,6 @@ int libxl__devices_destroy(libxl__gc *gc
if (be_path != NULL) {
if (libxl__device_destroy(gc, be_path, force) > 0)
n_watches++;
- flexarray_set(toremove, n++, libxl__dirname(gc, be_path));
} else {
xs_rm(ctx->xsh, XBT_NULL, path);
}
@@ -351,7 +350,6 @@ int libxl__devices_destroy(libxl__gc *gc
if (be_path && strcmp(be_path, "")) {
if (libxl__device_destroy(gc, be_path, force) > 0)
n_watches++;
- flexarray_set(toremove, n++, libxl__dirname(gc, be_path));
}
if (!force) {
@@ -371,17 +369,13 @@ int libxl__devices_destroy(libxl__gc *gc
}
}
}
- for (i = 0; i < n; i++) {
- flexarray_get(toremove, i, (void**) &path);
- xs_rm(ctx->xsh, XBT_NULL, path);
- }
out:
- flexarray_free(toremove);
return 0;
}
int libxl__device_del(libxl__gc *gc, libxl__device *dev, int wait)
{
+ libxl_ctx *ctx = libxl__gc_owner(gc);
char *backend_path;
int rc;
@@ -400,6 +394,7 @@ int libxl__device_del(libxl__gc *gc, lib
(void)wait_for_dev_destroy(gc, &tv);
}
+ xs_rm(ctx->xsh, XBT_NULL, libxl__device_frontend_path(gc, dev));
rc = 0;
out:
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: [PATCH 1 of 6 RESENT] libxl: Remove frontend and backend devices from xenstore after destroy
2011-06-05 16:50 ` [PATCH 1 of 6 RESENT] libxl: Remove frontend and backend devices from xenstore after destroy Marek Marczykowski
@ 2011-06-06 10:00 ` Ian Campbell
2011-06-27 16:29 ` Ian Jackson
0 siblings, 1 reply; 34+ messages in thread
From: Ian Campbell @ 2011-06-06 10:00 UTC (permalink / raw)
To: Marek Marczykowski; +Cc: xen-devel@lists.xensource.com
On Sun, 2011-06-05 at 17:50 +0100, Marek Marczykowski wrote:
> # HG changeset patch
> # User Marek Marczykowski <marmarek@mimuw.edu.pl>
> # Date 1307143993 -7200
> # Node ID c32797243a6ba61dd2942a0307151e42fb7bf157
> # Parent 37c77bacb52aa7795978b994f9d371b979b2cb07
> libxl: Remove frontend and backend devices from xenstore after destroy
>
> Cleanup frontend and backend devices from xenstore for all dev types - not only
> disks. Because backend cleanup moved to libxl__device_destroy,
> libxl__devices_destroy is somehow simpler.
>
> Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
>
> diff -r 37c77bacb52a -r c32797243a6b tools/libxl/libxl.c
> --- a/tools/libxl/libxl.c Mon May 23 17:38:28 2011 +0100
> +++ b/tools/libxl/libxl.c Sat Jun 04 01:33:13 2011 +0200
> @@ -1105,8 +1105,6 @@ int libxl_device_disk_del(libxl_ctx *ctx
> device.devid = devid;
> device.kind = DEVICE_VBD;
> rc = libxl__device_del(&gc, &device, wait);
> - xs_rm(ctx->xsh, XBT_NULL, libxl__device_backend_path(&gc, &device));
> - xs_rm(ctx->xsh, XBT_NULL, libxl__device_frontend_path(&gc, &device));
> out_free:
> libxl__free_all(&gc);
> return rc;
> diff -r 37c77bacb52a -r c32797243a6b tools/libxl/libxl_device.c
> --- a/tools/libxl/libxl_device.c Mon May 23 17:38:28 2011 +0100
> +++ b/tools/libxl/libxl_device.c Sat Jun 04 01:33:13 2011 +0200
> @@ -272,6 +272,8 @@ retry_transaction:
> if (!force) {
> xs_watch(ctx->xsh, state_path, be_path);
> rc = 1;
> + } else {
> + xs_rm(ctx->xsh, XBT_NULL, be_path);
> }
> out:
> return rc;
> @@ -311,10 +313,8 @@ int libxl__devices_destroy(libxl__gc *gc
> char *path, *be_path, *fe_path;
> unsigned int num1, num2;
> char **l1 = NULL, **l2 = NULL;
> - int i, j, n = 0, n_watches = 0;
> - flexarray_t *toremove;
> + int i, j, n_watches = 0;
>
> - toremove = flexarray_make(16, 1);
> path = libxl__sprintf(gc, "/local/domain/%d/device", domid);
> l1 = libxl__xs_directory(gc, XBT_NULL, path, &num1);
> if (!l1) {
> @@ -338,7 +338,6 @@ int libxl__devices_destroy(libxl__gc *gc
> if (be_path != NULL) {
> if (libxl__device_destroy(gc, be_path, force) > 0)
> n_watches++;
> - flexarray_set(toremove, n++, libxl__dirname(gc, be_path));
> } else {
> xs_rm(ctx->xsh, XBT_NULL, path);
> }
> @@ -351,7 +350,6 @@ int libxl__devices_destroy(libxl__gc *gc
> if (be_path && strcmp(be_path, "")) {
> if (libxl__device_destroy(gc, be_path, force) > 0)
> n_watches++;
> - flexarray_set(toremove, n++, libxl__dirname(gc, be_path));
> }
>
> if (!force) {
> @@ -371,17 +369,13 @@ int libxl__devices_destroy(libxl__gc *gc
> }
> }
> }
> - for (i = 0; i < n; i++) {
> - flexarray_get(toremove, i, (void**) &path);
> - xs_rm(ctx->xsh, XBT_NULL, path);
> - }
> out:
> - flexarray_free(toremove);
> return 0;
> }
>
> int libxl__device_del(libxl__gc *gc, libxl__device *dev, int wait)
> {
> + libxl_ctx *ctx = libxl__gc_owner(gc);
> char *backend_path;
> int rc;
>
> @@ -400,6 +394,7 @@ int libxl__device_del(libxl__gc *gc, lib
> (void)wait_for_dev_destroy(gc, &tv);
> }
>
> + xs_rm(ctx->xsh, XBT_NULL, libxl__device_frontend_path(gc, dev));
> rc = 0;
>
> out:
>
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: [PATCH 1 of 6 RESENT] libxl: Remove frontend and backend devices from xenstore after destroy
2011-06-06 10:00 ` Ian Campbell
@ 2011-06-27 16:29 ` Ian Jackson
0 siblings, 0 replies; 34+ messages in thread
From: Ian Jackson @ 2011-06-27 16:29 UTC (permalink / raw)
To: Marek Marczykowski; +Cc: xen-devel@lists.xensource.com, Ian Campbell
Ian Campbell writes ("Re: [Xen-devel] [PATCH 1 of 6 RESENT] libxl: Remove frontend and backend devices from xenstore after destroy"):
> On Sun, 2011-06-05 at 17:50 +0100, Marek Marczykowski wrote:
> > # HG changeset patch
> > # User Marek Marczykowski <marmarek@mimuw.edu.pl>
> > # Date 1307143993 -7200
> > # Node ID c32797243a6ba61dd2942a0307151e42fb7bf157
> > # Parent 37c77bacb52aa7795978b994f9d371b979b2cb07
> > libxl: Remove frontend and backend devices from xenstore after destroy
> >
> > Cleanup frontend and backend devices from xenstore for all dev types - not only
> > disks. Because backend cleanup moved to libxl__device_destroy,
> > libxl__devices_destroy is somehow simpler.
> >
> > Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
>
> Acked-by: Ian Campbell <ian.campbell@citrix.com>
Applied, thanks.
Ian.
^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH 2 of 6 RESENT] libxl: Accept disk name in libxl_devid_to_device_disk
2011-06-05 16:50 [PATCH 0 of 6 RESENT] A bunch of fixes for libxl Marek Marczykowski
2011-06-05 16:50 ` [PATCH 1 of 6 RESENT] libxl: Remove frontend and backend devices from xenstore after destroy Marek Marczykowski
@ 2011-06-05 16:50 ` Marek Marczykowski
2011-06-06 11:24 ` Ian Campbell
2011-06-05 16:50 ` [PATCH 3 of 6 RESENT] libxl: Allocate memory for strings in libxl_device_disk Marek Marczykowski
` (3 subsequent siblings)
5 siblings, 1 reply; 34+ messages in thread
From: Marek Marczykowski @ 2011-06-05 16:50 UTC (permalink / raw)
To: xen-devel; +Cc: marmarek
# HG changeset patch
# User Marek Marczykowski <marmarek@mimuw.edu.pl>
# Date 1306962929 -7200
# Node ID 5231fa19f3e39091ff29e2a6dca057ca54403092
# Parent c32797243a6ba61dd2942a0307151e42fb7bf157
libxl: Accept disk name in libxl_devid_to_device_disk
Accept disk name in xl block-detach.
Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
diff -r c32797243a6b -r 5231fa19f3e3 tools/libxl/libxl_device.c
--- a/tools/libxl/libxl_device.c Sat Jun 04 01:33:13 2011 +0200
+++ b/tools/libxl/libxl_device.c Wed Jun 01 23:15:29 2011 +0200
@@ -198,7 +198,7 @@ static int device_virtdisk_matches(const
return 1;
}
-int libxl__device_disk_dev_number(char *virtpath, int *pdisk, int *ppartition)
+int libxl__device_disk_dev_number(const char *virtpath, int *pdisk, int *ppartition)
{
int disk, partition;
char *ep;
diff -r c32797243a6b -r 5231fa19f3e3 tools/libxl/libxl_internal.h
--- a/tools/libxl/libxl_internal.h Sat Jun 04 01:33:13 2011 +0200
+++ b/tools/libxl/libxl_internal.h Wed Jun 01 23:15:29 2011 +0200
@@ -205,7 +205,7 @@ _hidden char *libxl__device_disk_string_
_hidden char *libxl__device_disk_string_of_format(libxl_disk_format format);
_hidden int libxl__device_physdisk_major_minor(const char *physpath, int *major, int *minor);
-_hidden int libxl__device_disk_dev_number(char *virtpath,
+_hidden int libxl__device_disk_dev_number(const char *virtpath,
int *pdisk, int *ppartition);
_hidden int libxl__device_console_add(libxl__gc *gc, uint32_t domid,
diff -r c32797243a6b -r 5231fa19f3e3 tools/libxl/libxl_utils.c
--- a/tools/libxl/libxl_utils.c Sat Jun 04 01:33:13 2011 +0200
+++ b/tools/libxl/libxl_utils.c Wed Jun 01 23:15:29 2011 +0200
@@ -530,18 +530,18 @@ int libxl_devid_to_device_disk(libxl_ctx
const char *devid, libxl_device_disk *disk)
{
libxl__gc gc = LIBXL_INIT_GC(ctx);
- char *endptr, *val;
+ char *val;
char *dompath, *diskpath, *be_path;
unsigned int devid_n;
int rc = ERROR_INVAL;
- devid_n = strtoul(devid, &endptr, 10);
- if (devid == endptr) {
+ devid_n = libxl__device_disk_dev_number(devid, NULL, NULL);
+ if (devid_n < 0) {
goto out;
}
rc = ERROR_FAIL;
dompath = libxl__xs_get_dompath(&gc, domid);
- diskpath = libxl__sprintf(&gc, "%s/device/vbd/%s", dompath, devid);
+ diskpath = libxl__sprintf(&gc, "%s/device/vbd/%d", dompath, devid_n);
if (!diskpath) {
goto out;
}
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: [PATCH 2 of 6 RESENT] libxl: Accept disk name in libxl_devid_to_device_disk
2011-06-05 16:50 ` [PATCH 2 of 6 RESENT] libxl: Accept disk name in libxl_devid_to_device_disk Marek Marczykowski
@ 2011-06-06 11:24 ` Ian Campbell
2011-06-06 11:31 ` Ian Campbell
2011-06-27 16:28 ` [PATCH 2 of 6 RESENT] libxl: Accept disk name in libxl_devid_to_device_disk [and 1 more messages] Ian Jackson
0 siblings, 2 replies; 34+ messages in thread
From: Ian Campbell @ 2011-06-06 11:24 UTC (permalink / raw)
To: Marek Marczykowski; +Cc: xen-devel@lists.xensource.com
On Sun, 2011-06-05 at 17:50 +0100, Marek Marczykowski wrote:
> # HG changeset patch
> # User Marek Marczykowski <marmarek@mimuw.edu.pl>
> # Date 1306962929 -7200
> # Node ID 5231fa19f3e39091ff29e2a6dca057ca54403092
> # Parent c32797243a6ba61dd2942a0307151e42fb7bf157
> libxl: Accept disk name in libxl_devid_to_device_disk
>
> Accept disk name in xl block-detach.
>
> Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
While reviewing I noticed a path out of libxl__device_disk_dev_number
which would succeed without setting pdisk or ppartition, which would
surprise a caller which provided them.
I wasn't immediately sure from docs/misc/vbd-interface.txt how to parse
a vdev which is an arbitrary number. Many cases are covered in the
document but there are others (e.g. NetBSD uses small integers iirc)
which I was unsure of. (I expect that document needs expanding to cover
these cases, but I'm not sure what to put...)
For now I just returned an error to prevent a cascading failure.
8<-------------------------------------------------------
# HG changeset patch
# User Ian Campbell <ian.campbell@citrix.com>
# Date 1307359172 -3600
# Node ID b5dfb12aa231c98a4dcf3372d3bf1cf9a85df2a4
# Parent 86009542df09c70ca8b4a95e4dd3de63cf95c9d6
libxl: fail to parse disk vpath if a disk+part number is required but unavailable
libxl__device_disk_dev_number() can parse a virtpath which is an encoded
unsigned long but does not set *pdisk or *ppartition in that case.
Ideally we would parse the number but for now simply fail to prevent cascading
failures.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
diff -r 86009542df09 -r b5dfb12aa231 tools/libxl/libxl_device.c
--- a/tools/libxl/libxl_device.c Mon Jun 06 12:11:25 2011 +0100
+++ b/tools/libxl/libxl_device.c Mon Jun 06 12:19:32 2011 +0100
@@ -222,8 +222,12 @@ int libxl__device_disk_dev_number(char *
errno = 0;
ul = strtoul(virtpath, &ep, 0);
- if (!errno && !*ep && ul <= INT_MAX)
+ if (!errno && !*ep && ul <= INT_MAX) {
+ /* FIXME: should parse ul to determine these. */
+ if (pdisk || ppartition)
+ return -1;
return ul;
+ }
if (device_virtdisk_matches(virtpath, "hd",
&disk, 3,
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: [PATCH 2 of 6 RESENT] libxl: Accept disk name in libxl_devid_to_device_disk
2011-06-06 11:24 ` Ian Campbell
@ 2011-06-06 11:31 ` Ian Campbell
2011-06-27 16:28 ` [PATCH 2 of 6 RESENT] libxl: Accept disk name in libxl_devid_to_device_disk [and 1 more messages] Ian Jackson
1 sibling, 0 replies; 34+ messages in thread
From: Ian Campbell @ 2011-06-06 11:31 UTC (permalink / raw)
To: Marek Marczykowski; +Cc: xen-devel@lists.xensource.com
On Mon, 2011-06-06 at 12:24 +0100, Ian Campbell wrote:
> On Sun, 2011-06-05 at 17:50 +0100, Marek Marczykowski wrote:
> > # HG changeset patch
> > # User Marek Marczykowski <marmarek@mimuw.edu.pl>
> > # Date 1306962929 -7200
> > # Node ID 5231fa19f3e39091ff29e2a6dca057ca54403092
> > # Parent c32797243a6ba61dd2942a0307151e42fb7bf157
> > libxl: Accept disk name in libxl_devid_to_device_disk
> >
> > Accept disk name in xl block-detach.
> >
> > Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
>
> Acked-by: Ian Campbell <ian.campbell@citrix.com>
>
> While reviewing I noticed a path out of libxl__device_disk_dev_number
> which would succeed without setting pdisk or ppartition, which would
> surprise a caller which provided them.
>
> I wasn't immediately sure from docs/misc/vbd-interface.txt how to parse
> a vdev which is an arbitrary number. Many cases are covered in the
> document but there are others (e.g. NetBSD uses small integers iirc)
> which I was unsure of. (I expect that document needs expanding to cover
> these cases, but I'm not sure what to put...)
Actually the doc does say:
To cope with guests which predate this specification we preserve the
existing facility to specify the xenstore numerical value directly by
putting a single number (hex, decimal or octal) in the domain config
file instead of the disk identifier; this number is written directly
to xenstore (after conversion to the canonical decimal format).
so I guess it is explicit that these values cannot be reliably parsed.
Ian.
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: [PATCH 2 of 6 RESENT] libxl: Accept disk name in libxl_devid_to_device_disk [and 1 more messages]
2011-06-06 11:24 ` Ian Campbell
2011-06-06 11:31 ` Ian Campbell
@ 2011-06-27 16:28 ` Ian Jackson
1 sibling, 0 replies; 34+ messages in thread
From: Ian Jackson @ 2011-06-27 16:28 UTC (permalink / raw)
To: Marek Marczykowski, Ian Campbell; +Cc: xen-devel
Marek Marczykowski writes ("[Xen-devel] [PATCH 2 of 6 RESENT] libxl: Accept disk name in libxl_devid_to_device_disk"):
> libxl: Accept disk name in libxl_devid_to_device_disk
Applied, thanks (long lines fixed up).
Ian.
^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH 3 of 6 RESENT] libxl: Allocate memory for strings in libxl_device_disk
2011-06-05 16:50 [PATCH 0 of 6 RESENT] A bunch of fixes for libxl Marek Marczykowski
2011-06-05 16:50 ` [PATCH 1 of 6 RESENT] libxl: Remove frontend and backend devices from xenstore after destroy Marek Marczykowski
2011-06-05 16:50 ` [PATCH 2 of 6 RESENT] libxl: Accept disk name in libxl_devid_to_device_disk Marek Marczykowski
@ 2011-06-05 16:50 ` Marek Marczykowski
2011-06-06 11:24 ` Ian Campbell
2011-06-27 16:25 ` Ian Jackson
2011-06-05 16:50 ` [PATCH 4 of 6 RESENT] xl: Use macros for param parsing in network-attach, to prevent use explicit sizeof("param") Marek Marczykowski
` (2 subsequent siblings)
5 siblings, 2 replies; 34+ messages in thread
From: Marek Marczykowski @ 2011-06-05 16:50 UTC (permalink / raw)
To: xen-devel; +Cc: marmarek
# HG changeset patch
# User Marek Marczykowski <marmarek@mimuw.edu.pl>
# Date 1306962954 -7200
# Node ID 9fe949c7ab9601bb5500a53c538f7a23b61e1bcb
# Parent 5231fa19f3e39091ff29e2a6dca057ca54403092
libxl: Allocate memory for strings in libxl_device_disk
Memory for strings in libxl_device_disk must be allocated from outside of
libxl__gc to not be freed at the end of function (by libxl__free_all).
Fixes xl block-detach
Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
diff -r 5231fa19f3e3 -r 9fe949c7ab96 tools/libxl/libxl_utils.c
--- a/tools/libxl/libxl_utils.c Wed Jun 01 23:15:29 2011 +0200
+++ b/tools/libxl/libxl_utils.c Wed Jun 01 23:15:54 2011 +0200
@@ -551,10 +551,10 @@ int libxl_devid_to_device_disk(libxl_ctx
goto out;
disk->backend_domid = strtoul(val, NULL, 10);
be_path = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/backend", diskpath));
- disk->pdev_path = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/params", be_path));
+ disk->pdev_path = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(&gc, "%s/params", be_path), NULL);
val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/type", be_path));
libxl_string_to_backend(ctx, val, &(disk->backend));
- disk->vdev = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/dev", be_path));
+ disk->vdev = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(&gc, "%s/dev", be_path), NULL);
val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/removable", be_path));
disk->unpluggable = !strcmp(val, "1");
val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/mode", be_path));
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: [PATCH 3 of 6 RESENT] libxl: Allocate memory for strings in libxl_device_disk
2011-06-05 16:50 ` [PATCH 3 of 6 RESENT] libxl: Allocate memory for strings in libxl_device_disk Marek Marczykowski
@ 2011-06-06 11:24 ` Ian Campbell
2011-06-27 16:25 ` Ian Jackson
1 sibling, 0 replies; 34+ messages in thread
From: Ian Campbell @ 2011-06-06 11:24 UTC (permalink / raw)
To: Marek Marczykowski; +Cc: xen-devel@lists.xensource.com
On Sun, 2011-06-05 at 17:50 +0100, Marek Marczykowski wrote:
> # HG changeset patch
> # User Marek Marczykowski <marmarek@mimuw.edu.pl>
> # Date 1306962954 -7200
> # Node ID 9fe949c7ab9601bb5500a53c538f7a23b61e1bcb
> # Parent 5231fa19f3e39091ff29e2a6dca057ca54403092
> libxl: Allocate memory for strings in libxl_device_disk
>
> Memory for strings in libxl_device_disk must be allocated from outside of
> libxl__gc to not be freed at the end of function (by libxl__free_all).
>
> Fixes xl block-detach
>
> Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
>
> diff -r 5231fa19f3e3 -r 9fe949c7ab96 tools/libxl/libxl_utils.c
> --- a/tools/libxl/libxl_utils.c Wed Jun 01 23:15:29 2011 +0200
> +++ b/tools/libxl/libxl_utils.c Wed Jun 01 23:15:54 2011 +0200
> @@ -551,10 +551,10 @@ int libxl_devid_to_device_disk(libxl_ctx
> goto out;
> disk->backend_domid = strtoul(val, NULL, 10);
> be_path = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/backend", diskpath));
> - disk->pdev_path = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/params", be_path));
> + disk->pdev_path = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(&gc, "%s/params", be_path), NULL);
> val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/type", be_path));
> libxl_string_to_backend(ctx, val, &(disk->backend));
> - disk->vdev = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/dev", be_path));
> + disk->vdev = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(&gc, "%s/dev", be_path), NULL);
> val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/removable", be_path));
> disk->unpluggable = !strcmp(val, "1");
> val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/mode", be_path));
>
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH 3 of 6 RESENT] libxl: Allocate memory for strings in libxl_device_disk
2011-06-05 16:50 ` [PATCH 3 of 6 RESENT] libxl: Allocate memory for strings in libxl_device_disk Marek Marczykowski
2011-06-06 11:24 ` Ian Campbell
@ 2011-06-27 16:25 ` Ian Jackson
1 sibling, 0 replies; 34+ messages in thread
From: Ian Jackson @ 2011-06-27 16:25 UTC (permalink / raw)
To: Marek Marczykowski; +Cc: xen-devel
Marek Marczykowski writes ("[Xen-devel] [PATCH 3 of 6 RESENT] libxl: Allocate memory for strings in libxl_device_disk"):
> libxl: Allocate memory for strings in libxl_device_disk
>
> Memory for strings in libxl_device_disk must be allocated from outside of
> libxl__gc to not be freed at the end of function (by libxl__free_all).
>
> Fixes xl block-detach
Applied, thanks (long lines fixed up).
Ian.
^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH 4 of 6 RESENT] xl: Use macros for param parsing in network-attach, to prevent use explicit sizeof("param")
2011-06-05 16:50 [PATCH 0 of 6 RESENT] A bunch of fixes for libxl Marek Marczykowski
` (2 preceding siblings ...)
2011-06-05 16:50 ` [PATCH 3 of 6 RESENT] libxl: Allocate memory for strings in libxl_device_disk Marek Marczykowski
@ 2011-06-05 16:50 ` Marek Marczykowski
2011-06-07 12:02 ` Stefano Stabellini
2011-06-05 16:50 ` [PATCH 5 of 6 RESENT] xen.lowlevel.xl: Return None on empty domain name Marek Marczykowski
2011-06-05 16:50 ` [PATCH 6 of 6 RESENT] libxl: Do not SEGV when no 'removable' disk parameter in xenstore Marek Marczykowski
5 siblings, 1 reply; 34+ messages in thread
From: Marek Marczykowski @ 2011-06-05 16:50 UTC (permalink / raw)
To: xen-devel; +Cc: marmarek
# HG changeset patch
# User Marek Marczykowski <marmarek@mimuw.edu.pl>
# Date 1307145042 -7200
# Node ID 0863dfd23b3a10bee6d3eda30415dff0eef2bee1
# Parent 9fe949c7ab9601bb5500a53c538f7a23b61e1bcb
xl: Use macros for param parsing in network-attach, to prevent use explicit sizeof("param")
'script=' length was wrong... Replaced calls to strncmp("param", *argv,
explicit sizeof("param")) with macro and helper function to extract parameter
value. Also introduce replace_string function to simplify code.
Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
diff -r 9fe949c7ab96 -r 0863dfd23b3a tools/libxl/xl_cmdimpl.c
--- a/tools/libxl/xl_cmdimpl.c Wed Jun 01 23:15:54 2011 +0200
+++ b/tools/libxl/xl_cmdimpl.c Sat Jun 04 01:50:42 2011 +0200
@@ -1229,6 +1229,24 @@ static int handle_domain_death(libxl_ctx
return restart;
}
+/* for now used only by main_networkattach, but can be reused elsewhere */
+static int match_option_size(const char *prefix, size_t len,
+ char *arg, char **argopt)
+{
+ int rc = strncmp(prefix, arg, len);
+ if (!rc) *argopt = arg+len;
+ return !rc;
+}
+#define match_option(_prefix, _arg, _oparg) \
+ match_option_size((_prefix "="), sizeof((_prefix)) + 1, (_arg), &(_oparg))
+
+static void replace_string(char **str, const char *val)
+{
+ free(*str);
+ *str = strdup(val);
+}
+
+
static int preserve_domain(libxl_ctx *ctx, uint32_t domid, libxl_event *event,
libxl_domain_config *d_config, libxl_dominfo *info)
{
@@ -3925,7 +3943,7 @@ int main_networkattach(int argc, char **
{
int opt;
libxl_device_nic nic;
- char *endptr;
+ char *endptr, *oparg;
const char *tok;
int i;
unsigned int val;
@@ -3944,17 +3962,17 @@ int main_networkattach(int argc, char **
}
libxl_device_nic_init(&nic, -1);
for (argv += optind+1, argc -= optind+1; argc > 0; ++argv, --argc) {
- if (!strncmp("type=", *argv, 5)) {
- if (!strncmp("vif", (*argv) + 5, 4)) {
+ if (match_option("type", *argv, oparg)) {
+ if (!strcmp("vif", oparg)) {
nic.nictype = LIBXL_NIC_TYPE_VIF;
- } else if (!strncmp("ioemu", (*argv) + 5, 5)) {
+ } else if (!strcmp("ioemu", oparg)) {
nic.nictype = LIBXL_NIC_TYPE_IOEMU;
} else {
fprintf(stderr, "Invalid parameter `type'.\n");
return 1;
}
- } else if (!strncmp("mac=", *argv, 4)) {
- tok = strtok((*argv) + 4, ":");
+ } else if (match_option("mac", *argv, oparg)) {
+ tok = strtok(oparg, ":");
for (i = 0; tok && i < 6; tok = strtok(NULL, ":"), ++i) {
val = strtoul(tok, &endptr, 16);
if ((tok == endptr) || (val > 255)) {
@@ -3963,29 +3981,24 @@ int main_networkattach(int argc, char **
}
nic.mac[i] = val;
}
- } else if (!strncmp("bridge=", *argv, 7)) {
- free(nic.bridge);
- nic.bridge = strdup((*argv) + 7);
- } else if (!strncmp("ip=", *argv, 3)) {
- free(nic.ip);
- nic.ip = strdup((*argv) + 3);
- } else if (!strncmp("script=", *argv, 6)) {
- free(nic.script);
- nic.script = strdup((*argv) + 6);
- } else if (!strncmp("backend=", *argv, 8)) {
- if(libxl_name_to_domid(ctx, ((*argv) + 8), &val)) {
+ } else if (match_option("bridge", *argv, oparg)) {
+ replace_string(&nic.bridge, oparg);
+ } else if (match_option("ip", *argv, oparg)) {
+ replace_string(&nic.ip, oparg);
+ } else if (match_option("script", *argv, oparg)) {
+ replace_string(&nic.script, oparg);
+ } else if (match_option("backend", *argv, oparg)) {
+ if(libxl_name_to_domid(ctx, oparg, &val)) {
fprintf(stderr, "Specified backend domain does not exist, defaulting to Dom0\n");
val = 0;
}
nic.backend_domid = val;
- } else if (!strncmp("vifname=", *argv, 8)) {
- free(nic.ifname);
- nic.ifname = strdup((*argv) + 8);
- } else if (!strncmp("model=", *argv, 6)) {
- free(nic.model);
- nic.model = strdup((*argv) + 6);
- } else if (!strncmp("rate=", *argv, 5)) {
- } else if (!strncmp("accel=", *argv, 6)) {
+ } else if (match_option("vifname", *argv, oparg)) {
+ replace_string(&nic.ifname, oparg);
+ } else if (match_option("model", *argv, oparg)) {
+ replace_string(&nic.model, oparg);
+ } else if (match_option("rate", *argv, oparg)) {
+ } else if (match_option("accel", *argv, oparg)) {
} else {
fprintf(stderr, "unrecognized argument `%s'\n", *argv);
return 1;
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: [PATCH 4 of 6 RESENT] xl: Use macros for param parsing in network-attach, to prevent use explicit sizeof("param")
2011-06-05 16:50 ` [PATCH 4 of 6 RESENT] xl: Use macros for param parsing in network-attach, to prevent use explicit sizeof("param") Marek Marczykowski
@ 2011-06-07 12:02 ` Stefano Stabellini
0 siblings, 0 replies; 34+ messages in thread
From: Stefano Stabellini @ 2011-06-07 12:02 UTC (permalink / raw)
To: Marek Marczykowski; +Cc: xen-devel@lists.xensource.com
On Sun, 5 Jun 2011, Marek Marczykowski wrote:
> # HG changeset patch
> # User Marek Marczykowski <marmarek@mimuw.edu.pl>
> # Date 1307145042 -7200
> # Node ID 0863dfd23b3a10bee6d3eda30415dff0eef2bee1
> # Parent 9fe949c7ab9601bb5500a53c538f7a23b61e1bcb
> xl: Use macros for param parsing in network-attach, to prevent use explicit sizeof("param")
>
> 'script=' length was wrong... Replaced calls to strncmp("param", *argv,
> explicit sizeof("param")) with macro and helper function to extract parameter
> value. Also introduce replace_string function to simplify code.
>
> Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
It seems correct to me and makes the code easier to read, so
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> diff -r 9fe949c7ab96 -r 0863dfd23b3a tools/libxl/xl_cmdimpl.c
> --- a/tools/libxl/xl_cmdimpl.c Wed Jun 01 23:15:54 2011 +0200
> +++ b/tools/libxl/xl_cmdimpl.c Sat Jun 04 01:50:42 2011 +0200
> @@ -1229,6 +1229,24 @@ static int handle_domain_death(libxl_ctx
> return restart;
> }
>
> +/* for now used only by main_networkattach, but can be reused elsewhere */
> +static int match_option_size(const char *prefix, size_t len,
> + char *arg, char **argopt)
> +{
> + int rc = strncmp(prefix, arg, len);
> + if (!rc) *argopt = arg+len;
> + return !rc;
> +}
> +#define match_option(_prefix, _arg, _oparg) \
> + match_option_size((_prefix "="), sizeof((_prefix)) + 1, (_arg), &(_oparg))
> +
> +static void replace_string(char **str, const char *val)
> +{
> + free(*str);
> + *str = strdup(val);
> +}
> +
> +
> static int preserve_domain(libxl_ctx *ctx, uint32_t domid, libxl_event *event,
> libxl_domain_config *d_config, libxl_dominfo *info)
> {
> @@ -3925,7 +3943,7 @@ int main_networkattach(int argc, char **
> {
> int opt;
> libxl_device_nic nic;
> - char *endptr;
> + char *endptr, *oparg;
> const char *tok;
> int i;
> unsigned int val;
> @@ -3944,17 +3962,17 @@ int main_networkattach(int argc, char **
> }
> libxl_device_nic_init(&nic, -1);
> for (argv += optind+1, argc -= optind+1; argc > 0; ++argv, --argc) {
> - if (!strncmp("type=", *argv, 5)) {
> - if (!strncmp("vif", (*argv) + 5, 4)) {
> + if (match_option("type", *argv, oparg)) {
> + if (!strcmp("vif", oparg)) {
> nic.nictype = LIBXL_NIC_TYPE_VIF;
> - } else if (!strncmp("ioemu", (*argv) + 5, 5)) {
> + } else if (!strcmp("ioemu", oparg)) {
> nic.nictype = LIBXL_NIC_TYPE_IOEMU;
> } else {
> fprintf(stderr, "Invalid parameter `type'.\n");
> return 1;
> }
> - } else if (!strncmp("mac=", *argv, 4)) {
> - tok = strtok((*argv) + 4, ":");
> + } else if (match_option("mac", *argv, oparg)) {
> + tok = strtok(oparg, ":");
> for (i = 0; tok && i < 6; tok = strtok(NULL, ":"), ++i) {
> val = strtoul(tok, &endptr, 16);
> if ((tok == endptr) || (val > 255)) {
> @@ -3963,29 +3981,24 @@ int main_networkattach(int argc, char **
> }
> nic.mac[i] = val;
> }
> - } else if (!strncmp("bridge=", *argv, 7)) {
> - free(nic.bridge);
> - nic.bridge = strdup((*argv) + 7);
> - } else if (!strncmp("ip=", *argv, 3)) {
> - free(nic.ip);
> - nic.ip = strdup((*argv) + 3);
> - } else if (!strncmp("script=", *argv, 6)) {
> - free(nic.script);
> - nic.script = strdup((*argv) + 6);
> - } else if (!strncmp("backend=", *argv, 8)) {
> - if(libxl_name_to_domid(ctx, ((*argv) + 8), &val)) {
> + } else if (match_option("bridge", *argv, oparg)) {
> + replace_string(&nic.bridge, oparg);
> + } else if (match_option("ip", *argv, oparg)) {
> + replace_string(&nic.ip, oparg);
> + } else if (match_option("script", *argv, oparg)) {
> + replace_string(&nic.script, oparg);
> + } else if (match_option("backend", *argv, oparg)) {
> + if(libxl_name_to_domid(ctx, oparg, &val)) {
> fprintf(stderr, "Specified backend domain does not exist, defaulting to Dom0\n");
> val = 0;
> }
> nic.backend_domid = val;
> - } else if (!strncmp("vifname=", *argv, 8)) {
> - free(nic.ifname);
> - nic.ifname = strdup((*argv) + 8);
> - } else if (!strncmp("model=", *argv, 6)) {
> - free(nic.model);
> - nic.model = strdup((*argv) + 6);
> - } else if (!strncmp("rate=", *argv, 5)) {
> - } else if (!strncmp("accel=", *argv, 6)) {
> + } else if (match_option("vifname", *argv, oparg)) {
> + replace_string(&nic.ifname, oparg);
> + } else if (match_option("model", *argv, oparg)) {
> + replace_string(&nic.model, oparg);
> + } else if (match_option("rate", *argv, oparg)) {
> + } else if (match_option("accel", *argv, oparg)) {
> } else {
> fprintf(stderr, "unrecognized argument `%s'\n", *argv);
> return 1;
>
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel
>
^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH 5 of 6 RESENT] xen.lowlevel.xl: Return None on empty domain name
2011-06-05 16:50 [PATCH 0 of 6 RESENT] A bunch of fixes for libxl Marek Marczykowski
` (3 preceding siblings ...)
2011-06-05 16:50 ` [PATCH 4 of 6 RESENT] xl: Use macros for param parsing in network-attach, to prevent use explicit sizeof("param") Marek Marczykowski
@ 2011-06-05 16:50 ` Marek Marczykowski
2011-06-27 16:34 ` Ian Jackson
[not found] ` <19976.45675.438028.965156@mariner.uk.xensource.com>
2011-06-05 16:50 ` [PATCH 6 of 6 RESENT] libxl: Do not SEGV when no 'removable' disk parameter in xenstore Marek Marczykowski
5 siblings, 2 replies; 34+ messages in thread
From: Marek Marczykowski @ 2011-06-05 16:50 UTC (permalink / raw)
To: xen-devel; +Cc: marmarek
# HG changeset patch
# User Marek Marczykowski <marmarek@mimuw.edu.pl>
# Date 1307145131 -7200
# Node ID 0c0f9e1bd14073b5cb1d4f58b6950d16128003fa
# Parent 0863dfd23b3a10bee6d3eda30415dff0eef2bee1
xen.lowlevel.xl: Return None on empty domain name
Previously PyString_FromString(NULL) was called, which caused assertion
failure.
Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
diff -r 0863dfd23b3a -r 0c0f9e1bd140 tools/python/xen/lowlevel/xl/xl.c
--- a/tools/python/xen/lowlevel/xl/xl.c Sat Jun 04 01:50:42 2011 +0200
+++ b/tools/python/xen/lowlevel/xl/xl.c Sat Jun 04 01:52:11 2011 +0200
@@ -409,14 +409,16 @@ static PyObject *pyxl_domid_to_name(XlOb
{
char *domname;
int domid;
- PyObject *ret;
+ PyObject *ret = Py_None;
if ( !PyArg_ParseTuple(args, "i", &domid) )
return NULL;
domname = libxl_domid_to_name(self->ctx, domid);
- ret = PyString_FromString(domname);
- free(domname);
+ if (domname) {
+ ret = PyString_FromString(domname);
+ free(domname);
+ }
return ret;
}
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: [PATCH 5 of 6 RESENT] xen.lowlevel.xl: Return None on empty domain name
2011-06-05 16:50 ` [PATCH 5 of 6 RESENT] xen.lowlevel.xl: Return None on empty domain name Marek Marczykowski
@ 2011-06-27 16:34 ` Ian Jackson
[not found] ` <19976.45675.438028.965156@mariner.uk.xensource.com>
1 sibling, 0 replies; 34+ messages in thread
From: Ian Jackson @ 2011-06-27 16:34 UTC (permalink / raw)
To: Marek Marczykowski; +Cc: xen-devel
Marek Marczykowski writes ("[Xen-devel] [PATCH 5 of 6 RESENT] xen.lowlevel.xl: Return None on empty domain name"):
> xen.lowlevel.xl: Return None on empty domain name
>
> Previously PyString_FromString(NULL) was called, which caused assertion
> failure.
>
> Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
I modified it slightly to make the diff and complexity slightly
smaller (since "free(NULL)" is legal).
Ian.
^ permalink raw reply [flat|nested] 34+ messages in thread[parent not found: <19976.45675.438028.965156@mariner.uk.xensource.com>]
* Backport libxl bugfixes to 4.1 (was: Re: [PATCH 5 of 6 RESENT] xen.lowlevel.xl: Return None on empty domain name)
[not found] ` <19976.45675.438028.965156@mariner.uk.xensource.com>
@ 2011-06-28 21:37 ` Marek Marczykowski
2011-06-28 21:57 ` Keir Fraser
2011-06-30 16:47 ` Ian Jackson
0 siblings, 2 replies; 34+ messages in thread
From: Marek Marczykowski @ 2011-06-28 21:37 UTC (permalink / raw)
To: Ian Jackson, Keir Fraser; +Cc: xen-devel@lists.xensource.com
[-- Attachment #1.1: Type: text/plain, Size: 967 bytes --]
On 27.06.2011 18:40, Ian Jackson wrote:
> Right, I think I've dealt with all your outstanding patches now.
Looks good, thanks :)
Keir, can you apply them to 4.1 tree? This require slight modifications,
but all of them are fixing bugs present also in 4.1.
I can also send patches ready for 4.1 tree if it helps.
This is all about:
23607:2f63562df1c4 libxl: Do not SEGV when no 'removable' disk parameter
in xenstoredefault tip
23606:cc2f376d0cd9 xen.lowlevel.xl: Return None on empty domain name
23605:ff8d170852b3 libxl: Remove frontend and backend devices from
xenstore after destroy
23604:5d7998be2252 libxl: Accept disk name in libxl_devid_to_device_disk
23603:6656d80b4de4 libxl: Allocate memory for strings in libxl_device_disk
23602:5c353f53c8e2 xl: Use macros for param parsing in network-attach
--
Pozdrawiam / Best Regards,
Marek Marczykowski | RLU #390519
marmarek at mimuw edu pl | xmpp:marmarek at staszic waw pl
[-- Attachment #1.2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 5842 bytes --]
[-- Attachment #2: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: Backport libxl bugfixes to 4.1 (was: Re: [PATCH 5 of 6 RESENT] xen.lowlevel.xl: Return None on empty domain name)
2011-06-28 21:37 ` Backport libxl bugfixes to 4.1 (was: Re: [PATCH 5 of 6 RESENT] xen.lowlevel.xl: Return None on empty domain name) Marek Marczykowski
@ 2011-06-28 21:57 ` Keir Fraser
2011-06-30 16:47 ` Ian Jackson
1 sibling, 0 replies; 34+ messages in thread
From: Keir Fraser @ 2011-06-28 21:57 UTC (permalink / raw)
To: Marek Marczykowski, Ian Jackson; +Cc: xen-devel@lists.xensource.com
On 28/06/2011 22:37, "Marek Marczykowski" <marmarek@mimuw.edu.pl> wrote:
> On 27.06.2011 18:40, Ian Jackson wrote:
>> Right, I think I've dealt with all your outstanding patches now.
>
> Looks good, thanks :)
> Keir, can you apply them to 4.1 tree? This require slight modifications,
> but all of them are fixing bugs present also in 4.1.
Ian Jackson deals with libxl backports to 4.1.
-- Keir
> I can also send patches ready for 4.1 tree if it helps.
>
> This is all about:
> 23607:2f63562df1c4 libxl: Do not SEGV when no 'removable' disk parameter
> in xenstoredefault tip
> 23606:cc2f376d0cd9 xen.lowlevel.xl: Return None on empty domain name
> 23605:ff8d170852b3 libxl: Remove frontend and backend devices from
> xenstore after destroy
> 23604:5d7998be2252 libxl: Accept disk name in libxl_devid_to_device_disk
> 23603:6656d80b4de4 libxl: Allocate memory for strings in libxl_device_disk
> 23602:5c353f53c8e2 xl: Use macros for param parsing in network-attach
>
^ permalink raw reply [flat|nested] 34+ messages in thread
* Backport libxl bugfixes to 4.1 (was: Re: [PATCH 5 of 6 RESENT] xen.lowlevel.xl: Return None on empty domain name)
2011-06-28 21:37 ` Backport libxl bugfixes to 4.1 (was: Re: [PATCH 5 of 6 RESENT] xen.lowlevel.xl: Return None on empty domain name) Marek Marczykowski
2011-06-28 21:57 ` Keir Fraser
@ 2011-06-30 16:47 ` Ian Jackson
2011-08-25 11:05 ` Ian Jackson
1 sibling, 1 reply; 34+ messages in thread
From: Ian Jackson @ 2011-06-30 16:47 UTC (permalink / raw)
To: Marek Marczykowski
Cc: Keir Fraser, xen-devel@lists.xensource.com, Ian Jackson
Marek Marczykowski writes ("Backport libxl bugfixes to 4.1 (was: Re: [Xen-devel] [PATCH 5 of 6 RESENT] xen.lowlevel.xl: Return None on empty domain name)"):
> On 27.06.2011 18:40, Ian Jackson wrote:
> > Right, I think I've dealt with all your outstanding patches now.
>
> Looks good, thanks :)
> Keir, can you apply them to 4.1 tree? This require slight modifications,
> but all of them are fixing bugs present also in 4.1.
Can we let it all sit in -unstable for a few weeks ?
> I can also send patches ready for 4.1 tree if it helps.
That would certainly be useful.
> This is all about:
> 23607:2f63562df1c4 libxl: Do not SEGV when no 'removable' disk parameter
> 23606:cc2f376d0cd9 xen.lowlevel.xl: Return None on empty domain name
> 23605:ff8d170852b3 libxl: Remove frontend and backend devices from
> 23604:5d7998be2252 libxl: Accept disk name in libxl_devid_to_device_disk
> 23603:6656d80b4de4 libxl: Allocate memory for strings in libxl_device_disk
Without checking each one, I think these are suitable for backport.
> 23602:5c353f53c8e2 xl: Use macros for param parsing in network-attach
This one isn't, I think ?
Ian.
^ permalink raw reply [flat|nested] 34+ messages in thread* Backport libxl bugfixes to 4.1 (was: Re: [PATCH 5 of 6 RESENT] xen.lowlevel.xl: Return None on empty domain name)
2011-06-30 16:47 ` Ian Jackson
@ 2011-08-25 11:05 ` Ian Jackson
2011-08-25 11:12 ` Backport libxl bugfixes to 4.1 Marek Marczykowski
0 siblings, 1 reply; 34+ messages in thread
From: Ian Jackson @ 2011-08-25 11:05 UTC (permalink / raw)
To: Ian Jackson
Cc: Keir Fraser, xen-devel@lists.xensource.com, Marek Marczykowski
Ian Jackson writes ("Backport libxl bugfixes to 4.1 (was: Re: [Xen-devel] [PATCH 5 of 6 RESENT] xen.lowlevel.xl: Return None on empty domain name)"):
> Marek Marczykowski writes ("Backport libxl bugfixes to 4.1 (was: Re: [Xen-devel] [PATCH 5 of 6 RESENT] xen.lowlevel.xl: Return None on empty domain name)"):
> > I can also send patches ready for 4.1 tree if it helps.
>
> That would certainly be useful.
>
> > This is all about:
> > 23607:2f63562df1c4 libxl: Do not SEGV when no 'removable' disk parameter
> > 23606:cc2f376d0cd9 xen.lowlevel.xl: Return None on empty domain name
> > 23605:ff8d170852b3 libxl: Remove frontend and backend devices from
> > 23604:5d7998be2252 libxl: Accept disk name in libxl_devid_to_device_disk
> > 23603:6656d80b4de4 libxl: Allocate memory for strings in libxl_device_disk
>
> Without checking each one, I think these are suitable for backport.
Did you send backports for these ? I think we may have missed them.
Ian.
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: Backport libxl bugfixes to 4.1
2011-08-25 11:05 ` Ian Jackson
@ 2011-08-25 11:12 ` Marek Marczykowski
2011-08-25 17:13 ` [PATCH 0 of 5] A bunch of fixes for libxl Marek Marczykowski
0 siblings, 1 reply; 34+ messages in thread
From: Marek Marczykowski @ 2011-08-25 11:12 UTC (permalink / raw)
To: Ian Jackson; +Cc: xen-devel@lists.xensource.com, Keir Fraser
[-- Attachment #1.1: Type: text/plain, Size: 1214 bytes --]
On 25.08.2011 13:05, Ian Jackson wrote:
> Ian Jackson writes ("Backport libxl bugfixes to 4.1 (was: Re: [Xen-devel] [PATCH 5 of 6 RESENT] xen.lowlevel.xl: Return None on empty domain name)"):
>> Marek Marczykowski writes ("Backport libxl bugfixes to 4.1 (was: Re: [Xen-devel] [PATCH 5 of 6 RESENT] xen.lowlevel.xl: Return None on empty domain name)"):
>>> I can also send patches ready for 4.1 tree if it helps.
>>
>> That would certainly be useful.
>>
>>> This is all about:
>>> 23607:2f63562df1c4 libxl: Do not SEGV when no 'removable' disk parameter
>>> 23606:cc2f376d0cd9 xen.lowlevel.xl: Return None on empty domain name
>>> 23605:ff8d170852b3 libxl: Remove frontend and backend devices from
>>> 23604:5d7998be2252 libxl: Accept disk name in libxl_devid_to_device_disk
>>> 23603:6656d80b4de4 libxl: Allocate memory for strings in libxl_device_disk
>>
>> Without checking each one, I think these are suitable for backport.
>
> Did you send backports for these ? I think we may have missed them.
Not yet. Will send in near future (today/tomorrow).
--
Pozdrawiam / Best Regards,
Marek Marczykowski | RLU #390519
marmarek at mimuw edu pl | xmpp:marmarek at staszic waw pl
[-- Attachment #1.2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 5842 bytes --]
[-- Attachment #2: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] 34+ messages in thread* [PATCH 0 of 5] A bunch of fixes for libxl
2011-08-25 11:12 ` Backport libxl bugfixes to 4.1 Marek Marczykowski
@ 2011-08-25 17:13 ` Marek Marczykowski
2011-08-25 17:13 ` [PATCH 1 of 5] libxl: Remove frontend and backend devices from xenstore after destroy Marek Marczykowski
` (5 more replies)
0 siblings, 6 replies; 34+ messages in thread
From: Marek Marczykowski @ 2011-08-25 17:13 UTC (permalink / raw)
To: xen-devel; +Cc: marmarek
Backorted version of patches.
^ permalink raw reply [flat|nested] 34+ messages in thread* [PATCH 1 of 5] libxl: Remove frontend and backend devices from xenstore after destroy
2011-08-25 17:13 ` [PATCH 0 of 5] A bunch of fixes for libxl Marek Marczykowski
@ 2011-08-25 17:13 ` Marek Marczykowski
2011-08-25 17:13 ` [PATCH 2 of 5] libxl: Accept disk name in libxl_devid_to_device_disk Marek Marczykowski
` (4 subsequent siblings)
5 siblings, 0 replies; 34+ messages in thread
From: Marek Marczykowski @ 2011-08-25 17:13 UTC (permalink / raw)
To: xen-devel; +Cc: marmarek
# HG changeset patch
# User Marek Marczykowski <marmarek@mimuw.edu.pl>
# Date 1307285159 -7200
# Node ID 969051f07ee813d2a556f50d37cf59d4e509bf67
# Parent 43acc031eb24945973dffda2b7caf976993bbd5f
libxl: Remove frontend and backend devices from xenstore after destroy
Cleanup frontend and backend devices from xenstore for all dev types - not only
disks. Because backend cleanup moved to libxl__device_destroy,
libxl__devices_destroy is somehow simpler.
Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c
--- a/tools/libxl/libxl_device.c
+++ b/tools/libxl/libxl_device.c
@@ -269,7 +269,9 @@ retry_transaction:
if (!force) {
xs_watch(ctx->xsh, state_path, be_path);
rc = 1;
- }
+ } else {
+ xs_rm(ctx->xsh, XBT_NULL, be_path);
+ }
out:
libxl__free_all(&gc);
return rc;
@@ -310,10 +312,8 @@ int libxl__devices_destroy(libxl_ctx *ct
char *path, *be_path, *fe_path;
unsigned int num1, num2;
char **l1 = NULL, **l2 = NULL;
- int i, j, n = 0, n_watches = 0;
- flexarray_t *toremove;
+ int i, j, n_watches = 0;
- toremove = flexarray_make(16, 1);
path = libxl__sprintf(&gc, "/local/domain/%d/device", domid);
l1 = libxl__xs_directory(&gc, XBT_NULL, path, &num1);
if (!l1) {
@@ -337,7 +337,6 @@ int libxl__devices_destroy(libxl_ctx *ct
if (be_path != NULL) {
if (libxl__device_destroy(ctx, be_path, force) > 0)
n_watches++;
- flexarray_set(toremove, n++, libxl__dirname(&gc, be_path));
} else {
xs_rm(ctx->xsh, XBT_NULL, path);
}
@@ -350,7 +349,6 @@ int libxl__devices_destroy(libxl_ctx *ct
if (be_path && strcmp(be_path, "")) {
if (libxl__device_destroy(ctx, be_path, force) > 0)
n_watches++;
- flexarray_set(toremove, n++, libxl__dirname(&gc, be_path));
}
if (!force) {
@@ -370,12 +368,7 @@ int libxl__devices_destroy(libxl_ctx *ct
}
}
}
- for (i = 0; i < n; i++) {
- flexarray_get(toremove, i, (void**) &path);
- xs_rm(ctx->xsh, XBT_NULL, path);
- }
out:
- flexarray_free(toremove);
libxl__free_all(&gc);
return 0;
}
@@ -401,6 +394,7 @@ int libxl__device_del(libxl_ctx *ctx, li
(void)wait_for_dev_destroy(ctx, &tv);
}
+ xs_rm(ctx->xsh, XBT_NULL, libxl__device_frontend_path(&gc, dev));
rc = 0;
out:
^ permalink raw reply [flat|nested] 34+ messages in thread* [PATCH 2 of 5] libxl: Accept disk name in libxl_devid_to_device_disk
2011-08-25 17:13 ` [PATCH 0 of 5] A bunch of fixes for libxl Marek Marczykowski
2011-08-25 17:13 ` [PATCH 1 of 5] libxl: Remove frontend and backend devices from xenstore after destroy Marek Marczykowski
@ 2011-08-25 17:13 ` Marek Marczykowski
2011-08-25 17:13 ` [PATCH 3 of 5] libxl: Allocate memory for strings in libxl_device_disk Marek Marczykowski
` (3 subsequent siblings)
5 siblings, 0 replies; 34+ messages in thread
From: Marek Marczykowski @ 2011-08-25 17:13 UTC (permalink / raw)
To: xen-devel; +Cc: marmarek
# HG changeset patch
# User Marek Marczykowski <marmarek@mimuw.edu.pl>
# Date 1307285297 -7200
# Node ID 8080606fb87a751f7cde4c6a08e3945a21d397b0
# Parent 969051f07ee813d2a556f50d37cf59d4e509bf67
libxl: Accept disk name in libxl_devid_to_device_disk
Accept disk name in xl block-detach.
Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
diff --git a/tools/libxl/libxl_device.c b/tools/libxl/libxl_device.c
--- a/tools/libxl/libxl_device.c
+++ b/tools/libxl/libxl_device.c
@@ -201,7 +201,7 @@ static int device_virtdisk_matches(const
return 1;
}
-int libxl__device_disk_dev_number(char *virtpath)
+int libxl__device_disk_dev_number(const char *virtpath)
{
int disk, partition;
char *ep;
diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h
--- a/tools/libxl/libxl_internal.h
+++ b/tools/libxl/libxl_internal.h
@@ -182,7 +182,7 @@ _hidden char *libxl__device_disk_string_
_hidden char *libxl__device_disk_string_of_format(libxl_disk_format format);
_hidden int libxl__device_physdisk_major_minor(const char *physpath, int *major, int *minor);
-_hidden int libxl__device_disk_dev_number(char *virtpath);
+_hidden int libxl__device_disk_dev_number(const char *virtpath);
_hidden int libxl__device_generic_add(libxl_ctx *ctx, libxl__device *device,
char **bents, char **fents);
diff --git a/tools/libxl/libxl_utils.c b/tools/libxl/libxl_utils.c
--- a/tools/libxl/libxl_utils.c
+++ b/tools/libxl/libxl_utils.c
@@ -529,18 +529,18 @@ int libxl_devid_to_device_disk(libxl_ctx
const char *devid, libxl_device_disk *disk)
{
libxl__gc gc = LIBXL_INIT_GC(ctx);
- char *endptr, *val;
+ char *val;
char *dompath, *diskpath, *be_path;
unsigned int devid_n;
int rc = ERROR_INVAL;
- devid_n = strtoul(devid, &endptr, 10);
- if (devid == endptr) {
+ devid_n = libxl__device_disk_dev_number(devid);
+ if (devid_n < 0) {
goto out;
}
rc = ERROR_FAIL;
dompath = libxl__xs_get_dompath(&gc, domid);
- diskpath = libxl__sprintf(&gc, "%s/device/vbd/%s", dompath, devid);
+ diskpath = libxl__sprintf(&gc, "%s/device/vbd/%d", dompath, devid_n);
if (!diskpath) {
goto out;
}
^ permalink raw reply [flat|nested] 34+ messages in thread* [PATCH 3 of 5] libxl: Allocate memory for strings in libxl_device_disk
2011-08-25 17:13 ` [PATCH 0 of 5] A bunch of fixes for libxl Marek Marczykowski
2011-08-25 17:13 ` [PATCH 1 of 5] libxl: Remove frontend and backend devices from xenstore after destroy Marek Marczykowski
2011-08-25 17:13 ` [PATCH 2 of 5] libxl: Accept disk name in libxl_devid_to_device_disk Marek Marczykowski
@ 2011-08-25 17:13 ` Marek Marczykowski
2011-08-25 17:13 ` [PATCH 4 of 5] xen.lowlevel.xl: Return None on empty domain name Marek Marczykowski
` (2 subsequent siblings)
5 siblings, 0 replies; 34+ messages in thread
From: Marek Marczykowski @ 2011-08-25 17:13 UTC (permalink / raw)
To: xen-devel; +Cc: marmarek
# HG changeset patch
# User Marek Marczykowski <marmarek@mimuw.edu.pl>
# Date 1306962954 -7200
# Node ID aa6e0521bb3853b0e1d90e870220568020929cf5
# Parent 8080606fb87a751f7cde4c6a08e3945a21d397b0
libxl: Allocate memory for strings in libxl_device_disk
Memory for strings in libxl_device_disk must be allocated from outside of
libxl__gc to not be freed at the end of function (by libxl__free_all).
Fixes xl block-detach
Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
diff --git a/tools/libxl/libxl_utils.c b/tools/libxl/libxl_utils.c
--- a/tools/libxl/libxl_utils.c
+++ b/tools/libxl/libxl_utils.c
@@ -551,10 +551,10 @@ int libxl_devid_to_device_disk(libxl_ctx
disk->backend_domid = strtoul(val, NULL, 10);
disk->domid = domid;
be_path = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/backend", diskpath));
- disk->pdev_path = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/params", be_path));
+ disk->pdev_path = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(&gc, "%s/params", be_path), NULL);
val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/type", be_path));
libxl_string_to_backend(ctx, val, &(disk->backend));
- disk->vdev = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/dev", be_path));
+ disk->vdev = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(&gc, "%s/dev", be_path), NULL);
val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/removable", be_path));
disk->unpluggable = !strcmp(val, "1");
val = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/mode", be_path));
^ permalink raw reply [flat|nested] 34+ messages in thread* [PATCH 4 of 5] xen.lowlevel.xl: Return None on empty domain name
2011-08-25 17:13 ` [PATCH 0 of 5] A bunch of fixes for libxl Marek Marczykowski
` (2 preceding siblings ...)
2011-08-25 17:13 ` [PATCH 3 of 5] libxl: Allocate memory for strings in libxl_device_disk Marek Marczykowski
@ 2011-08-25 17:13 ` Marek Marczykowski
2011-08-25 17:13 ` [PATCH 5 of 5] libxl: Do not SEGV when no 'removable' disk parameter in xenstore Marek Marczykowski
2011-08-30 17:19 ` [PATCH 0 of 5] A bunch of fixes for libxl Ian Jackson
5 siblings, 0 replies; 34+ messages in thread
From: Marek Marczykowski @ 2011-08-25 17:13 UTC (permalink / raw)
To: xen-devel; +Cc: marmarek
# HG changeset patch
# User Marek Marczykowski <marmarek@mimuw.edu.pl>
# Date 1307285583 -7200
# Node ID b77de60c85431593d439f2c4ac46023c6f8e5ee2
# Parent f33981cd7d3df1718123cd364ee91a7bad064283
xen.lowlevel.xl: Return None on empty domain name
Previously PyString_FromString(NULL) was called, which caused assertion
failure.
Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
diff --git a/tools/python/xen/lowlevel/xl/xl.c b/tools/python/xen/lowlevel/xl/xl.c
--- a/tools/python/xen/lowlevel/xl/xl.c
+++ b/tools/python/xen/lowlevel/xl/xl.c
@@ -412,14 +412,16 @@ static PyObject *pyxl_domid_to_name(XlOb
{
char *domname;
int domid;
- PyObject *ret;
+ PyObject *ret = Py_None;
if ( !PyArg_ParseTuple(args, "i", &domid) )
return NULL;
domname = libxl_domid_to_name(&self->ctx, domid);
- ret = PyString_FromString(domname);
- free(domname);
+ if (domname) {
+ ret = PyString_FromString(domname);
+ free(domname);
+ }
return ret;
}
^ permalink raw reply [flat|nested] 34+ messages in thread* [PATCH 5 of 5] libxl: Do not SEGV when no 'removable' disk parameter in xenstore
2011-08-25 17:13 ` [PATCH 0 of 5] A bunch of fixes for libxl Marek Marczykowski
` (3 preceding siblings ...)
2011-08-25 17:13 ` [PATCH 4 of 5] xen.lowlevel.xl: Return None on empty domain name Marek Marczykowski
@ 2011-08-25 17:13 ` Marek Marczykowski
2011-08-30 17:19 ` [PATCH 0 of 5] A bunch of fixes for libxl Ian Jackson
5 siblings, 0 replies; 34+ messages in thread
From: Marek Marczykowski @ 2011-08-25 17:13 UTC (permalink / raw)
To: xen-devel; +Cc: marmarek
# HG changeset patch
# User Marek Marczykowski <marmarek@mimuw.edu.pl>
# Date 1307285721 -7200
# Node ID fed2015fe1745e5e712380960cc50a71629698fc
# Parent b77de60c85431593d439f2c4ac46023c6f8e5ee2
libxl: Do not SEGV when no 'removable' disk parameter in xenstore
Just assume disk as not removable when no 'removable' paremeter
Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -1724,6 +1724,7 @@ static unsigned int libxl_append_disk_li
libxl__xs_get_dompath(&gc, 0), type, domid);
dir = libxl__xs_directory(&gc, XBT_NULL, be_path, &n);
if (dir) {
+ char *removable;
*disks = realloc(*disks, sizeof (libxl_device_disk) * (*ndisks + n));
pdisk = *disks + *ndisks;
*ndisks += n;
@@ -1742,7 +1743,11 @@ static unsigned int libxl_append_disk_li
libxl__sprintf(&gc, "%s/%s/type", be_path, *dir)),
&(pdisk->backend));
pdisk->vdev = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(&gc, "%s/%s/dev", be_path, *dir), &len);
- pdisk->unpluggable = atoi(libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/%s/removable", be_path, *dir)));
+ removable = libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/%s/removable", be_path, *dir));
+ if (removable)
+ pdisk->unpluggable = atoi(removable);
+ else
+ pdisk->unpluggable = 0;
if (!strcmp(libxl__xs_read(&gc, XBT_NULL, libxl__sprintf(&gc, "%s/%s/mode", be_path, *dir)), "w"))
pdisk->readwrite = 1;
else
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: [PATCH 0 of 5] A bunch of fixes for libxl
2011-08-25 17:13 ` [PATCH 0 of 5] A bunch of fixes for libxl Marek Marczykowski
` (4 preceding siblings ...)
2011-08-25 17:13 ` [PATCH 5 of 5] libxl: Do not SEGV when no 'removable' disk parameter in xenstore Marek Marczykowski
@ 2011-08-30 17:19 ` Ian Jackson
5 siblings, 0 replies; 34+ messages in thread
From: Ian Jackson @ 2011-08-30 17:19 UTC (permalink / raw)
To: Marek Marczykowski; +Cc: xen-devel
Marek Marczykowski writes ("[Xen-devel] [PATCH 0 of 5] A bunch of fixes for libxl"):
> Backorted version of patches.
Applied all 5, thanks.
Ian.
^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH 6 of 6 RESENT] libxl: Do not SEGV when no 'removable' disk parameter in xenstore
2011-06-05 16:50 [PATCH 0 of 6 RESENT] A bunch of fixes for libxl Marek Marczykowski
` (4 preceding siblings ...)
2011-06-05 16:50 ` [PATCH 5 of 6 RESENT] xen.lowlevel.xl: Return None on empty domain name Marek Marczykowski
@ 2011-06-05 16:50 ` Marek Marczykowski
2011-06-07 11:57 ` Stefano Stabellini
5 siblings, 1 reply; 34+ messages in thread
From: Marek Marczykowski @ 2011-06-05 16:50 UTC (permalink / raw)
To: xen-devel; +Cc: marmarek
# HG changeset patch
# User Marek Marczykowski <marmarek@mimuw.edu.pl>
# Date 1307145395 -7200
# Node ID 70fc2a0f0a6003f1bf591cd941a841a9e6b69c01
# Parent 0c0f9e1bd14073b5cb1d4f58b6950d16128003fa
libxl: Do not SEGV when no 'removable' disk parameter in xenstore
Just assume disk as not removable when no 'removable' paremeter
Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
diff -r 0c0f9e1bd140 -r 70fc2a0f0a60 tools/libxl/libxl.c
--- a/tools/libxl/libxl.c Sat Jun 04 01:52:11 2011 +0200
+++ b/tools/libxl/libxl.c Sat Jun 04 01:56:35 2011 +0200
@@ -1563,6 +1563,7 @@ static unsigned int libxl__append_disk_l
libxl__xs_get_dompath(gc, 0), type, domid);
dir = libxl__xs_directory(gc, XBT_NULL, be_path, &n);
if (dir) {
+ char *removable;
*disks = realloc(*disks, sizeof (libxl_device_disk) * (*ndisks + n));
pdisk = *disks + *ndisks;
*ndisks += n;
@@ -1581,6 +1582,11 @@ static unsigned int libxl__append_disk_l
&(pdisk->backend));
pdisk->vdev = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(gc, "%s/%s/dev", be_path, *dir), &len);
pdisk->unpluggable = atoi(libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/removable", be_path, *dir)));
+ removable = libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/removable", be_path, *dir));
+ if (removable)
+ pdisk->unpluggable = atoi(removable);
+ else
+ pdisk->unpluggable = 0;
if (!strcmp(libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/mode", be_path, *dir)), "w"))
pdisk->readwrite = 1;
else
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: [PATCH 6 of 6 RESENT] libxl: Do not SEGV when no 'removable' disk parameter in xenstore
2011-06-05 16:50 ` [PATCH 6 of 6 RESENT] libxl: Do not SEGV when no 'removable' disk parameter in xenstore Marek Marczykowski
@ 2011-06-07 11:57 ` Stefano Stabellini
2011-06-07 12:00 ` Marek Marczykowski
0 siblings, 1 reply; 34+ messages in thread
From: Stefano Stabellini @ 2011-06-07 11:57 UTC (permalink / raw)
To: Marek Marczykowski; +Cc: xen-devel@lists.xensource.com
On Sun, 5 Jun 2011, Marek Marczykowski wrote:
> # HG changeset patch
> # User Marek Marczykowski <marmarek@mimuw.edu.pl>
> # Date 1307145395 -7200
> # Node ID 70fc2a0f0a6003f1bf591cd941a841a9e6b69c01
> # Parent 0c0f9e1bd14073b5cb1d4f58b6950d16128003fa
> libxl: Do not SEGV when no 'removable' disk parameter in xenstore
>
> Just assume disk as not removable when no 'removable' paremeter
>
> Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
>
> diff -r 0c0f9e1bd140 -r 70fc2a0f0a60 tools/libxl/libxl.c
> --- a/tools/libxl/libxl.c Sat Jun 04 01:52:11 2011 +0200
> +++ b/tools/libxl/libxl.c Sat Jun 04 01:56:35 2011 +0200
> @@ -1563,6 +1563,7 @@ static unsigned int libxl__append_disk_l
> libxl__xs_get_dompath(gc, 0), type, domid);
> dir = libxl__xs_directory(gc, XBT_NULL, be_path, &n);
> if (dir) {
> + char *removable;
> *disks = realloc(*disks, sizeof (libxl_device_disk) * (*ndisks + n));
> pdisk = *disks + *ndisks;
> *ndisks += n;
> @@ -1581,6 +1582,11 @@ static unsigned int libxl__append_disk_l
> &(pdisk->backend));
> pdisk->vdev = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(gc, "%s/%s/dev", be_path, *dir), &len);
> pdisk->unpluggable = atoi(libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/removable", be_path, *dir)));
shouldn't you be removing this ^ line?
> + removable = libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/removable", be_path, *dir));
> + if (removable)
> + pdisk->unpluggable = atoi(removable);
> + else
> + pdisk->unpluggable = 0;
> if (!strcmp(libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/mode", be_path, *dir)), "w"))
> pdisk->readwrite = 1;
> else
>
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel
>
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: [PATCH 6 of 6 RESENT] libxl: Do not SEGV when no 'removable' disk parameter in xenstore
2011-06-07 11:57 ` Stefano Stabellini
@ 2011-06-07 12:00 ` Marek Marczykowski
2011-06-08 10:41 ` [PATCH] " Marek Marczykowski
2011-06-08 10:42 ` [PATCH RESENTv2] libxl: Do not SEGV when no 'removable' disk parameter in xenstore Marek Marczykowski
0 siblings, 2 replies; 34+ messages in thread
From: Marek Marczykowski @ 2011-06-07 12:00 UTC (permalink / raw)
To: Stefano Stabellini; +Cc: xen-devel@lists.xensource.com
[-- Attachment #1.1: Type: text/plain, Size: 2304 bytes --]
On 07.06.2011 13:57, Stefano Stabellini wrote:
> On Sun, 5 Jun 2011, Marek Marczykowski wrote:
>> # HG changeset patch
>> # User Marek Marczykowski <marmarek@mimuw.edu.pl>
>> # Date 1307145395 -7200
>> # Node ID 70fc2a0f0a6003f1bf591cd941a841a9e6b69c01
>> # Parent 0c0f9e1bd14073b5cb1d4f58b6950d16128003fa
>> libxl: Do not SEGV when no 'removable' disk parameter in xenstore
>>
>> Just assume disk as not removable when no 'removable' paremeter
>>
>> Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
>>
>> diff -r 0c0f9e1bd140 -r 70fc2a0f0a60 tools/libxl/libxl.c
>> --- a/tools/libxl/libxl.c Sat Jun 04 01:52:11 2011 +0200
>> +++ b/tools/libxl/libxl.c Sat Jun 04 01:56:35 2011 +0200
>> @@ -1563,6 +1563,7 @@ static unsigned int libxl__append_disk_l
>> libxl__xs_get_dompath(gc, 0), type, domid);
>> dir = libxl__xs_directory(gc, XBT_NULL, be_path, &n);
>> if (dir) {
>> + char *removable;
>> *disks = realloc(*disks, sizeof (libxl_device_disk) * (*ndisks + n));
>> pdisk = *disks + *ndisks;
>> *ndisks += n;
>> @@ -1581,6 +1582,11 @@ static unsigned int libxl__append_disk_l
>> &(pdisk->backend));
>> pdisk->vdev = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(gc, "%s/%s/dev", be_path, *dir), &len);
>> pdisk->unpluggable = atoi(libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/removable", be_path, *dir)));
>
> shouldn't you be removing this ^ line?
Yes, should be...
>
>> + removable = libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/removable", be_path, *dir));
>> + if (removable)
>> + pdisk->unpluggable = atoi(removable);
>> + else
>> + pdisk->unpluggable = 0;
>> if (!strcmp(libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/mode", be_path, *dir)), "w"))
>> pdisk->readwrite = 1;
>> else
>>
>>
>>
>> _______________________________________________
>> Xen-devel mailing list
>> Xen-devel@lists.xensource.com
>> http://lists.xensource.com/xen-devel
>>
--
Pozdrawiam / Best Regards,
Marek Marczykowski | RLU #390519
marmarek at mimuw edu pl | xmpp:marmarek at staszic waw pl
[-- Attachment #1.2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 5842 bytes --]
[-- Attachment #2: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] 34+ messages in thread* [PATCH] libxl: Do not SEGV when no 'removable' disk parameter in xenstore
2011-06-07 12:00 ` Marek Marczykowski
@ 2011-06-08 10:41 ` Marek Marczykowski
2011-06-08 10:50 ` Stefano Stabellini
2011-06-08 10:42 ` [PATCH RESENTv2] libxl: Do not SEGV when no 'removable' disk parameter in xenstore Marek Marczykowski
1 sibling, 1 reply; 34+ messages in thread
From: Marek Marczykowski @ 2011-06-08 10:41 UTC (permalink / raw)
To: xen-devel; +Cc: marmarek
# HG changeset patch
# User Marek Marczykowski <marmarek@mimuw.edu.pl>
# Date 1307145395 -7200
# Node ID b2b8fef3732c10f012fc209d2850e80d95471582
# Parent 0c0f9e1bd14073b5cb1d4f58b6950d16128003fa
libxl: Do not SEGV when no 'removable' disk parameter in xenstore
Just assume disk as not removable when no 'removable' paremeter
Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -1563,6 +1563,7 @@ static unsigned int libxl__append_disk_l
libxl__xs_get_dompath(gc, 0), type, domid);
dir = libxl__xs_directory(gc, XBT_NULL, be_path, &n);
if (dir) {
+ char *removable;
*disks = realloc(*disks, sizeof (libxl_device_disk) * (*ndisks + n));
pdisk = *disks + *ndisks;
*ndisks += n;
@@ -1580,7 +1581,11 @@ static unsigned int libxl__append_disk_l
libxl__sprintf(gc, "%s/%s/type", be_path, *dir)),
&(pdisk->backend));
pdisk->vdev = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(gc, "%s/%s/dev", be_path, *dir), &len);
- pdisk->unpluggable = atoi(libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/removable", be_path, *dir)));
+ removable = libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/removable", be_path, *dir));
+ if (removable)
+ pdisk->unpluggable = atoi(removable);
+ else
+ pdisk->unpluggable = 0;
if (!strcmp(libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/mode", be_path, *dir)), "w"))
pdisk->readwrite = 1;
else
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: [PATCH] libxl: Do not SEGV when no 'removable' disk parameter in xenstore
2011-06-08 10:41 ` [PATCH] " Marek Marczykowski
@ 2011-06-08 10:50 ` Stefano Stabellini
2011-06-27 16:37 ` [PATCH] libxl: Do not SEGV when no 'removable' disk parameter in xenstore [and 1 more messages] Ian Jackson
0 siblings, 1 reply; 34+ messages in thread
From: Stefano Stabellini @ 2011-06-08 10:50 UTC (permalink / raw)
To: Marek Marczykowski; +Cc: xen-devel@lists.xensource.com
On Wed, 8 Jun 2011, Marek Marczykowski wrote:
> # HG changeset patch
> # User Marek Marczykowski <marmarek@mimuw.edu.pl>
> # Date 1307145395 -7200
> # Node ID b2b8fef3732c10f012fc209d2850e80d95471582
> # Parent 0c0f9e1bd14073b5cb1d4f58b6950d16128003fa
> libxl: Do not SEGV when no 'removable' disk parameter in xenstore
>
> Just assume disk as not removable when no 'removable' paremeter
>
> Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
>
Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
> --- a/tools/libxl/libxl.c
> +++ b/tools/libxl/libxl.c
> @@ -1563,6 +1563,7 @@ static unsigned int libxl__append_disk_l
> libxl__xs_get_dompath(gc, 0), type, domid);
> dir = libxl__xs_directory(gc, XBT_NULL, be_path, &n);
> if (dir) {
> + char *removable;
> *disks = realloc(*disks, sizeof (libxl_device_disk) * (*ndisks + n));
> pdisk = *disks + *ndisks;
> *ndisks += n;
> @@ -1580,7 +1581,11 @@ static unsigned int libxl__append_disk_l
> libxl__sprintf(gc, "%s/%s/type", be_path, *dir)),
> &(pdisk->backend));
> pdisk->vdev = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(gc, "%s/%s/dev", be_path, *dir), &len);
> - pdisk->unpluggable = atoi(libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/removable", be_path, *dir)));
> + removable = libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/removable", be_path, *dir));
> + if (removable)
> + pdisk->unpluggable = atoi(removable);
> + else
> + pdisk->unpluggable = 0;
> if (!strcmp(libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/mode", be_path, *dir)), "w"))
> pdisk->readwrite = 1;
> else
>
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel
>
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: [PATCH] libxl: Do not SEGV when no 'removable' disk parameter in xenstore [and 1 more messages]
2011-06-08 10:50 ` Stefano Stabellini
@ 2011-06-27 16:37 ` Ian Jackson
0 siblings, 0 replies; 34+ messages in thread
From: Ian Jackson @ 2011-06-27 16:37 UTC (permalink / raw)
To: Marek Marczykowski; +Cc: xen-devel, Stefano Stabellini
Marek Marczykowski writes ("[Xen-devel] [PATCH] libxl: Do not SEGV when no 'removable' disk parameter in xenstore"):
> libxl: Do not SEGV when no 'removable' disk parameter in xenstore
>
> Just assume disk as not removable when no 'removable' paremeter
>
> Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
Thanks, applied.
(Fixed up conflict due to "unpluggable" rename, fixed up long lines).
Ian.
^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH RESENTv2] libxl: Do not SEGV when no 'removable' disk parameter in xenstore
2011-06-07 12:00 ` Marek Marczykowski
2011-06-08 10:41 ` [PATCH] " Marek Marczykowski
@ 2011-06-08 10:42 ` Marek Marczykowski
1 sibling, 0 replies; 34+ messages in thread
From: Marek Marczykowski @ 2011-06-08 10:42 UTC (permalink / raw)
To: xen-devel; +Cc: marmarek
# HG changeset patch
# User Marek Marczykowski <marmarek@mimuw.edu.pl>
# Date 1307145395 -7200
# Node ID b2b8fef3732c10f012fc209d2850e80d95471582
# Parent 0c0f9e1bd14073b5cb1d4f58b6950d16128003fa
libxl: Do not SEGV when no 'removable' disk parameter in xenstore
Just assume disk as not removable when no 'removable' paremeter
Signed-off-by: Marek Marczykowski <marmarek@mimuw.edu.pl>
diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -1563,6 +1563,7 @@ static unsigned int libxl__append_disk_l
libxl__xs_get_dompath(gc, 0), type, domid);
dir = libxl__xs_directory(gc, XBT_NULL, be_path, &n);
if (dir) {
+ char *removable;
*disks = realloc(*disks, sizeof (libxl_device_disk) * (*ndisks + n));
pdisk = *disks + *ndisks;
*ndisks += n;
@@ -1580,7 +1581,11 @@ static unsigned int libxl__append_disk_l
libxl__sprintf(gc, "%s/%s/type", be_path, *dir)),
&(pdisk->backend));
pdisk->vdev = xs_read(ctx->xsh, XBT_NULL, libxl__sprintf(gc, "%s/%s/dev", be_path, *dir), &len);
- pdisk->unpluggable = atoi(libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/removable", be_path, *dir)));
+ removable = libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/removable", be_path, *dir));
+ if (removable)
+ pdisk->unpluggable = atoi(removable);
+ else
+ pdisk->unpluggable = 0;
if (!strcmp(libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, "%s/%s/mode", be_path, *dir)), "w"))
pdisk->readwrite = 1;
else
^ permalink raw reply [flat|nested] 34+ messages in thread