diff options
author | Sebastian Parschauer <sebastian.riemer@profitbricks.com> | 2016-02-17 17:25:00 +0100 |
---|---|---|
committer | Shaohua Li <shli@fb.com> | 2016-02-26 09:44:56 -0800 |
commit | 399146b80ed6fb9f1ebe5a07234f00dff446d2b4 (patch) | |
tree | 26922d8f971945b7925e3aa299fa36abb1e52d52 /drivers/md/md.c | |
parent | 6ab2a4b806ae21b6c3e47c5ff1285ec06d505325 (diff) | |
download | op-kernel-dev-399146b80ed6fb9f1ebe5a07234f00dff446d2b4.zip op-kernel-dev-399146b80ed6fb9f1ebe5a07234f00dff446d2b4.tar.gz |
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: 934d9c23b4c7 ("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: Sebastian Parschauer <sebastian.riemer@profitbricks.com>
Signed-off-by: Shaohua Li <shli@fb.com>
Diffstat (limited to 'drivers/md/md.c')
-rw-r--r-- | drivers/md/md.c | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index e55e6cf..464627b 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -5671,7 +5671,6 @@ static int do_md_stop(struct mddev *mddev, int mode, export_array(mddev); md_clean(mddev); - kobject_uevent(&disk_to_dev(mddev->gendisk)->kobj, KOBJ_CHANGE); if (mddev->hold_active == UNTIL_STOP) mddev->hold_active = 0; } |