WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH] xl: avoid creating domains with duplicate names

I wrote:
> OK, thanks, I'll take that as an ack.  I have applied my patch and
> will post a revised version of yours on a moment.

TBH I think this restriction should be in libxl (in
libxl_domain_rename), rather than in xl.  But that would require too
intrusive a set of changes at this stage.


xl: avoid creating domains with duplicate names

Do not create the domain if another domain with the same name is already
running.

This is another error-checking function at rather too high a level:
this should be moved into libxl_domain_rename in 4.2.

Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>

diff -r 67d5b8004947 tools/libxl/xl_cmdimpl.c
--- a/tools/libxl/xl_cmdimpl.c  Wed Jan 26 11:58:45 2011 +0000
+++ b/tools/libxl/xl_cmdimpl.c  Wed Jan 26 12:02:37 2011 +0000
@@ -583,6 +583,7 @@ static void parse_config_data(const char
     XLU_ConfigList *vbds, *nics, *pcis, *cvfbs, *net2s, *cpuids;
     int pci_power_mgmt = 0;
     int pci_msitranslate = 1;
+    uint32_t domid_e;
     int e;
 
     libxl_domain_create_info *c_info = &d_config->c_info;
@@ -612,6 +613,15 @@ static void parse_config_data(const char
 
     if (xlu_cfg_replace_string (config, "name", &c_info->name))
         c_info->name = strdup("test");
+    e = libxl_name_to_domid(&ctx, c_info->name, &domid_e);
+    if (!e) {
+        fprintf(stderr, "A domain with name \"%s\" already exists.\n", 
c_info->name);
+        exit(1);
+    }
+    if (e != ERROR_INVAL) {
+        fprintf(stderr, "Unexpected error checking for existing domain"
+                " (error=%d)", e);
+    }
 
     if (!xlu_cfg_get_string (config, "uuid", &buf) ) {
         if ( libxl_uuid_from_string(&c_info->uuid, buf) ) {

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel