mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-21 13:34:40 +03:00
pvscan: warn about /dev/sda excluded by devices file
In most installations, /dev/sda* or /dev/vda* should be included in system.devices because the root, home, etc LVs are usually on sda or vda. Add a special case warning when a pvscan autoactivation command sees that /dev/sda* or /dev/vda* are excluded by system.devices, either not listed or having a different device id.
This commit is contained in:
parent
8db3b11e4e
commit
f840dbb320
@ -19,6 +19,7 @@
|
||||
#include "lib/metadata/metadata.h"
|
||||
#include "lib/label/hints.h"
|
||||
#include "lib/device/online.h"
|
||||
#include "lib/filters/filter.h"
|
||||
|
||||
#include <dirent.h>
|
||||
|
||||
@ -1435,6 +1436,27 @@ static int _pvscan_cache_all(struct cmd_context *cmd, int argc, char **argv,
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* If /dev/sda* of /dev/vda* is excluded by the devices file
|
||||
* it's usually a misconfiguration that prevents proper booting,
|
||||
* so make it a special case to give extra info to help debugging.
|
||||
*/
|
||||
static void _warn_excluded_root(struct cmd_context *cmd, struct device *dev)
|
||||
{
|
||||
struct dev_use *du;
|
||||
const char *cur_idname;
|
||||
|
||||
if (!(du = get_du_for_devname(cmd, dev_name(dev)))) {
|
||||
log_warn("WARNING: no autoactivation for %s: not found in system.devices.", dev_name(dev));
|
||||
return;
|
||||
}
|
||||
|
||||
cur_idname = device_id_system_read(cmd, dev, du->idtype);
|
||||
|
||||
log_warn("WARNING: no autoactivation for %s: system.devices %s current %s.",
|
||||
dev_name(dev), du->idname, cur_idname ?: "missing device id");
|
||||
}
|
||||
|
||||
static int _pvscan_cache_args(struct cmd_context *cmd, int argc, char **argv,
|
||||
struct dm_list *complete_vgnames)
|
||||
{
|
||||
@ -1545,6 +1567,12 @@ static int _pvscan_cache_args(struct cmd_context *cmd, int argc, char **argv,
|
||||
log_print_pvscan(cmd, "%s excluded: %s.",
|
||||
dev_name(devl->dev), dev_filtered_reason(devl->dev));
|
||||
dm_list_del(&devl->list);
|
||||
|
||||
/* Special case warning when probable root dev is missing from system.devices */
|
||||
if ((devl->dev->filtered_flags & DEV_FILTERED_DEVICES_FILE) &&
|
||||
(!strncmp(dev_name(devl->dev), "/dev/sda", 8) ||
|
||||
!strncmp(dev_name(devl->dev), "/dev/vda", 8)))
|
||||
_warn_excluded_root(cmd, devl->dev);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user