1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-02-28 05:57:49 +03:00

Add support to disable udev checking: LVM_UDEV_DISABLE_CHECKING=1 env. var.

LVM_UDEV_DISABLE_CHECKING=1 applies for /dev/<vgname> content only.
We still need to define DM_UDEV_DISABLE_CHECKING=1 for /dev/mapper content.
This commit is contained in:
Peter Rajnoha 2010-01-11 15:40:03 +00:00
parent 8e7c6b60fb
commit 8b70a0d0b7
5 changed files with 35 additions and 3 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.57 -
====================================
Add support to disable udev checking: LVM_UDEV_DISABLE_CHECKING=1 env. var.
Add redundant mirror log option.
Add capability to split off and keep mirror legs to lvconvert.
Change background polldaemon's process name to "(lvm2)".

View File

@ -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);

View File

@ -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,14 @@ void init_is_static(unsigned value)
_is_static = value;
}
void init_udev_checking(int checking)
{
if ((_udev_checking = checking))
log_debug("LVM udev checking enabled");
else
log_debug("LVM udev checking disabled");
}
void set_cmd_name(const char *cmd)
{
strncpy(_cmd_name, cmd, sizeof(_cmd_name));
@ -210,3 +219,8 @@ unsigned is_static(void)
{
return _is_static;
}
int udev_checking(void)
{
return _udev_checking;
}

View File

@ -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);

View File

@ -909,6 +909,19 @@ static void _apply_settings(struct cmd_context *cmd)
cmd->handles_missing_pvs = 0;
}
static void _set_udev_checking()
{
const char *e;
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);
}
static const char *_copy_command_line(struct cmd_context *cmd, int argc, char **argv)
{
int i, space;
@ -1003,6 +1016,8 @@ int lvm_run_command(struct cmd_context *cmd, int argc, char **argv)
log_debug("O_DIRECT will be used");
#endif
_set_udev_checking();
if ((ret = _process_common_commands(cmd)))
goto_out;