On Wed, May 22, 2024 at 12:32 AM Kinga Stefaniuk <kinga.stefaniuk@xxxxxxxxx> wrote: > [...] > --- > drivers/md/md.c | 47 ++++++++++++++++++++++++++++++--------------- > drivers/md/md.h | 2 +- > drivers/md/raid10.c | 2 +- > drivers/md/raid5.c | 2 +- > 4 files changed, 35 insertions(+), 18 deletions(-) > > diff --git a/drivers/md/md.c b/drivers/md/md.c > index aff9118ff697..2ec696e17f3d 100644 > --- a/drivers/md/md.c > +++ b/drivers/md/md.c > @@ -313,6 +313,16 @@ static int start_readonly; > */ > static bool create_on_open = true; > > +/* > + * Send every new event to the userspace. > + */ > +static void trigger_kobject_uevent(struct work_struct *work) > +{ > + struct mddev *mddev = container_of(work, struct mddev, event_work); > + > + kobject_uevent(&disk_to_dev(mddev->gendisk)->kobj, KOBJ_CHANGE); > +} > + > /* > * We have a system wide 'event count' that is incremented > * on any 'interesting' event, and readers of /proc/mdstat > @@ -325,10 +335,15 @@ static bool create_on_open = true; > */ > static DECLARE_WAIT_QUEUE_HEAD(md_event_waiters); > static atomic_t md_event_count; > -void md_new_event(void) > +void md_new_event(struct mddev *mddev, bool trigger_event) > { > atomic_inc(&md_event_count); > wake_up(&md_event_waiters); > + > + if (trigger_event) > + kobject_uevent(&disk_to_dev(mddev->gendisk)->kobj, KOBJ_CHANGE); > + else > + schedule_work(&mddev->event_work); event_work is also used by dmraid. Will this cause an issue with dmraid? Thanks, Song