From 93ecfa01d47f992a41694ef8c75f6e542bb5ffee Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Wed, 1 Apr 2009 12:26:08 +1100 Subject: grow: don't wait forever for critical section to pass. If an array reshape completed within 1 second, then --grow will not notice that it has finished and will keep waiting for the critical section to pass. So be more cautious in the test. Signed-off-by: NeilBrown --- sysfs.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'sysfs.c') diff --git a/sysfs.c b/sysfs.c index 2dad7d3..d4a1e49 100644 --- a/sysfs.c +++ b/sysfs.c @@ -466,6 +466,25 @@ int sysfs_get_ll(struct mdinfo *sra, struct mdinfo *dev, return 0; } +int sysfs_get_str(struct mdinfo *sra, struct mdinfo *dev, + char *name, char *val, int size) +{ + char fname[50]; + int n; + int fd; + sprintf(fname, "/sys/block/%s/md/%s/%s", + sra->sys_name, dev?dev->sys_name:"", name); + fd = open(fname, O_RDONLY); + if (fd < 0) + return -1; + n = read(fd, val, size); + close(fd); + if (n <= 0) + return -1; + val[n] = 0; + return n; +} + int sysfs_set_safemode(struct mdinfo *sra, unsigned long ms) { unsigned long sec; -- cgit