]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-device: actually read diskseq if told so
authorLennart Poettering <lennart@poettering.net>
Mon, 4 Apr 2022 13:18:57 +0000 (15:18 +0200)
committerLennart Poettering <lennart@poettering.net>
Mon, 4 Apr 2022 16:21:41 +0000 (18:21 +0200)
sd_device_get_diskseq() actually called device_read_uevent_file() but
that function didn't actually parse DISKSEQ= so far. Fix that.

src/libsystemd/sd-device/device-internal.h
src/libsystemd/sd-device/device-private.c
src/libsystemd/sd-device/sd-device.c

index 49d0f0fd1f3e77673037c8d6b40e84ac52a49366..7ea964acf9947a53a4a29bd9f4a1ffb8eb5af3bd 100644 (file)
@@ -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);
index 5f3644aac4d15d0cd58a4dc8816ad672e3f23871..de12ad7e00a62b2ab504f082110f1ea78005ac7f 100644 (file)
@@ -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;
 
index bf9217b649f2774219fe11d7776f68dc1a0cb365..22200c0eea25f5374f6f6726b1cc73b96509db0f 100644 (file)
@@ -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"))