Commit 399146b8 authored by Sebastian Parschauer's avatar Sebastian Parschauer Committed by Shaohua Li

md: Drop sending a change uevent when stopping

When stopping an MD device, then its device node /dev/mdX may still
exist afterwards or it is recreated by udev. The next open() call
can lead to creation of an inoperable MD device. The reason for
this is that a change event (KOBJ_CHANGE) is sent to udev which
races against the remove event (KOBJ_REMOVE) from md_free().
So drop sending the change event.

A change is likely also required in mdadm as many versions send the
change event to udev as well.

Neil mentioned the change event is a workaround for old kernel
Commit: 934d9c23 ("md: destroy partitions and notify udev when md array is stopped.")
new mdadm can handle device remove now, so this isn't required any more.

Cc: NeilBrown <neilb@suse.com>
Cc: Hannes Reinecke <hare@suse.de>
Cc: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: default avatarSebastian Parschauer <sebastian.riemer@profitbricks.com>
Signed-off-by: default avatarShaohua Li <shli@fb.com>
parent 6ab2a4b8
...@@ -5671,7 +5671,6 @@ static int do_md_stop(struct mddev *mddev, int mode, ...@@ -5671,7 +5671,6 @@ static int do_md_stop(struct mddev *mddev, int mode,
export_array(mddev); export_array(mddev);
md_clean(mddev); md_clean(mddev);
kobject_uevent(&disk_to_dev(mddev->gendisk)->kobj, KOBJ_CHANGE);
if (mddev->hold_active == UNTIL_STOP) if (mddev->hold_active == UNTIL_STOP)
mddev->hold_active = 0; mddev->hold_active = 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment