diff options
author | Neil Brown <neilb@suse.de> | 2005-04-04 07:16:24 +0200 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2005-04-04 07:16:24 +0200 |
commit | d17c1f8cbddb322f61c0b1ab4a06b5539dce4c52 (patch) | |
tree | 8e8ec89ef4bfeb0e10b86f748a4a5cb45e1ae14e | |
parent | Reread partitions file for each array being assembled. (diff) | |
download | mdadm-d17c1f8cbddb322f61c0b1ab4a06b5539dce4c52.tar.xz mdadm-d17c1f8cbddb322f61c0b1ab4a06b5539dce4c52.zip |
Reverse order of arrays when --stop --scan
so that stacked arrays are stopped properly.
Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au>
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | mdadm.c | 10 |
2 files changed, 12 insertions, 0 deletions
@@ -13,6 +13,8 @@ Changes Prior to 1.9.0 release - Add some missing closes of open file descriptors. - Reread /proc/partition for every array assembled when using it to find devices, rather than only once. + - Make "mdadm -Ss" stop stacked devices properly, by reversing the + order in which arrays are stopped. Changes Prior to 1.8.0 release - Makefile cleanup from Luca Berra <bluca@comedia.it> @@ -793,6 +793,16 @@ int main(int argc, char *argv[]) /* apply to all devices in /proc/mdstat */ struct mdstat_ent *ms = mdstat_read(0); struct mdstat_ent *e; + if (devmode == 'S') { + /* reverse order so that arrays made of arrays are stopped properly */ + struct mdstat_ent *sm = NULL; + while ((e=ms) != NULL) { + ms = e->next; + e->next = sm; + sm = e; + } + ms = sm; + } for (e=ms ; e ; e=e->next) { char *name = get_md_name(e->devnum); |