summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Jones <rjones@redhat.com>2009-12-18 19:20:37 +0000
committerRichard Jones <rjones@redhat.com>2009-12-18 19:20:37 +0000
commit5c6147ecc7ee3cf657edb1e19ad5ab4e973424e0 (patch)
tree4cf01465f61d295caf9d5779d5753562259ea165
parentb3c4ddc8634e8268b151dcbd7ddd35a7286f4f04 (diff)
downloadlibguestfs-5c6147ecc7ee3cf657edb1e19ad5ab4e973424e0.tar.gz
libguestfs-5c6147ecc7ee3cf657edb1e19ad5ab4e973424e0.tar.xz
libguestfs-5c6147ecc7ee3cf657edb1e19ad5ab4e973424e0.zip
daemon: Work around udevsettle issue (RHBZ#548121).
-rw-r--r--daemon/guestfsd.c30
1 files changed, 9 insertions, 21 deletions
diff --git a/daemon/guestfsd.c b/daemon/guestfsd.c
index 520a4a4d..0fc01283 100644
--- a/daemon/guestfsd.c
+++ b/daemon/guestfsd.c
@@ -1038,31 +1038,19 @@ device_name_translation (char *device, const char *func)
* involved. eg. You can create or remove some device, but the /dev
* device node won't appear until some time later. This means that
* you get an error if you run one command followed by another.
+ *
* Use 'udevadm settle' after certain commands, but don't be too
* fussed if it fails.
+ *
+ * 'udevsettle' was the old name for this command (RHEL 5). This was
+ * deprecated in favour of 'udevadm settle'. The old 'udevsettle'
+ * command was left as a symlink. Then in Fedora 13 the old symlink
+ * remained but it stopped working (RHBZ#548121), so we have to be
+ * careful not to assume that we can use 'udevsettle' if it exists.
*/
void
udev_settle (void)
{
- 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:
- ;
- }
+ (void) command (NULL, NULL, "/sbin/udevadm", "settle", NULL);
+ (void) command (NULL, NULL, "/sbin/udevsettle", NULL);
}