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:
parent
bae1083472
commit
9cf4eac250
@ -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.
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user