summaryrefslogtreecommitdiffstats
path: root/util.c
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2008-11-10 09:30:07 -0700
committerDan Williams <dan.j.williams@intel.com>2008-11-10 09:30:07 -0700
commitbf68e9d9ab185121b6004fc81b531bce8348726d (patch)
treea42e2ce4644e0443cf98e2761a1f27a72204f955 /util.c
parentef70b9f4ef7a3a9f70b3a09b3a55b1cc675c0a37 (diff)
downloadmdadm-bf68e9d9ab185121b6004fc81b531bce8348726d.tar.gz
mdadm-bf68e9d9ab185121b6004fc81b531bce8348726d.tar.xz
mdadm-bf68e9d9ab185121b6004fc81b531bce8348726d.zip
fix add_dev() handling of broken links
Resolves issues like: mdadm -Ss mdadm: unable to open /dev/md/r1: No such file or directory ...where /dev/md/r1 points to a removed device. Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'util.c')
-rw-r--r--util.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/util.c b/util.c
index 8845a0f..b2fbec7 100644
--- a/util.c
+++ b/util.c
@@ -467,8 +467,10 @@ int devlist_ready = 0;
int add_dev(const char *name, const struct stat *stb, int flag, struct FTW *s)
{
struct stat st;
+
if (S_ISLNK(stb->st_mode)) {
- stat(name, &st);
+ if (stat(name, &st) != 0)
+ return 0;
stb = &st;
}