policy: NULL path isn't really acceptable - use the devname

According to:
	commit b451aa4846
	Fix handling for "auto" line in mdadm.conf

a NULL path isn't really acceptable and the devname should be used instead.

Signed-off-by: Lukasz Dorau <lukasz.dorau@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
Lukasz Dorau 2013-12-19 13:02:12 +01:00 committed by NeilBrown
parent 2ca20929fa
commit 75a721fd7d
1 changed files with 17 additions and 18 deletions

View File

@ -200,26 +200,25 @@ static char *disk_path(struct mdinfo *disk)
int rv;
by_path = opendir(symlink);
if (!by_path)
return NULL;
prefix_len = strlen(symlink);
while ((ent = readdir(by_path)) != NULL) {
if (ent->d_type != DT_LNK)
continue;
strncpy(symlink + prefix_len,
ent->d_name,
sizeof(symlink) - prefix_len);
if (stat(symlink, &stb) < 0)
continue;
if ((stb.st_mode & S_IFMT) != S_IFBLK)
continue;
if (stb.st_rdev != makedev(disk->disk.major, disk->disk.minor))
continue;
if (by_path) {
prefix_len = strlen(symlink);
while ((ent = readdir(by_path)) != NULL) {
if (ent->d_type != DT_LNK)
continue;
strncpy(symlink + prefix_len,
ent->d_name,
sizeof(symlink) - prefix_len);
if (stat(symlink, &stb) < 0)
continue;
if ((stb.st_mode & S_IFMT) != S_IFBLK)
continue;
if (stb.st_rdev != makedev(disk->disk.major, disk->disk.minor))
continue;
closedir(by_path);
return xstrdup(ent->d_name);
}
closedir(by_path);
return xstrdup(ent->d_name);
}
closedir(by_path);
/* A NULL path isn't really acceptable - use the devname.. */
sprintf(symlink, "/sys/dev/block/%d:%d", disk->disk.major, disk->disk.minor);
rv = readlink(symlink, nm, sizeof(nm)-1);