|
 |
790dca |
From e2308733910a157b0a4d4e78721f239d44b91a24 Mon Sep 17 00:00:00 2001
|
|
 |
790dca |
From: Mariusz Tkaczyk <mariusz.tkaczyk@intel.com>
|
|
 |
790dca |
Date: Wed, 9 Sep 2020 10:31:17 +0200
|
|
 |
790dca |
Subject: [PATCH 092/108] Monitor: refresh mdstat fd after select
|
|
 |
790dca |
|
|
 |
790dca |
After 52209d6ee118 ("Monitor: release /proc/mdstat fd when no arrays
|
|
 |
790dca |
present") mdstat fd is closed if mdstat is empty or cannot be opened.
|
|
 |
790dca |
It causes that monitor is not able to select on mdstat. Select
|
|
 |
790dca |
doesn't fail because it gets valid descriptor to a different resource.
|
|
 |
790dca |
As a result any new event will be unnoticed until timeout (delay).
|
|
 |
790dca |
|
|
 |
790dca |
Refresh mdstat after wake up, don't poll on wrong resource.
|
|
 |
790dca |
|
|
 |
790dca |
Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@intel.com>
|
|
 |
790dca |
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
|
|
 |
790dca |
---
|
|
 |
790dca |
Monitor.c | 6 +++---
|
|
 |
790dca |
mdstat.c | 4 ++--
|
|
 |
790dca |
2 files changed, 5 insertions(+), 5 deletions(-)
|
|
 |
790dca |
|
|
 |
790dca |
diff --git a/Monitor.c b/Monitor.c
|
|
 |
790dca |
index 2d6b3b9..80a3200 100644
|
|
 |
790dca |
--- a/Monitor.c
|
|
 |
790dca |
+++ b/Monitor.c
|
|
 |
790dca |
@@ -216,8 +216,6 @@ int Monitor(struct mddev_dev *devlist,
|
|
 |
790dca |
if (mdstat)
|
|
 |
790dca |
free_mdstat(mdstat);
|
|
 |
790dca |
mdstat = mdstat_read(oneshot ? 0 : 1, 0);
|
|
 |
790dca |
- if (!mdstat)
|
|
 |
790dca |
- mdstat_close();
|
|
 |
790dca |
|
|
 |
790dca |
for (st = statelist; st; st = st->next)
|
|
 |
790dca |
if (check_array(st, mdstat, c->test, &info,
|
|
 |
790dca |
@@ -238,8 +236,10 @@ int Monitor(struct mddev_dev *devlist,
|
|
 |
790dca |
if (!new_found) {
|
|
 |
790dca |
if (oneshot)
|
|
 |
790dca |
break;
|
|
 |
790dca |
- else
|
|
 |
790dca |
+ else {
|
|
 |
790dca |
mdstat_wait(c->delay);
|
|
 |
790dca |
+ mdstat_close();
|
|
 |
790dca |
+ }
|
|
 |
790dca |
}
|
|
 |
790dca |
c->test = 0;
|
|
 |
790dca |
|
|
 |
790dca |
diff --git a/mdstat.c b/mdstat.c
|
|
 |
790dca |
index 20577a3..48559e6 100644
|
|
 |
790dca |
--- a/mdstat.c
|
|
 |
790dca |
+++ b/mdstat.c
|
|
 |
790dca |
@@ -135,7 +135,6 @@ struct mdstat_ent *mdstat_read(int hold, int start)
|
|
 |
790dca |
if (hold && mdstat_fd != -1) {
|
|
 |
790dca |
off_t offset = lseek(mdstat_fd, 0L, 0);
|
|
 |
790dca |
if (offset == (off_t)-1) {
|
|
 |
790dca |
- mdstat_close();
|
|
 |
790dca |
return NULL;
|
|
 |
790dca |
}
|
|
 |
790dca |
fd = dup(mdstat_fd);
|
|
 |
790dca |
@@ -312,7 +311,8 @@ void mdstat_wait(int seconds)
|
|
 |
790dca |
if (mdstat_fd >= 0) {
|
|
 |
790dca |
FD_SET(mdstat_fd, &fds);
|
|
 |
790dca |
maxfd = mdstat_fd;
|
|
 |
790dca |
- }
|
|
 |
790dca |
+ } else
|
|
 |
790dca |
+ return;
|
|
 |
790dca |
tm.tv_sec = seconds;
|
|
 |
790dca |
tm.tv_usec = 0;
|
|
 |
790dca |
select(maxfd + 1, NULL, NULL, &fds, &tm;;
|
|
 |
790dca |
--
|
|
 |
790dca |
2.7.5
|
|
 |
790dca |
|