Resend for a mistake.
I think 'domid' should be both an input and output parameter,
which allows caller/user to provide a given domid,
if the given domid <= 0, it meas to request the hypervisor
to assign the next free id.
so "assert(!libxl_domid_valid_guest(*domid));" is necessary, but
should be "assert(libxl_domid_valid_guest(*domid));"
and '*domid = -1;' should be cut out in libxl__domain_make
If any mistake, pls fix me
My patch for this:
---
libxl: fix domid check err.
It should meet the XEN_DOMCTL_createdomain hypercall
Signed-off-by: Zhou Peng <zhoupeng@xxxxxxxxxxxxxxx>
diff -r eca057e4475c tools/libxl/libxl_create.c
--- a/tools/libxl/libxl_create.c Fri Jun 17 08:08:13 2011 +0100
+++ b/tools/libxl/libxl_create.c Tue Jun 21 11:02:51 2011 +0800
@@ -295,7 +295,8 @@ int libxl__domain_make(libxl__gc *gc, li
xs_transaction_t t = 0;
xen_domain_handle_t handle;
- assert(!libxl_domid_valid_guest(*domid));
+ if (*domid > 0)
+ assert(libxl_domid_valid_guest(*domid));
uuid_string = libxl__uuid2string(gc, info->uuid);
if (!uuid_string) {
@@ -306,7 +307,8 @@ int libxl__domain_make(libxl__gc *gc, li
flags = info->hvm ? XEN_DOMCTL_CDF_hvm_guest : 0;
flags |= info->hap ? XEN_DOMCTL_CDF_hap : 0;
flags |= info->oos ? 0 : XEN_DOMCTL_CDF_oos_off;
- *domid = -1;
+ if (*domid < 0)
+ *domid = -1;
/* Ultimately, handle is an array of 16 uint8_t, same as uuid */
libxl_uuid_copy((libxl_uuid *)handle, &info->uuid);
--
Zhou Peng
Operating System Technology Group
Institute of Software, the Chinese Academy of Sciences (ISCAS)
libxl-fix-domid-check-err.diff
Description: Binary data
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|