diff options
author | Lennart Poettering <lennart@poettering.net> | 2022-04-04 15:18:57 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2022-04-04 18:21:41 +0200 |
commit | 1ce0d040593c92adebceed29618f170faaee0839 (patch) | |
tree | 97749f056420561a73be316c483526b7b6587618 | |
parent | d4df6ce2154caa4e1f2fc2df818cd32b523a96ab (diff) | |
download | systemd-1ce0d040593c92adebceed29618f170faaee0839.tar.gz |
sd-device: actually read diskseq if told so
sd_device_get_diskseq() actually called device_read_uevent_file() but
that function didn't actually parse DISKSEQ= so far. Fix that.
-rw-r--r-- | src/libsystemd/sd-device/device-internal.h | 1 | ||||
-rw-r--r-- | src/libsystemd/sd-device/device-private.c | 22 | ||||
-rw-r--r-- | src/libsystemd/sd-device/sd-device.c | 33 |
3 files changed, 33 insertions, 23 deletions
diff --git a/src/libsystemd/sd-device/device-internal.h b/src/libsystemd/sd-device/device-internal.h index 49d0f0fd1f..7ea964acf9 100644 --- a/src/libsystemd/sd-device/device-internal.h +++ b/src/libsystemd/sd-device/device-internal.h @@ -109,6 +109,7 @@ int device_set_devname(sd_device *device, const char *devname); int device_set_devtype(sd_device *device, const char *devtype); int device_set_devnum(sd_device *device, const char *major, const char *minor); int device_set_subsystem(sd_device *device, const char *subsystem); +int device_set_diskseq(sd_device *device, const char *str); int device_set_drivers_subsystem(sd_device *device); int device_set_driver(sd_device *device, const char *driver); int device_set_usec_initialized(sd_device *device, usec_t when); diff --git a/src/libsystemd/sd-device/device-private.c b/src/libsystemd/sd-device/device-private.c index 5f3644aac4..de12ad7e00 100644 --- a/src/libsystemd/sd-device/device-private.c +++ b/src/libsystemd/sd-device/device-private.c @@ -255,28 +255,6 @@ static int device_set_seqnum(sd_device *device, const char *str) { return 0; } -static int device_set_diskseq(sd_device *device, const char *str) { - uint64_t diskseq; - int r; - - assert(device); - assert(str); - - r = safe_atou64(str, &diskseq); - if (r < 0) - return r; - if (diskseq == 0) - return -EINVAL; - - r = device_add_property_internal(device, "DISKSEQ", str); - if (r < 0) - return r; - - device->diskseq = diskseq; - - return 0; -} - static int device_amend(sd_device *device, const char *key, const char *value) { int r; diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c index bf9217b649..22200c0eea 100644 --- a/src/libsystemd/sd-device/sd-device.c +++ b/src/libsystemd/sd-device/sd-device.c @@ -570,7 +570,34 @@ int device_set_devnum(sd_device *device, const char *major, const char *minor) { return 0; } -static int handle_uevent_line(sd_device *device, const char *key, const char *value, const char **major, const char **minor) { +int device_set_diskseq(sd_device *device, const char *str) { + uint64_t diskseq; + int r; + + assert(device); + assert(str); + + r = safe_atou64(str, &diskseq); + if (r < 0) + return r; + if (diskseq == 0) + return -EINVAL; + + r = device_add_property_internal(device, "DISKSEQ", str); + if (r < 0) + return r; + + device->diskseq = diskseq; + + return 0; +} + +static int handle_uevent_line( + sd_device *device, + const char *key, + const char *value, + const char **major, + const char **minor) { int r; assert(device); @@ -595,6 +622,10 @@ static int handle_uevent_line(sd_device *device, const char *key, const char *va r = device_set_devmode(device, value); if (r < 0) return r; + } else if (streq(key, "DISKSEQ")) { + r = device_set_diskseq(device, value); + if (r < 0) + return r; } else if (streq(key, "MAJOR")) *major = value; else if (streq(key, "MINOR")) |