[Libguestfs] [PATCH] daemon/RHEL: Choose correct udev settle script.

Richard W.M. Jones rjones at redhat.com
Wed Nov 18 16:05:24 UTC 2009


-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
New in Fedora 11: Fedora Windows cross-compiler. Compile Windows
programs, test, and build Windows installers. Over 70 libraries supprt'd
http://fedoraproject.org/wiki/MinGW http://www.annexia.org/fedora_mingw
-------------- next part --------------
>From 018e8b562b3980a002bd2f9c42cf7dab541ac005 Mon Sep 17 00:00:00 2001
From: Richard Jones <rjones at centos5x32.home.annexia.org>
Date: Wed, 18 Nov 2009 16:02:53 +0000
Subject: [PATCH] daemon/RHEL: Choose correct udev settle script.

On RHEL/CentOS 5.4, udevadm settle command does not work.  This didn't
affect us before, but now that we're using parted for partitioning, we
*do* need to wait for udev to settle (because parted isn't waiting for
this, unlike sfdisk).

This commit chooses the correct program to run.
---
 daemon/guestfsd.c |   22 +++++++++++++++++++++-
 1 files changed, 21 insertions(+), 1 deletions(-)

diff --git a/daemon/guestfsd.c b/daemon/guestfsd.c
index db0bff9..9375ede 100644
--- a/daemon/guestfsd.c
+++ b/daemon/guestfsd.c
@@ -976,5 +976,25 @@ device_name_translation (char *device, const char *func)
 void
 udev_settle (void)
 {
-  command (NULL, NULL, "/sbin/udevadm", "settle", NULL);
+  static int which_prog = 0;
+
+  if (which_prog == 0) {
+    if (access ("/sbin/udevsettle", X_OK) == 0)
+      which_prog = 2;
+    else if (access ("/sbin/udevadm", X_OK) == 0)
+      which_prog = 1;
+    else
+      which_prog = 3;
+  }
+
+  switch (which_prog) {
+  case 1:
+    command (NULL, NULL, "/sbin/udevadm", "settle", NULL);
+    break;
+  case 2:
+    command (NULL, NULL, "/sbin/udevsettle", NULL);
+    break;
+  default:
+    ;
+  }
 }
-- 
1.5.5.6



More information about the Libguestfs mailing list