@@ -747,6 +747,7 @@ udisks_linux_mdraid_stop (UDisksMDRaid *_mdraid,
747747 UDisksLinuxDevice * raid_device = NULL ;
748748 UDisksBaseJob * job = NULL ;
749749 const gchar * device_file = NULL ;
750+ const gchar * sysfs_path ;
750751 GError * local_error = NULL ;
751752 gboolean ret = FALSE;
752753
@@ -802,6 +803,7 @@ udisks_linux_mdraid_stop (UDisksMDRaid *_mdraid,
802803 }
803804
804805 device_file = g_udev_device_get_device_file (raid_device -> udev_device );
806+ sysfs_path = g_udev_device_get_sysfs_path (raid_device -> udev_device );
805807
806808 job = udisks_daemon_launch_simple_job (daemon ,
807809 UDISKS_OBJECT (object ),
@@ -825,6 +827,8 @@ udisks_linux_mdraid_stop (UDisksMDRaid *_mdraid,
825827 goto out ;
826828 }
827829
830+ udisks_daemon_util_trigger_uevent_sync (daemon , NULL , sysfs_path , UDISKS_DEFAULT_WAIT_TIMEOUT );
831+
828832 udisks_simple_job_complete (UDISKS_SIMPLE_JOB (job ), TRUE, NULL );
829833 ret = TRUE;
830834
@@ -930,6 +934,7 @@ handle_remove_device (UDisksMDRaid *_mdraid,
930934 UDisksLinuxDevice * raid_device = NULL ;
931935 const gchar * device_file = NULL ;
932936 const gchar * member_device_file = NULL ;
937+ const gchar * sysfs_path ;
933938 GError * error = NULL ;
934939 UDisksObject * member_device_object = NULL ;
935940 UDisksBlock * member_device = NULL ;
@@ -1018,6 +1023,7 @@ handle_remove_device (UDisksMDRaid *_mdraid,
10181023 }
10191024
10201025 device_file = g_udev_device_get_device_file (raid_device -> udev_device );
1026+ sysfs_path = g_udev_device_get_sysfs_path (raid_device -> udev_device );
10211027
10221028 member_device_file = udisks_block_get_device (member_device );
10231029
@@ -1062,6 +1068,11 @@ handle_remove_device (UDisksMDRaid *_mdraid,
10621068 }
10631069 }
10641070
1071+ udisks_linux_block_object_trigger_uevent_sync (UDISKS_LINUX_BLOCK_OBJECT (member_device_object ),
1072+ UDISKS_DEFAULT_WAIT_TIMEOUT );
1073+
1074+ udisks_daemon_util_trigger_uevent_sync (daemon , NULL , sysfs_path , UDISKS_DEFAULT_WAIT_TIMEOUT );
1075+
10651076 udisks_mdraid_complete_remove_device (_mdraid , invocation );
10661077
10671078 out :
@@ -1092,6 +1103,7 @@ handle_add_device (UDisksMDRaid *_mdraid,
10921103 UDisksLinuxDevice * raid_device = NULL ;
10931104 const gchar * device_file = NULL ;
10941105 const gchar * new_member_device_file = NULL ;
1106+ const gchar * sysfs_path ;
10951107 GError * error = NULL ;
10961108 UDisksObject * new_member_device_object = NULL ;
10971109 UDisksBlock * new_member_device = NULL ;
@@ -1168,6 +1180,8 @@ handle_add_device (UDisksMDRaid *_mdraid,
11681180 }
11691181
11701182 device_file = g_udev_device_get_device_file (raid_device -> udev_device );
1183+ sysfs_path = g_udev_device_get_sysfs_path (raid_device -> udev_device );
1184+
11711185 new_member_device_file = udisks_block_get_device (new_member_device );
11721186
11731187 job = udisks_daemon_launch_simple_job (daemon ,
@@ -1192,6 +1206,11 @@ handle_add_device (UDisksMDRaid *_mdraid,
11921206 goto out ;
11931207 }
11941208
1209+ udisks_linux_block_object_trigger_uevent_sync (UDISKS_LINUX_BLOCK_OBJECT (new_member_device_object ),
1210+ UDISKS_DEFAULT_WAIT_TIMEOUT );
1211+
1212+ udisks_daemon_util_trigger_uevent_sync (daemon , NULL , sysfs_path , UDISKS_DEFAULT_WAIT_TIMEOUT );
1213+
11951214 udisks_simple_job_complete (UDISKS_SIMPLE_JOB (job ), TRUE, NULL );
11961215 udisks_mdraid_complete_add_device (_mdraid , invocation );
11971216
@@ -1221,6 +1240,7 @@ handle_set_bitmap_location (UDisksMDRaid *_mdraid,
12211240 uid_t caller_uid ;
12221241 UDisksLinuxDevice * raid_device = NULL ;
12231242 const gchar * device_file = NULL ;
1243+ const gchar * sysfs_path ;
12241244 GError * error = NULL ;
12251245 UDisksBaseJob * job = NULL ;
12261246
@@ -1286,6 +1306,7 @@ handle_set_bitmap_location (UDisksMDRaid *_mdraid,
12861306 }
12871307
12881308 device_file = g_udev_device_get_device_file (raid_device -> udev_device );
1309+ sysfs_path = g_udev_device_get_sysfs_path (raid_device -> udev_device );
12891310
12901311 job = udisks_daemon_launch_simple_job (daemon ,
12911312 UDISKS_OBJECT (object ),
@@ -1309,6 +1330,8 @@ handle_set_bitmap_location (UDisksMDRaid *_mdraid,
13091330 goto out ;
13101331 }
13111332
1333+ udisks_daemon_util_trigger_uevent_sync (daemon , NULL , sysfs_path , UDISKS_DEFAULT_WAIT_TIMEOUT );
1334+
13121335 udisks_simple_job_complete (UDISKS_SIMPLE_JOB (job ), TRUE, NULL );
13131336 udisks_mdraid_complete_add_device (_mdraid , invocation );
13141337 udisks_linux_mdraid_update (mdraid , object );
@@ -1338,6 +1361,7 @@ handle_request_sync_action (UDisksMDRaid *_mdraid,
13381361 UDisksLinuxDevice * raid_device = NULL ;
13391362 GError * error = NULL ;
13401363 const gchar * device_file = NULL ;
1364+ const gchar * sysfs_path ;
13411365 UDisksBaseJob * job = NULL ;
13421366 gboolean opt_no_inhibit = FALSE;
13431367
@@ -1407,6 +1431,7 @@ handle_request_sync_action (UDisksMDRaid *_mdraid,
14071431 }
14081432
14091433 device_file = g_udev_device_get_device_file (raid_device -> udev_device );
1434+ sysfs_path = g_udev_device_get_sysfs_path (raid_device -> udev_device );
14101435
14111436 job = udisks_daemon_launch_simple_job (daemon ,
14121437 UDISKS_OBJECT (object ),
@@ -1430,6 +1455,8 @@ handle_request_sync_action (UDisksMDRaid *_mdraid,
14301455 goto out ;
14311456 }
14321457
1458+ udisks_daemon_util_trigger_uevent_sync (daemon , NULL , sysfs_path , UDISKS_DEFAULT_WAIT_TIMEOUT );
1459+
14331460 udisks_simple_job_complete (UDISKS_SIMPLE_JOB (job ), TRUE, NULL );
14341461 udisks_mdraid_complete_request_sync_action (_mdraid , invocation );
14351462
@@ -1455,6 +1482,7 @@ handle_delete (UDisksMDRaid *mdraid,
14551482 GList * member_devices = NULL ;
14561483 GList * l ;
14571484 UDisksLinuxDevice * raid_device = NULL ;
1485+ const gchar * sysfs_path ;
14581486 GError * error = NULL ;
14591487
14601488 g_variant_lookup (options , "tear-down" , "b" , & teardown_flag );
@@ -1565,12 +1593,20 @@ handle_delete (UDisksMDRaid *mdraid,
15651593 UDisksLinuxDevice * member_device = UDISKS_LINUX_DEVICE (l -> data );
15661594 const gchar * device = g_udev_device_get_device_file (member_device -> udev_device );
15671595
1596+ sysfs_path = g_udev_device_get_sysfs_path (member_device -> udev_device );
15681597 if (!bd_md_destroy (device , & error ))
15691598 {
15701599 g_prefix_error (& error , "Error wiping device '%s': " , device );
15711600 g_dbus_method_invocation_take_error (invocation , error );
15721601 goto out ;
15731602 }
1603+ udisks_daemon_util_trigger_uevent_sync (daemon , NULL , sysfs_path , UDISKS_DEFAULT_WAIT_TIMEOUT );
1604+ }
1605+
1606+ if (raid_device )
1607+ {
1608+ sysfs_path = g_udev_device_get_sysfs_path (raid_device -> udev_device );
1609+ udisks_daemon_util_trigger_uevent_sync (daemon , NULL , sysfs_path , UDISKS_DEFAULT_WAIT_TIMEOUT );
15741610 }
15751611
15761612 udisks_mdraid_complete_delete (mdraid , invocation );
0 commit comments