[Libguestfs] [PATCH] daemon/RHEL: Choose correct udev settle script.
Jim Meyering
jim at meyering.net
Wed Nov 18 17:50:54 UTC 2009
Richard W.M. Jones wrote:
> 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:
> + ;
> + }
Looks fine.
Only thought was "why bother with the static var and separate switch"
just to save a call or two to access. If you're about to invoke
one of those programs, the expense of a syscall is nil.
More information about the Libguestfs
mailing list