xend: improve the rotation of qemu-dm logfiles. Signed-off-by: Yosuke Iwamatsu diff -r 10e79ad54c91 tools/examples/xend-config.sxp --- a/tools/examples/xend-config.sxp Fri Jun 27 16:08:56 2008 +0100 +++ b/tools/examples/xend-config.sxp Mon Jun 30 16:46:03 2008 +0900 @@ -242,3 +242,6 @@ # Script to run when the label of a resource has changed. #(resource-label-change-script '') + +# Rotation count of qemu-dm log file. +#(qemu-dm-logrotate-count 10) diff -r 10e79ad54c91 tools/python/xen/xend/XendOptions.py --- a/tools/python/xen/xend/XendOptions.py Fri Jun 27 16:08:56 2008 +0100 +++ b/tools/python/xen/xend/XendOptions.py Mon Jun 30 16:46:03 2008 +0900 @@ -132,6 +132,9 @@ class XendOptions: """Default script to configure a backend network interface""" vif_script = osdep.vif_script + """Default rotation count of qemu-dm log file.""" + qemu_dm_logrotate_count = 10 + def __init__(self): self.configure() @@ -350,6 +353,10 @@ class XendOptions: def get_vnc_x509_verify(self): return self.get_config_string('vnc-x509-verify', self.xend_vnc_x509_verify) + + def get_qemu_dm_logrotate_count(self): + return self.get_config_int("qemu-dm-logrotate-count", + self.qemu_dm_logrotate_count) class XendOptionsFile(XendOptions): diff -r 10e79ad54c91 tools/python/xen/xend/image.py --- a/tools/python/xen/xend/image.py Fri Jun 27 16:08:56 2008 +0100 +++ b/tools/python/xen/xend/image.py Mon Jun 30 16:46:03 2008 +0900 @@ -378,10 +378,18 @@ class ImageHandler: # keep track of pid and spawned options to kill it later self.logfile = "/var/log/xen/qemu-dm-%s.log" % str(self.vm.info['name_label']) - if os.path.exists(self.logfile): - if os.path.exists(self.logfile + ".1"): - os.unlink(self.logfile + ".1") - os.rename(self.logfile, self.logfile + ".1") + + # rotate log + logrotate_count = XendOptions.instance().get_qemu_dm_logrotate_count() + if logrotate_count > 0: + if os.path.exists("%s.%d" % (self.logfile, logrotate_count)): + os.unlink("%s.%d" % (self.logfile, logrotate_count)) + for n in range(logrotate_count - 1, 0, -1): + if os.path.exists("%s.%d" % (self.logfile, n)): + os.rename("%s.%d" % (self.logfile, n), + "%s.%d" % (self.logfile, (n + 1))) + if os.path.exists(self.logfile): + os.rename(self.logfile, self.logfile + ".1") null = os.open("/dev/null", os.O_RDONLY) logfd = os.open(self.logfile, os.O_WRONLY|os.O_CREAT|os.O_TRUNC|os.O_APPEND)