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:
parent
3f2ada89f3
commit
ef400c3878
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user