]> sourceware.org Git - lvm2.git/commitdiff
Strictly require libudev if udev_sync is used.
authorPeter Rajnoha <prajnoha@redhat.com>
Tue, 23 Mar 2010 14:43:18 +0000 (14:43 +0000)
committerPeter Rajnoha <prajnoha@redhat.com>
Tue, 23 Mar 2010 14:43:18 +0000 (14:43 +0000)
This prevents some confusion when libudev was not found so udev_sync was disabled
automatically. Configure was successful though giving only a tiny warning.

Also, if "dmsetup udevcreatecookie" is used, never return 0x000000 as a result if
udev is not running and keep the output blank.

WHATS_NEW_DM
configure.in
libdm/libdm-common.c
tools/dmsetup.c
tools/lvmcmdline.c

index 0485b6c43450994c1f52a21631df95208b771ff9..8716794a849b7986b082e7c25e4789b1fc20166b 100644 (file)
@@ -1,5 +1,6 @@
 Version 1.02.46 - 
 ================================
+  Strictly require libudev if udev_sync is used.
   Add support for ioctl's DM_UEVENT_GENERATED_FLAG.
 
 Version 1.02.45 - 9th March 2010
index 2c052a6aea14fad1ba55d2564577aa092d7e93f3..aafce08e68518f17f3069ec4a92102996be7a7cb 100644 (file)
@@ -650,6 +650,7 @@ UDEV_SYNC=$enableval, UDEV_SYNC=no)
 AC_MSG_RESULT($UDEV_SYNC)
 
 if test x$UDEV_SYNC = xyes; then
+       AC_CHECK_LIB(udev, udev_queue_get_udev_is_active, UDEV_LIBS="-ludev", AC_MSG_ERROR(bailing out... libudev library is required))
        AC_DEFINE([UDEV_SYNC_SUPPORT], 1, [Define to 1 to enable synchronisation with udev processing.])
 fi
 
@@ -659,23 +660,6 @@ AC_ARG_ENABLE(udev_rules, [  --enable-udev_rules     Install rule files needed f
 UDEV_RULES=$enableval, UDEV_RULES=$UDEV_SYNC)
 AC_MSG_RESULT($UDEV_RULES)
 
-################################################################################
-dnl -- Check for libudev's udev_queue_get_udev_is_active function when udev synchronisation is enabled
-
-if test x$UDEV_SYNC = xyes; then
-       AC_CHECK_LIB(udev, udev_queue_get_udev_is_active, HAVE_UDEV_QUEUE_GET_UDEV_IS_ACTIVE=yes,
-               HAVE_UDEV_QUEUE_GET_UDEV_IS_ACTIVE=no)
-
-               if test x$HAVE_UDEV_QUEUE_GET_UDEV_IS_ACTIVE = xyes; then
-                       AC_DEFINE([HAVE_UDEV_QUEUE_GET_UDEV_IS_ACTIVE], 1,
-                         [Define to 1 if libudev's udev_queue_get_udev_is_active function is available.])
-                       UDEV_LIBS="-ludev"
-               else
-                       UDEV_LIBS=
-                       AC_MSG_WARN(It won't be possible to get udev state. We will assume that udev is not running.)
-               fi
-fi
-
 ################################################################################
 dnl -- Compatibility mode
 AC_ARG_ENABLE(compat,   [  --enable-compat         Enable support for old device-mapper versions],
index 0a616e04ab815c491e5819c928240eca0c9db667..2f5faa377effb9cf8c821cc5e4950f13f76a4db5 100644 (file)
 #  include <sys/types.h>
 #  include <sys/ipc.h>
 #  include <sys/sem.h>
-#ifdef HAVE_UDEV_QUEUE_GET_UDEV_IS_ACTIVE
 #  define LIBUDEV_I_KNOW_THE_API_IS_SUBJECT_TO_CHANGE
 #  include <libudev.h>
 #endif
-#endif
 
 #ifdef linux
 #  include <linux/fs.h>
@@ -922,16 +920,6 @@ int dm_udev_wait(uint32_t cookie)
 
 static int _check_udev_is_running(void)
 {
-
-#  ifndef HAVE_UDEV_QUEUE_GET_UDEV_IS_ACTIVE
-
-       log_debug("Could not get udev state because libudev library "
-                 "was not found and it was not compiled in. "
-                 "Assuming udev is not running.");
-       return 0;
-
-#  else        /* HAVE_UDEV_QUEUE_GET_UDEV_IS_ACTIVE */
-
        struct udev *udev;
        struct udev_queue *udev_queue;
        int r;
@@ -956,9 +944,6 @@ static int _check_udev_is_running(void)
 bad:
        log_error("Could not get udev state. Assuming udev is not running.");
        return 0;
-
-#  endif       /* HAVE_UDEV_QUEUE_GET_UDEV_IS_ACTIVE */
-
 }
 
 void dm_udev_set_sync_support(int sync_with_udev)
@@ -1170,8 +1155,10 @@ int dm_udev_create_cookie(uint32_t *cookie)
 {
        int semid;
 
-       if (!dm_udev_get_sync_support())
+       if (!dm_udev_get_sync_support()) {
+               *cookie = 0;
                return 1;
+       }
 
        return _udev_notify_sem_create(cookie, &semid);
 }
index 69fa1287fa5eb142425260cd78a5d8a0718aa120..46f269b4a73efeb8d11bfacddf1d327e51352bcb 100644 (file)
 #  include <sys/types.h>
 #  include <sys/ipc.h>
 #  include <sys/sem.h>
-#ifdef HAVE_UDEV_QUEUE_GET_UDEV_IS_ACTIVE
 #  define LIBUDEV_I_KNOW_THE_API_IS_SUBJECT_TO_CHANGE
 #  include <libudev.h>
 #endif
-#endif
 
 /* FIXME Unused so far */
 #undef HAVE_SYS_STATVFS_H
@@ -931,12 +929,10 @@ static int _udevcookies(int argc __attribute((unused)), char **argv __attribute(
 #else  /* UDEV_SYNC_SUPPORT */
 static int _set_up_udev_support(const char *dev_dir)
 {
-#ifdef HAVE_UDEV_QUEUE_GET_UDEV_IS_ACTIVE
        struct udev *udev;
        const char *udev_dev_dir;
        size_t udev_dev_dir_len;
        int dirs_diff;
-#endif
        const char *env;
 
        if (_switches[NOUDEVSYNC_ARG])
@@ -955,7 +951,6 @@ static int _set_up_udev_support(const char *dev_dir)
                          " defined by --udevcookie option.",
                          _udev_cookie);
 
-#ifdef HAVE_UDEV_QUEUE_GET_UDEV_IS_ACTIVE
        if (!(udev = udev_new()) ||
            !(udev_dev_dir = udev_get_dev_path(udev)) ||
            !*udev_dev_dir) {
@@ -995,7 +990,6 @@ static int _set_up_udev_support(const char *dev_dir)
        }
 
        udev_unref(udev);
-#endif
        return 1;
 }
 
@@ -1007,7 +1001,8 @@ static int _udevcreatecookie(int argc, char **argv,
        if (!dm_udev_create_cookie(&cookie))
                return 0;
 
-       printf("0x%08" PRIX32 "\n", cookie);
+       if (cookie)
+               printf("0x%08" PRIX32 "\n", cookie);
 
        return 1;
 }
index 69e2c8736fede036362a0c5ea1e994ad245a089b..fea9b278d9dd66510bead85e2df4b68e08c754bb 100644 (file)
@@ -42,7 +42,7 @@ extern char *optarg;
 #  define OPTIND_INIT 1
 #endif
 
-#ifdef HAVE_UDEV_QUEUE_GET_UDEV_IS_ACTIVE
+#ifdef UDEV_SYNC_SUPPORT
 #  define LIBUDEV_I_KNOW_THE_API_IS_SUBJECT_TO_CHANGE
 #  include <libudev.h>
 #endif
@@ -919,7 +919,7 @@ static void _apply_settings(struct cmd_context *cmd)
 
 static int _set_udev_checking(struct cmd_context *cmd)
 {
-#ifdef HAVE_UDEV_QUEUE_GET_UDEV_IS_ACTIVE
+#ifdef UDEV_SYNC
        struct udev *udev;
        const char *udev_dev_dir;
        size_t udev_dev_dir_len;
This page took 0.049017 seconds and 5 git commands to generate.