[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] move pygrub tmp files to /var/run/



# HG changeset patch
# User john.levon@xxxxxxx
# Date 1165607792 28800
# Node ID 4485a53cd801f1982ababdd9a7119bdd8d0b4cce
# Parent  95c016afec4d72385b8627617ef81f697834c50d
pygrub tmp files should live in /var/run/ not /var/lib/, as they are indeed
runtime only.

Also fix a race condition in making the pygrub fifo.

Signed-off-by: John Levon <john.levon@xxxxxxx>

diff --git a/tools/pygrub/Makefile b/tools/pygrub/Makefile
--- a/tools/pygrub/Makefile
+++ b/tools/pygrub/Makefile
@@ -12,11 +12,11 @@ ifndef XEN_PYTHON_NATIVE_INSTALL
 ifndef XEN_PYTHON_NATIVE_INSTALL
 install: all
        CC="$(CC)" CFLAGS="$(CFLAGS)" python setup.py install 
--home="$(DESTDIR)/usr" --prefix=""
-       $(INSTALL_DIR) $(DESTDIR)/var/lib/xen
+       $(INSTALL_DIR) $(DESTDIR)/var/run/xend/boot
 else
 install: all
        CC="$(CC)" CFLAGS="$(CFLAGS)" python setup.py install 
--root="$(DESTDIR)"
-       $(INSTALL_DIR) $(DESTDIR)/var/lib/xen
+       $(INSTALL_DIR) $(DESTDIR)/var/run/xend/boot
 endif
 
 .PHONY: clean
diff --git a/tools/pygrub/src/pygrub b/tools/pygrub/src/pygrub
--- a/tools/pygrub/src/pygrub
+++ b/tools/pygrub/src/pygrub
@@ -514,14 +514,16 @@ if __name__ == "__main__":
     fs = fsimage.open(file, offset)
 
     kernel = fs.open_file(img.kernel[1],).read()
-    (tfd, fn) = tempfile.mkstemp(prefix="vmlinuz.", dir="/var/lib/xen")
+    (tfd, fn) = tempfile.mkstemp(prefix="boot_kernel.",
+        dir="/var/run/xend/boot")
     os.write(tfd, kernel)
     os.close(tfd)
     sxp = "linux (kernel %s)" %(fn,)
 
     if img.initrd:
         initrd = fs.open_file(img.initrd[1],).read()
-        (tfd, fn) = tempfile.mkstemp(prefix="initrd.", dir="/var/lib/xen")
+        (tfd, fn) = tempfile.mkstemp(prefix="boot_ramdisk.",
+            dir="/var/run/xend/boot")
         os.write(tfd, initrd)
         os.close(tfd)
         sxp += "(ramdisk %s)" %(fn,)
diff --git a/tools/python/xen/xend/XendBootloader.py 
b/tools/python/xen/xend/XendBootloader.py
--- a/tools/python/xen/xend/XendBootloader.py
+++ b/tools/python/xen/xend/XendBootloader.py
@@ -12,11 +12,12 @@
 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 #
 
-import os, select, errno
+import os, select, errno, stat
 import random
 import shlex
 from xen.xend import sxp
 
+from xen.util import mkdir
 from XendLogging import log
 from XendError import VmError
 
@@ -37,11 +38,16 @@ def bootloader(blexec, disk, quiet = 0, 
         log.error(msg)
         raise VmError(msg)
 
+    mkdir.parents("/var/run/xend/boot/", stat.S_IRWXU)
+
     while True:
-        fifo = "/var/lib/xen/xenbl.%s" % random.randint(0, 32000)
-        if not os.path.exists(fifo):
-            break
-    os.mkfifo(fifo, 0600)
+        fifo = "/var/run/xend/boot/xenbl.%s" %(random.randint(0, 32000),)
+        try:
+            os.mkfifo(fifo, 0600)
+        except OSError, e:
+            if (e.errno != errno.EEXIST):
+                raise
+        break
 
     child = os.fork()
     if (not child):

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.