1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-03-11 20:58:50 +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 d2b43c4b34
commit a750353641
5 changed files with 35 additions and 3 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.57 - Version 2.02.57 -
==================================== ====================================
Add support to disable udev checking: LVM_UDEV_DISABLE_CHECKING=1 env. var.
Add redundant mirror log option. Add redundant mirror log option.
Add capability to split off and keep mirror legs to lvconvert. Add capability to split off and keep mirror legs to lvconvert.
Change background polldaemon's process name to "(lvm2)". 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; 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. */ /* Check udev created the correct link. */
if (!stat(link_path, &buf_lp) && if (!stat(link_path, &buf_lp) &&
!stat(lv_path, &buf)) { !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); log_sys_error("unlink", lv_path);
return 0; 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 " log_warn("The link %s should had been created by udev "
"but it was not found. Falling back to " "but it was not found. Falling back to "
"direct link creation.", lv_path); "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) if (lstat(lv_path, &buf) && errno == ENOENT)
return 1; 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 " log_warn("The link %s should have been removed by udev "
"but it is still present. Falling back to " "but it is still present. Falling back to "
"direct link removal.", lv_path); "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 _ignore_suspended_devices = 0;
static int _error_message_produced = 0; static int _error_message_produced = 0;
static unsigned _is_static = 0; static unsigned _is_static = 0;
static int _udev_checking = 1;
void init_verbose(int level) void init_verbose(int level)
{ {
@ -112,6 +113,14 @@ void init_is_static(unsigned value)
_is_static = 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) void set_cmd_name(const char *cmd)
{ {
strncpy(_cmd_name, cmd, sizeof(_cmd_name)); strncpy(_cmd_name, cmd, sizeof(_cmd_name));
@ -210,3 +219,8 @@ unsigned is_static(void)
{ {
return _is_static; 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_ignore_suspended_devices(int ignore);
void init_error_message_produced(int produced); void init_error_message_produced(int produced);
void init_is_static(unsigned value); void init_is_static(unsigned value);
void init_udev_checking(int checking);
void set_cmd_name(const char *cmd_name); void set_cmd_name(const char *cmd_name);
@ -54,6 +55,7 @@ int background_polling(void);
int ignore_suspended_devices(void); int ignore_suspended_devices(void);
const char *log_command_name(void); const char *log_command_name(void);
unsigned is_static(void); unsigned is_static(void);
int udev_checking(void);
#define DMEVENTD_MONITOR_IGNORE -1 #define DMEVENTD_MONITOR_IGNORE -1
int dmeventd_monitor_mode(void); int dmeventd_monitor_mode(void);

View File

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