From: Yu Watanabe Date: Sat, 27 Aug 2022 21:43:30 +0000 (+0900) Subject: sd-device: skip to check diskseq if device is not initialized X-Git-Tag: v252-rc1~308^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=42899bcee5a7ed08640e0f958fd9b48e5b21eb3d;p=thirdparty%2Fsystemd.git sd-device: skip to check diskseq if device is not initialized --- diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c index 26b9e51c937..a7ba7dd6e98 100644 --- a/src/libsystemd/sd-device/sd-device.c +++ b/src/libsystemd/sd-device/sd-device.c @@ -2422,13 +2422,20 @@ _public_ int sd_device_open(sd_device *device, int flags) { if (FLAGS_SET(flags, O_PATH)) return TAKE_FD(fd); - r = device_get_property_bool(device, "ID_IGNORE_DISKSEQ"); - if (r < 0 && r != -ENOENT) + /* If the device is not initialized, then we cannot determine if we should check diskseq through + * ID_IGNORE_DISKSEQ property. Let's skip to check diskseq in that case. */ + r = sd_device_get_is_initialized(device); + if (r < 0) return r; - if (r <= 0) { - r = sd_device_get_diskseq(device, &diskseq); + if (r > 0) { + r = device_get_property_bool(device, "ID_IGNORE_DISKSEQ"); if (r < 0 && r != -ENOENT) return r; + if (r <= 0) { + r = sd_device_get_diskseq(device, &diskseq); + if (r < 0 && r != -ENOENT) + return r; + } } fd2 = open(FORMAT_PROC_FD_PATH(fd), flags);