1
0
mirror of https://github.com/systemd/systemd.git synced 2024-10-30 23:21:22 +03:00

udev: only ignore ENOENT or friends which suggest the block device is not exist

The ENOENT, ENXIO, and ENODEV error can happen easily when a block
device appears and soon removed. So, it is reasonable to ignore the
error. But other errors should not occur here, and hence let's handle
them as critical.
This commit is contained in:
Yu Watanabe 2022-03-12 20:40:58 +09:00 committed by Lennart Poettering
parent 3f2ada89f3
commit ef400c3878

View File

@ -399,8 +399,10 @@ static int worker_lock_block_device(sd_device *dev, int *ret_fd) {
fd = open(val, O_RDONLY|O_CLOEXEC|O_NOFOLLOW|O_NONBLOCK);
if (fd < 0) {
log_device_debug_errno(dev, errno, "Failed to open '%s', ignoring: %m", val);
return 0;
bool ignore = ERRNO_IS_DEVICE_ABSENT(errno);
log_device_debug_errno(dev, errno, "Failed to open '%s'%s: %m", val, ignore ? ", ignoring" : "");
return ignore ? 0 : -errno;
}
if (flock(fd, LOCK_SH|LOCK_NB) < 0)