[Pkg-libvirt-commits] [libguestfs] 10/29: sysprep: rework and fix cron-spool operation (RHBZ#1229305)

Hilko Bengen bengen at moszumanska.debian.org
Sun Nov 1 17:15:02 UTC 2015


This is an automated email from the git hooks/post-receive script.

bengen pushed a commit to annotated tag upstream/1.29.49
in repository libguestfs.

commit 261be1f952aa984b460ff8d88d962c490df4ffcf
Author: Pino Toscano <ptoscano at redhat.com>
Date:   Wed Jul 1 14:53:31 2015 +0200

    sysprep: rework and fix cron-spool operation (RHBZ#1229305)
    
    When cleaning the directories with cron/at jobs, remove only files
    there, as subdirectories might be used by other systems; for example
    in Debian under /var/spool/cron/ there is the atjobs subdirectory with
    the actual at queue.
    
    Make sure to not remove .SEQ files anymore, as they represent the at job
    counter which is needed by the at daemon. Instead, reset these files to
    0.
    
    Furthermore, add also the path to the .SEQ location in Debian-based
    systems.
---
 sysprep/sysprep_operation_cron_spool.ml | 28 +++++++++++++++++++++-------
 1 file changed, 21 insertions(+), 7 deletions(-)

diff --git a/sysprep/sysprep_operation_cron_spool.ml b/sysprep/sysprep_operation_cron_spool.ml
index 687a7e9..063f75a 100644
--- a/sysprep/sysprep_operation_cron_spool.ml
+++ b/sysprep/sysprep_operation_cron_spool.ml
@@ -18,19 +18,33 @@
 
 open Sysprep_operation
 open Common_gettext.Gettext
+open Common_utils
 
 module G = Guestfs
 
 let cron_spool_perform (g : Guestfs.guestfs) root side_effects =
-  Array.iter g#rm_rf (g#glob_expand "/var/spool/cron/*");
+  let is_seq path =
+    let basename =
+      match last_part_of path '/' with
+      | Some x -> x
+      | None -> path in
+    basename = ".SEQ" in
+  let reset f =
+    if g#is_file f then
+      (* This should overwrite the file in-place, as it's a very
+       * small buffer which will be handled using internal_write.
+       * This way, existing attributes like SELinux labels are
+       * preserved.
+       *)
+      g#write f "00000\n" in
+
+  rm_rf_only_files g ~filter:is_seq "/var/spool/cron/";
+  reset "/var/spool/cron/atjobs/.SEQ";
   Array.iter g#rm (g#glob_expand "/var/spool/atjobs/*");
-  Array.iter g#rm (g#glob_expand "/var/spool/atjobs/.SEQ");
+  reset "/var/spool/atjobs/.SEQ";
   Array.iter g#rm (g#glob_expand "/var/spool/atspool/*");
-  Array.iter
-    (fun path -> if not (g#is_dir path) then g#rm path)
-    (g#glob_expand "/var/spool/at/*");
-  Array.iter g#rm (g#glob_expand "/var/spool/at/.SEQ");
-  Array.iter g#rm (g#glob_expand "/var/spool/at/spool/*")
+  rm_rf_only_files g ~filter:is_seq "/var/spool/at/";
+  reset "/var/spool/at/.SEQ"
 
 let op = {
   defaults with

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-libvirt/libguestfs.git



More information about the Pkg-libvirt-commits mailing list