chiark / gitweb /
edd_id: check that EDD id is unique
authorJohn Hull <john_hull@dell.com>
Fri, 16 Sep 2005 19:10:12 +0000 (21:10 +0200)
committerKay Sievers <kay.sievers@suse.de>
Fri, 16 Sep 2005 19:10:12 +0000 (21:10 +0200)
The attached patch adds a check to edd_id.c to verify that the MBR
signature on the device node passed to the program is unique to only
that disk.

Signed-off-by: John Hull <john_hull@dell.com>
extras/edd_id/edd_id.c

index 504aac3..8ac50e9 100644 (file)
@@ -63,6 +63,7 @@ int main(int argc, char *argv[])
        int sysfs_fd;
        DIR *dir = NULL;
        int rc = 1;
+       char *match = NULL;
 
        logging_init("edd_id");
 
@@ -165,14 +166,23 @@ int main(int argc, char *argv[])
 
                sysfs_id = strtoul(sysfs_id_buf, NULL, 16);
                if (disk_id == sysfs_id) {
+                       if (!match) {
+                               match = dent->d_name;
+                       } else {
+                               info("'%s' does not have a unique signature", node);
+                               fprintf(stderr, "'%s' does not have a unique signature\n", node);
+                               rc=10;
+                               goto exit;
+                       }
+               }
+
+       }
+
                        if (export)
-                               printf("ID_EDD=%s\n", dent->d_name);
+               printf("ID_EDD=%s\n", match);
                        else
-                               printf("%s\n", dent->d_name);
+               printf("%s\n", match);
                        rc = 0;
-                       break;
-               }
-       }
 
 close:
        close(disk_fd);