diff options
author | NeilBrown <neilb@suse.de> | 2009-08-11 13:02:49 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2009-08-11 13:02:49 +1000 |
commit | 7236ee7ad4a15b0d800cfc1ccbcee78158a05ada (patch) | |
tree | 0ec44aabb9b119b23098a79f285b9a241500b3ee /sysfs.c | |
parent | a628848379c07c79485a49c7f0c684ece02ae3b7 (diff) |
Handle extra 'grow' variations.
UNFINISHED
Diffstat (limited to 'sysfs.c')
-rw-r--r-- | sysfs.c | 23 |
1 files changed, 15 insertions, 8 deletions
@@ -487,22 +487,29 @@ int sysfs_get_ll(struct mdinfo *sra, struct mdinfo *dev, return n; } +int sysfs_fd_get_str(int fd, char *val, int size) +{ + int n; + + lseek(fd, 0, 0); + n = read(fd, val, size); + if (n <= 0) + return -1; + val[n] = 0; + return n; +} + 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); + + fd = sysfs_get_fd(sra, dev, name); if (fd < 0) return -1; - n = read(fd, val, size); + n = sysfs_fd_get_str(fd, val, size); close(fd); - if (n <= 0) - return -1; - val[n] = 0; return n; } |