Lines 1008-1018
static int _udevcookies(CMD_ARGS)
Link Here
|
1008 |
#else /* UDEV_SYNC_SUPPORT */ |
1008 |
#else /* UDEV_SYNC_SUPPORT */ |
1009 |
static int _set_up_udev_support(const char *dev_dir) |
1009 |
static int _set_up_udev_support(const char *dev_dir) |
1010 |
{ |
1010 |
{ |
1011 |
struct udev *udev; |
|
|
1012 |
const char *udev_dev_dir; |
1013 |
size_t udev_dev_dir_len; |
1014 |
int dirs_diff; |
1011 |
int dirs_diff; |
1015 |
const char *env; |
1012 |
const char *env; |
|
|
1013 |
size_t len = strlen(dev_dir), udev_dir_len = strlen(DM_UDEV_DEV_DIR); |
1016 |
|
1014 |
|
1017 |
if (_switches[NOUDEVSYNC_ARG]) |
1015 |
if (_switches[NOUDEVSYNC_ARG]) |
1018 |
dm_udev_set_sync_support(0); |
1016 |
dm_udev_set_sync_support(0); |
Lines 1030-1043
static int _set_up_udev_support(const char *dev_dir)
Link Here
|
1030 |
" defined by --udevcookie option.", |
1028 |
" defined by --udevcookie option.", |
1031 |
_udev_cookie); |
1029 |
_udev_cookie); |
1032 |
|
1030 |
|
1033 |
if (!(udev = udev_new()) || |
|
|
1034 |
!(udev_dev_dir = udev_get_dev_path(udev)) || |
1035 |
!*udev_dev_dir) { |
1036 |
log_error("Could not get udev dev path."); |
1037 |
return 0; |
1038 |
} |
1039 |
udev_dev_dir_len = strlen(udev_dev_dir); |
1040 |
|
1041 |
/* |
1031 |
/* |
1042 |
* Normally, there's always a fallback action by libdevmapper if udev |
1032 |
* Normally, there's always a fallback action by libdevmapper if udev |
1043 |
* has not done its job correctly, e.g. the nodes were not created. |
1033 |
* has not done its job correctly, e.g. the nodes were not created. |
Lines 1049-1060
static int _set_up_udev_support(const char *dev_dir)
Link Here
|
1049 |
* is the same as "dev path" used by libdevmapper. |
1039 |
* is the same as "dev path" used by libdevmapper. |
1050 |
*/ |
1040 |
*/ |
1051 |
|
1041 |
|
1052 |
/* There's always a slash at the end of dev_dir. But check udev_dev_dir! */ |
|
|
1053 |
if (udev_dev_dir[udev_dev_dir_len - 1] != '/') |
1054 |
dirs_diff = strncmp(dev_dir, udev_dev_dir, udev_dev_dir_len); |
1055 |
else |
1056 |
dirs_diff = strcmp(dev_dir, udev_dev_dir); |
1057 |
|
1042 |
|
|
|
1043 |
/* |
1044 |
* DM_UDEV_DEV_DIR always has '/' at its end. |
1045 |
* If the dev_dir does not have it, be sure |
1046 |
* to make the right comparison without the '/' char! |
1047 |
*/ |
1048 |
if (dev_dir[len - 1] != '/') |
1049 |
udev_dir_len--; |
1050 |
|
1051 |
dirs_diff = udev_dir_len != len || |
1052 |
strncmp(DM_UDEV_DEV_DIR, dev_dir, len); |
1058 |
_udev_only = !dirs_diff && (_udev_cookie || !_switches[VERIFYUDEV_ARG]); |
1053 |
_udev_only = !dirs_diff && (_udev_cookie || !_switches[VERIFYUDEV_ARG]); |
1059 |
|
1054 |
|
1060 |
if (dirs_diff) { |
1055 |
if (dirs_diff) { |
Lines 1064-1074
static int _set_up_udev_support(const char *dev_dir)
Link Here
|
1064 |
"about udev not working correctly while processing " |
1059 |
"about udev not working correctly while processing " |
1065 |
"particular nodes will be suppressed. These nodes " |
1060 |
"particular nodes will be suppressed. These nodes " |
1066 |
"and symlinks will be managed in each directory " |
1061 |
"and symlinks will be managed in each directory " |
1067 |
"separately.", dev_dir, udev_dev_dir); |
1062 |
"separately.", dev_dir, DM_UDEV_DEV_DIR); |
1068 |
dm_udev_set_checking(0); |
1063 |
dm_udev_set_checking(0); |
1069 |
} |
1064 |
} |
1070 |
|
1065 |
|
1071 |
udev_unref(udev); |
|
|
1072 |
return 1; |
1066 |
return 1; |
1073 |
} |
1067 |
} |
1074 |
|
1068 |
|