On Mon, Nov 28 2016, Marc Smith wrote: > > # find /sys/block/md127/md > /sys/block/md127/md > /sys/block/md127/md/reshape_position > /sys/block/md127/md/layout > /sys/block/md127/md/raid_disks > /sys/block/md127/md/bitmap > /sys/block/md127/md/bitmap/chunksize This tells me that: sysfs_remove_group(&mddev->kobj, &md_bitmap_group); hasn't been run, so mddev_delayed_delete() hasn't run. That suggests the final mddev_put() hsn't run. i.e. mddev->active is > 0 Everything else suggests that array has been stopped and cleaned and should be gone... This seems to suggest that there is an unbalanced mddev_get() without a matching mddev_put(). I cannot find it though. If I could reproduce it, I would try to see what is happening by: - putting printk("mddev->active = %d\n", atomic_read(&mddev->active)); in the top of mddev_put(). That shouldn't be *too* noisy. - putting printk("rd=%d empty=%d ctime=%d hold=%d\n", mddev->raid_disks, list_empty(&mddev->disks), mddev->ctime, mddev->hold_active); in mddev_put() just before those values are tested. - putting printk("queue_work\n"); just before the 'queue_work()' call in mddev_put. - putting printk("mddev_delayed_delete\n"); in mddev_delayed_delete() Then see what gets printed when you stop the array. NeilBrown
Attachment:
signature.asc
Description: PGP signature