Status: ok Add some debugging to track raid5 hang problem Signed-off-by: Neil Brown ### Diffstat output ./drivers/md/raid5.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff ./drivers/md/raid5.c~current~ ./drivers/md/raid5.c --- ./drivers/md/raid5.c~current~ 2006-05-23 12:28:53.000000000 +1000 +++ ./drivers/md/raid5.c 2006-05-23 12:29:05.000000000 +1000 @@ -1807,9 +1807,23 @@ static ssize_t stripe_cache_active_show(mddev_t *mddev, char *page) { raid5_conf_t *conf = mddev_to_conf(mddev); - if (conf) - return sprintf(page, "%d\n", atomic_read(&conf->active_stripes)); - else + if (conf) { + int n; + int c1, c2; + struct list_head *l; + n = sprintf(page, "%d\n", atomic_read(&conf->active_stripes)); + n += sprintf(page+n, "%d preread\n", atomic_read(&conf->preread_active_stripes)); + spin_lock_irq(&conf->device_lock); + c1=0; + list_for_each(l, &conf->bitmap_list) + c1++; + c2=0; + list_for_each(l, &conf->delayed_list) + c2++; + spin_unlock_irq(&conf->device_lock); + n += sprintf(page+n, "bitlist=%d delaylist=%d\n", c1, c2); + return n; + } else return 0; }