diff options
author | NeilBrown <neilb@suse.de> | 2012-04-18 11:00:07 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2012-04-18 11:00:07 +1000 |
commit | c2ecf5f61aca2d73b7d5a6cb3a26973916d5c0d1 (patch) | |
tree | 747e82e252a746c42c01879ec41587ae6c336935 /Detail.c | |
parent | 480f3566411675ec41f18e5f6e15429f891e144c (diff) |
Add --prefer option for --detail and --monitor
Both --detail and --monitor can report the names of member
devices on an array, and do so by searching /dev and finding
the shortest name that matches.
If
--prefer=foo
is given, they will instead prefer a name that contain /foo/.
So
mdadm --detail /dev/md0 --prefer=by-path
will list the component devices via their /dev/disk/by-path/xxx
names.
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'Detail.c')
-rw-r--r-- | Detail.c | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -27,7 +27,7 @@ #include "md_u.h" #include <dirent.h> -int Detail(char *dev, int brief, int export, int test, char *homehost) +int Detail(char *dev, int brief, int export, int test, char *homehost, char *prefer) { /* * Print out details for an md array by using @@ -105,7 +105,7 @@ int Detail(char *dev, int brief, int export, int test, char *homehost) int dn = st->container_dev; member = subarray; - container = map_dev(dev2major(dn), dev2minor(dn), 1); + container = map_dev_preferred(dev2major(dn), dev2minor(dn), 1, prefer); } /* try to load a superblock */ @@ -491,8 +491,9 @@ This is pretty boring vbuf[10+nlen] != '/') continue; dn = devname2devnum(de->d_name); - printf(" %s", map_dev(dev2major(dn), - dev2minor(dn), 1)); + printf(" %s", map_dev_preferred( + dev2major(dn), + dev2minor(dn), 1, prefer)); } if (dir) closedir(dir); @@ -558,7 +559,7 @@ This is pretty boring if (test && d < array.raid_disks && !(disk.state & (1<<MD_DISK_SYNC))) rv |= 1; - if ((dv=map_dev(disk.major, disk.minor, 0))) { + if ((dv=map_dev_preferred(disk.major, disk.minor, 0, prefer))) { if (brief) { if (devices) { devices = realloc(devices, |