From 77472ff8d0a7e72b2da72c05dbbe1bf1adc0f2ca Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Sat, 12 Jul 2008 20:28:38 +1000 Subject: [PATCH] Introduce devname2devnum and use it instead of opencoding. --- mdadm.h | 1 + mdstat.c | 6 +----- sysfs.c | 8 +------- util.c | 16 ++++++++++++---- 4 files changed, 15 insertions(+), 16 deletions(-) diff --git a/mdadm.h b/mdadm.h index 7a6b63f4..72104da1 100644 --- a/mdadm.h +++ b/mdadm.h @@ -775,6 +775,7 @@ extern int mdmon_running(int devnum); extern int signal_mdmon(int devnum); extern char *devnum2devname(int num); +extern int devname2devnum(char *name); extern int fd2devnum(int fd); static inline int dev2major(int d) diff --git a/mdstat.c b/mdstat.c index 040df150..4bb29d85 100644 --- a/mdstat.c +++ b/mdstat.c @@ -191,11 +191,7 @@ struct mdstat_ent *mdstat_read(int hold, int start) * there. */ struct mdstat_ent **ih; - int dn2; - if (strncmp(w, "md_d", 4)==0) - dn2 = -1-strtoul(w+4, &ep, 10); - else - dn2 = strtoul(w+2, &ep, 10); + int dn2 = devname2devnum(w); ih = &all; while (ih != insert_here && *ih && (*ih)->devnum != dn2) diff --git a/sysfs.c b/sysfs.c index b7a95eda..847a4e1e 100644 --- a/sysfs.c +++ b/sysfs.c @@ -59,15 +59,9 @@ void sysfs_free(struct mdinfo *sra) int sysfs_open(int devnum, char *devname, char *attr) { char fname[50]; - char sys_name[16]; int fd; - if (devnum >= 0) - sprintf(sys_name, "md%d", devnum); - else - sprintf(sys_name, "md_d%d", - -1-devnum); - sprintf(fname, "/sys/block/%s/md/", sys_name); + sprintf(fname, "/sys/block/%s/md/", devnum2devname(devnum)); if (devname) { strcat(fname, devname); strcat(fname, "/"); diff --git a/util.c b/util.c index 55342664..0c1dfeeb 100644 --- a/util.c +++ b/util.c @@ -826,10 +826,7 @@ struct supertype *super_by_fd(int fd) int devnum; if (subarray) *subarray++ = '\0'; - if (strncmp(dev, "md_d", 4) == 0) - devnum = -1-atoi(dev+4); - else - devnum = atoi(dev+2); + devnum = devname2devnum(dev); subarray = strdup(subarray); if (sra) sysfs_free(sra); @@ -1013,6 +1010,17 @@ char *devnum2devname(int num) return strdup(name); } +int devname2devnum(char *name) +{ + char *ep; + int num; + if (strncmp(name, "md_d", 4)==0) + num = -1-strtoul(name+4, &ep, 10); + else + num = strtoul(name+2, &ep, 10); + return num; +} + int fd2devnum(int fd) { struct stat stb; -- 2.39.2