@@ -98,7 +98,7 @@ static struct workqueue_struct *md_misc_wq;
9898static int remove_and_add_spares (struct mddev * mddev ,
9999 struct md_rdev * this );
100100static void mddev_detach (struct mddev * mddev );
101- static void export_rdev (struct md_rdev * rdev , struct mddev * mddev );
101+ static void export_rdev (struct md_rdev * rdev );
102102static void md_wakeup_thread_directly (struct md_thread __rcu * * thread );
103103
104104/*
@@ -959,7 +959,7 @@ void mddev_unlock(struct mddev *mddev)
959959 list_for_each_entry_safe (rdev , tmp , & delete , same_set ) {
960960 list_del_init (& rdev -> same_set );
961961 kobject_del (& rdev -> kobj );
962- export_rdev (rdev , mddev );
962+ export_rdev (rdev );
963963 }
964964
965965 if (!legacy_async_del_gendisk ) {
@@ -2632,7 +2632,7 @@ void md_autodetect_dev(dev_t dev);
26322632/* just for claiming the bdev */
26332633static struct md_rdev claim_rdev ;
26342634
2635- static void export_rdev (struct md_rdev * rdev , struct mddev * mddev )
2635+ static void export_rdev (struct md_rdev * rdev )
26362636{
26372637 pr_debug ("md: export_rdev(%pg)\n" , rdev -> bdev );
26382638 md_rdev_clear (rdev );
@@ -2788,7 +2788,9 @@ void md_update_sb(struct mddev *mddev, int force_change)
27882788 if (!md_is_rdwr (mddev )) {
27892789 if (force_change )
27902790 set_bit (MD_SB_CHANGE_DEVS , & mddev -> sb_flags );
2791- pr_err ("%s: can't update sb for read-only array %s\n" , __func__ , mdname (mddev ));
2791+ if (!mddev_is_dm (mddev ))
2792+ pr_err_ratelimited ("%s: can't update sb for read-only array %s\n" ,
2793+ __func__ , mdname (mddev ));
27922794 return ;
27932795 }
27942796
@@ -4848,7 +4850,7 @@ new_dev_store(struct mddev *mddev, const char *buf, size_t len)
48484850 err = bind_rdev_to_array (rdev , mddev );
48494851 out :
48504852 if (err )
4851- export_rdev (rdev , mddev );
4853+ export_rdev (rdev );
48524854 mddev_unlock_and_resume (mddev );
48534855 if (!err )
48544856 md_new_event ();
@@ -7140,7 +7142,7 @@ static void autorun_devices(int part)
71407142 rdev_for_each_list (rdev , tmp , & candidates ) {
71417143 list_del_init (& rdev -> same_set );
71427144 if (bind_rdev_to_array (rdev , mddev ))
7143- export_rdev (rdev , mddev );
7145+ export_rdev (rdev );
71447146 }
71457147 autorun_array (mddev );
71467148 mddev_unlock_and_resume (mddev );
@@ -7150,7 +7152,7 @@ static void autorun_devices(int part)
71507152 */
71517153 rdev_for_each_list (rdev , tmp , & candidates ) {
71527154 list_del_init (& rdev -> same_set );
7153- export_rdev (rdev , mddev );
7155+ export_rdev (rdev );
71547156 }
71557157 mddev_put (mddev );
71567158 }
@@ -7338,13 +7340,13 @@ int md_add_new_disk(struct mddev *mddev, struct mdu_disk_info_s *info)
73387340 pr_warn ("md: %pg has different UUID to %pg\n" ,
73397341 rdev -> bdev ,
73407342 rdev0 -> bdev );
7341- export_rdev (rdev , mddev );
7343+ export_rdev (rdev );
73427344 return - EINVAL ;
73437345 }
73447346 }
73457347 err = bind_rdev_to_array (rdev , mddev );
73467348 if (err )
7347- export_rdev (rdev , mddev );
7349+ export_rdev (rdev );
73487350 return err ;
73497351 }
73507352
@@ -7387,7 +7389,7 @@ int md_add_new_disk(struct mddev *mddev, struct mdu_disk_info_s *info)
73877389 /* This was a hot-add request, but events doesn't
73887390 * match, so reject it.
73897391 */
7390- export_rdev (rdev , mddev );
7392+ export_rdev (rdev );
73917393 return - EINVAL ;
73927394 }
73937395
@@ -7413,7 +7415,7 @@ int md_add_new_disk(struct mddev *mddev, struct mdu_disk_info_s *info)
74137415 }
74147416 }
74157417 if (has_journal || mddev -> bitmap ) {
7416- export_rdev (rdev , mddev );
7418+ export_rdev (rdev );
74177419 return - EBUSY ;
74187420 }
74197421 set_bit (Journal , & rdev -> flags );
@@ -7428,7 +7430,7 @@ int md_add_new_disk(struct mddev *mddev, struct mdu_disk_info_s *info)
74287430 /* --add initiated by this node */
74297431 err = mddev -> cluster_ops -> add_new_disk (mddev , rdev );
74307432 if (err ) {
7431- export_rdev (rdev , mddev );
7433+ export_rdev (rdev );
74327434 return err ;
74337435 }
74347436 }
@@ -7438,7 +7440,7 @@ int md_add_new_disk(struct mddev *mddev, struct mdu_disk_info_s *info)
74387440 err = bind_rdev_to_array (rdev , mddev );
74397441
74407442 if (err )
7441- export_rdev (rdev , mddev );
7443+ export_rdev (rdev );
74427444
74437445 if (mddev_is_clustered (mddev )) {
74447446 if (info -> state & (1 << MD_DISK_CANDIDATE )) {
@@ -7501,7 +7503,7 @@ int md_add_new_disk(struct mddev *mddev, struct mdu_disk_info_s *info)
75017503
75027504 err = bind_rdev_to_array (rdev , mddev );
75037505 if (err ) {
7504- export_rdev (rdev , mddev );
7506+ export_rdev (rdev );
75057507 return err ;
75067508 }
75077509 }
@@ -7613,7 +7615,7 @@ static int hot_add_disk(struct mddev *mddev, dev_t dev)
76137615 return 0 ;
76147616
76157617abort_export :
7616- export_rdev (rdev , mddev );
7618+ export_rdev (rdev );
76177619 return err ;
76187620}
76197621
0 commit comments