|
 |
2c1b57 |
From 67a02d520085b01a1b9e6ea59fb30e79c5649c9c Mon Sep 17 00:00:00 2001
|
|
 |
2c1b57 |
From: Jes Sorensen <Jes.Sorensen@gmail.com>
|
|
 |
2c1b57 |
Date: Thu, 30 Mar 2017 16:02:36 -0400
|
|
 |
2c1b57 |
Subject: [RHEL7.5 PATCH 047/169] sysfs: Use the presence of
|
|
 |
2c1b57 |
/sys/block/<dev>/md as indicator of valid device
|
|
 |
2c1b57 |
|
|
 |
2c1b57 |
Rather than calling ioctl(RAID_VERSION), use the presence of
|
|
 |
2c1b57 |
/sys/block/<dev>/md as indicator of the device being valid and sysfs
|
|
 |
2c1b57 |
being active for it. The ioctl could return valid data, but sysfs
|
|
 |
2c1b57 |
not mounted, which renders sysfs_init() useless anyway.
|
|
 |
2c1b57 |
|
|
 |
2c1b57 |
Signed-off-by: Jes Sorensen <Jes.Sorensen@gmail.com>
|
|
 |
2c1b57 |
---
|
|
 |
2c1b57 |
sysfs.c | 17 ++++++++++++-----
|
|
 |
2c1b57 |
1 file changed, 12 insertions(+), 5 deletions(-)
|
|
 |
2c1b57 |
|
|
 |
2c1b57 |
diff --git a/sysfs.c b/sysfs.c
|
|
 |
2c1b57 |
index 2a91ba0..93ec3de 100644
|
|
 |
2c1b57 |
--- a/sysfs.c
|
|
 |
2c1b57 |
+++ b/sysfs.c
|
|
 |
2c1b57 |
@@ -86,15 +86,22 @@ void sysfs_init_dev(struct mdinfo *mdi, unsigned long devid)
|
|
 |
2c1b57 |
|
|
 |
2c1b57 |
void sysfs_init(struct mdinfo *mdi, int fd, char *devnm)
|
|
 |
2c1b57 |
{
|
|
 |
2c1b57 |
+ struct stat stb;
|
|
 |
2c1b57 |
+ char fname[MAX_SYSFS_PATH_LEN];
|
|
 |
2c1b57 |
+
|
|
 |
2c1b57 |
mdi->sys_name[0] = 0;
|
|
 |
2c1b57 |
- if (fd >= 0) {
|
|
 |
2c1b57 |
- mdu_version_t vers;
|
|
 |
2c1b57 |
- if (ioctl(fd, RAID_VERSION, &vers) != 0)
|
|
 |
2c1b57 |
- return;
|
|
 |
2c1b57 |
+ if (fd >= 0)
|
|
 |
2c1b57 |
devnm = fd2devnm(fd);
|
|
 |
2c1b57 |
- }
|
|
 |
2c1b57 |
+
|
|
 |
2c1b57 |
if (devnm == NULL)
|
|
 |
2c1b57 |
return;
|
|
 |
2c1b57 |
+
|
|
 |
2c1b57 |
+ snprintf(fname, MAX_SYSFS_PATH_LEN, "/sys/block/%s/md", devnm);
|
|
 |
2c1b57 |
+
|
|
 |
2c1b57 |
+ if (stat(fname, &stb))
|
|
 |
2c1b57 |
+ return;
|
|
 |
2c1b57 |
+ if (!S_ISDIR(stb.st_mode))
|
|
 |
2c1b57 |
+ return;
|
|
 |
2c1b57 |
strcpy(mdi->sys_name, devnm);
|
|
 |
2c1b57 |
}
|
|
 |
2c1b57 |
|
|
 |
2c1b57 |
--
|
|
 |
2c1b57 |
2.7.4
|
|
 |
2c1b57 |
|