libxl: only read script once in libxl__hotplug_*
authorIan Campbell <ian.campbell@citrix.com>
Fri, 3 Aug 2012 08:54:06 +0000 (09:54 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Fri, 3 Aug 2012 08:54:06 +0000 (09:54 +0100)
instead of duplicating the error handling etc in get_hotplug_env just pass the
script already read by the caller down.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Campbell <ian.campbell@citrix.com>
tools/libxl/libxl_linux.c

index 9ae0b4b88f8f54bae34afbc23ad5164b32b2c483..1fed3cd52128a14ac6fb25801766c47ec393a051 100644 (file)
@@ -80,22 +80,14 @@ char *libxl__devid_to_localdev(libxl__gc *gc, int devid)
 
 /* Hotplug scripts helpers */
 
-static char **get_hotplug_env(libxl__gc *gc, libxl__device *dev)
+static char **get_hotplug_env(libxl__gc *gc,
+                              char *script, libxl__device *dev)
 {
-    char *be_path = libxl__device_backend_path(gc, dev);
-    char *script;
     const char *type = libxl__device_kind_to_string(dev->backend_kind);
     char **env;
     int nr = 0;
     libxl_nic_type nictype;
 
-    script = libxl__xs_read(gc, XBT_NULL,
-                            GCSPRINTF("%s/%s", be_path, "script"));
-    if (!script) {
-        LOGEV(ERROR, errno, "unable to read script from %s", be_path);
-        return NULL;
-    }
-
     const int arraysize = 13;
     GCNEW_ARRAY(env, arraysize);
     env[nr++] = "script";
@@ -170,7 +162,7 @@ static int libxl__hotplug_nic(libxl__gc *gc, libxl__device *dev,
         goto out;
     }
 
-    *env = get_hotplug_env(gc, dev);
+    *env = get_hotplug_env(gc, script, dev);
     if (!env) {
         rc = ERROR_FAIL;
         goto out;
@@ -212,7 +204,7 @@ static int libxl__hotplug_disk(libxl__gc *gc, libxl__device *dev,
         goto error;
     }
 
-    *env = get_hotplug_env(gc, dev);
+    *env = get_hotplug_env(gc, script, dev);
     if (!*env) {
         rc = ERROR_FAIL;
         goto error;