From: Song Liu Date: Tue, 15 Dec 2015 01:43:42 +0000 (-0800) Subject: add sysfs_array_state to struct mdinfo X-Git-Tag: mdadm-3.4~34 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5aa644c68ab92b61c7d8f3fba1f311f71f17e455;p=thirdparty%2Fmdadm.git add sysfs_array_state to struct mdinfo Add sysfs_array_state to struct mdinfo, and add GET_ARRAY_STATE to options of sysfs_read. Signed-off-by: Song Liu Signed-off-by: Shaohua Li Signed-off-by: NeilBrown --- diff --git a/mdadm.h b/mdadm.h index 840a3597..21fe7894 100755 --- a/mdadm.h +++ b/mdadm.h @@ -305,6 +305,9 @@ struct mdinfo { #define DS_REMOVE 1024 #define DS_UNBLOCK 2048 int prev_state, curr_state, next_state; + + /* info read from sysfs */ + char sysfs_array_state[20]; }; struct createinfo { @@ -588,6 +591,7 @@ enum sysfs_read_flags { GET_SIZE = (1 << 22), GET_STATE = (1 << 23), GET_ERROR = (1 << 24), + GET_ARRAY_STATE = (1 << 25), }; /* If fd >= 0, get the array it is open on, diff --git a/sysfs.c b/sysfs.c index f1fd610b..26003432 100644 --- a/sysfs.c +++ b/sysfs.c @@ -230,6 +230,13 @@ struct mdinfo *sysfs_read(int fd, char *devnm, unsigned long options) goto abort; } + if (options & GET_ARRAY_STATE) { + strcpy(base, "array_state"); + if (load_sys(fname, sra->sysfs_array_state)) + goto abort; + } else + sra->sysfs_array_state[0] = 0; + if (! (options & GET_DEVS)) return sra;