1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

dev-cache: skip different filesystems on dir scan

When scanning configured  /dev dir, avoid entring
directories with different filesystem.

This minimizes risk we will block on i.e. entring
directory with mount point.
This commit is contained in:
Zdenek Kabelac 2021-10-18 19:04:44 +02:00
parent bae1083472
commit 9cf4eac250
2 changed files with 10 additions and 0 deletions

View File

@ -1,5 +1,6 @@
Version 2.03.14 -
==================================
Device scanning is skipping different filesystems.
Print info message with too many or too large archived files.
Reduce metadata readings during scanning phase.
Optimize computation of crc32 check sum with multiple PVs.

View File

@ -1101,6 +1101,7 @@ static void _insert_dirs(struct dm_list *dirs)
static int _insert(const char *path, const struct stat *info,
int rec, int check_with_udev_db)
{
static long _st_dev = -1;
struct stat tinfo;
if (!info) {
@ -1111,12 +1112,20 @@ static int _insert(const char *path, const struct stat *info,
info = &tinfo;
}
if (_st_dev == -1)
_st_dev = info->st_dev; /* first dir device */
if (check_with_udev_db && !_device_in_udev_db(info->st_rdev)) {
log_very_verbose("%s: Not in udev db", path);
return 0;
}
if (S_ISDIR(info->st_mode)) { /* add a directory */
if (info->st_dev != _st_dev) {
log_debug_devs("%s: Different filesystem in directory", path);
return 1;
}
/* check it's not a symbolic link */
if (lstat(path, &tinfo) < 0) {
log_sys_very_verbose("lstat", path);