[lvm-devel] [PATCH 1/4] Add support for lvm2 to disable udev checking on request
Peter Rajnoha
prajnoha at redhat.com
Fri Jan 8 14:52:57 UTC 2010
The same as previous patch, but now for LVM2 where we can use LVM_UDEV_DISABLE_CHECKING=1 env
var for checking VG/LV symlinks (we still use DM_UDEV_DISABLE_CHECKING=1 for /dev/mapper
content).
Peter
diff --git a/lib/activate/fs.c b/lib/activate/fs.c
index d1691b8..1f75c40 100644
--- a/lib/activate/fs.c
+++ b/lib/activate/fs.c
@@ -166,7 +166,7 @@ static int _mk_link(const char *dev_dir, const char *vg_name,
return 0;
}
- if (dm_udev_get_sync_support() && check_udev) {
+ if (dm_udev_get_sync_support() && udev_checking() && check_udev) {
/* Check udev created the correct link. */
if (!stat(link_path, &buf_lp) &&
!stat(lv_path, &buf)) {
@@ -190,7 +190,7 @@ static int _mk_link(const char *dev_dir, const char *vg_name,
log_sys_error("unlink", lv_path);
return 0;
}
- } else if (dm_udev_get_sync_support() && check_udev)
+ } else if (dm_udev_get_sync_support() && udev_checking() && check_udev)
log_warn("The link %s should had been created by udev "
"but it was not found. Falling back to "
"direct link creation.", lv_path);
@@ -221,7 +221,7 @@ static int _rm_link(const char *dev_dir, const char *vg_name,
if (lstat(lv_path, &buf) && errno == ENOENT)
return 1;
- else if (dm_udev_get_sync_support() && check_udev)
+ else if (dm_udev_get_sync_support() && udev_checking() && check_udev)
log_warn("The link %s should have been removed by udev "
"but it is still present. Falling back to "
"direct link removal.", lv_path);
diff --git a/lib/commands/toolcontext.c b/lib/commands/toolcontext.c
index a076e93..16d793c 100644
--- a/lib/commands/toolcontext.c
+++ b/lib/commands/toolcontext.c
@@ -72,6 +72,14 @@ static int _get_env_vars(struct cmd_context *cmd)
}
}
+ if ((e = getenv("DM_UDEV_DISABLE_CHECKING")) &&
+ !strcmp(e, "1"))
+ dm_udev_set_checking(0);
+
+ if ((e = getenv("LVM_UDEV_DISABLE_CHECKING")) &&
+ !strcmp(e, "1"))
+ init_udev_checking(0);
+
return 1;
}
diff --git a/lib/misc/lvm-globals.c b/lib/misc/lvm-globals.c
index 45a2e35..9c3ac32 100644
--- a/lib/misc/lvm-globals.c
+++ b/lib/misc/lvm-globals.c
@@ -39,6 +39,7 @@ static int _background_polling = DEFAULT_BACKGROUND_POLLING;
static int _ignore_suspended_devices = 0;
static int _error_message_produced = 0;
static unsigned _is_static = 0;
+static int _udev_checking = 1;
void init_verbose(int level)
{
@@ -112,6 +113,11 @@ void init_is_static(unsigned value)
_is_static = value;
}
+void init_udev_checking(int checking)
+{
+ _udev_checking = checking;
+}
+
void set_cmd_name(const char *cmd)
{
strncpy(_cmd_name, cmd, sizeof(_cmd_name));
@@ -210,3 +216,8 @@ unsigned is_static(void)
{
return _is_static;
}
+
+int udev_checking(void)
+{
+ return _udev_checking;
+}
diff --git a/lib/misc/lvm-globals.h b/lib/misc/lvm-globals.h
index 1ce9c56..0134c32 100644
--- a/lib/misc/lvm-globals.h
+++ b/lib/misc/lvm-globals.h
@@ -36,6 +36,7 @@ void init_background_polling(int polling);
void init_ignore_suspended_devices(int ignore);
void init_error_message_produced(int produced);
void init_is_static(unsigned value);
+void init_udev_checking(int checking);
void set_cmd_name(const char *cmd_name);
@@ -54,6 +55,7 @@ int background_polling(void);
int ignore_suspended_devices(void);
const char *log_command_name(void);
unsigned is_static(void);
+int udev_checking(void);
#define DMEVENTD_MONITOR_IGNORE -1
int dmeventd_monitor_mode(void);
More information about the lvm-devel
mailing list