@@ -206,24 +206,20 @@ static int rdev_need_serial(struct md_rdev *rdev)
206206 * 1. rdev is the first device which return true from rdev_enable_serial.
207207 * 2. rdev is NULL, means we want to enable serialization for all rdevs.
208208 */
209- void mddev_create_serial_pool (struct mddev * mddev , struct md_rdev * rdev ,
210- bool is_suspend )
209+ void mddev_create_serial_pool (struct mddev * mddev , struct md_rdev * rdev )
211210{
212211 int ret = 0 ;
213212
214213 if (rdev && !rdev_need_serial (rdev ) &&
215214 !test_bit (CollisionCheck , & rdev -> flags ))
216215 return ;
217216
218- if (!is_suspend )
219- mddev_suspend (mddev );
220-
221217 if (!rdev )
222218 ret = rdevs_init_serial (mddev );
223219 else
224220 ret = rdev_init_serial (rdev );
225221 if (ret )
226- goto abort ;
222+ return ;
227223
228224 if (mddev -> serial_info_pool == NULL ) {
229225 /*
@@ -238,10 +234,6 @@ void mddev_create_serial_pool(struct mddev *mddev, struct md_rdev *rdev,
238234 pr_err ("can't alloc memory pool for serialization\n" );
239235 }
240236 }
241-
242- abort :
243- if (!is_suspend )
244- mddev_resume (mddev );
245237}
246238
247239/*
@@ -250,8 +242,7 @@ void mddev_create_serial_pool(struct mddev *mddev, struct md_rdev *rdev,
250242 * 2. when bitmap is destroyed while policy is not enabled.
251243 * 3. for disable policy, the pool is destroyed only when no rdev needs it.
252244 */
253- void mddev_destroy_serial_pool (struct mddev * mddev , struct md_rdev * rdev ,
254- bool is_suspend )
245+ void mddev_destroy_serial_pool (struct mddev * mddev , struct md_rdev * rdev )
255246{
256247 if (rdev && !test_bit (CollisionCheck , & rdev -> flags ))
257248 return ;
@@ -260,8 +251,6 @@ void mddev_destroy_serial_pool(struct mddev *mddev, struct md_rdev *rdev,
260251 struct md_rdev * temp ;
261252 int num = 0 ; /* used to track if other rdevs need the pool */
262253
263- if (!is_suspend )
264- mddev_suspend (mddev );
265254 rdev_for_each (temp , mddev ) {
266255 if (!rdev ) {
267256 if (!mddev -> serialize_policy ||
@@ -283,8 +272,6 @@ void mddev_destroy_serial_pool(struct mddev *mddev, struct md_rdev *rdev,
283272 mempool_destroy (mddev -> serial_info_pool );
284273 mddev -> serial_info_pool = NULL ;
285274 }
286- if (!is_suspend )
287- mddev_resume (mddev );
288275 }
289276}
290277
@@ -2557,7 +2544,7 @@ static int bind_rdev_to_array(struct md_rdev *rdev, struct mddev *mddev)
25572544 pr_debug ("md: bind<%s>\n" , b );
25582545
25592546 if (mddev -> raid_disks )
2560- mddev_create_serial_pool (mddev , rdev , true );
2547+ mddev_create_serial_pool (mddev , rdev );
25612548
25622549 if ((err = kobject_add (& rdev -> kobj , & mddev -> kobj , "dev-%s" , b )))
25632550 goto fail ;
@@ -2610,7 +2597,7 @@ static void md_kick_rdev_from_array(struct md_rdev *rdev)
26102597 bd_unlink_disk_holder (rdev -> bdev , rdev -> mddev -> gendisk );
26112598 list_del_rcu (& rdev -> same_set );
26122599 pr_debug ("md: unbind<%pg>\n" , rdev -> bdev );
2613- mddev_destroy_serial_pool (rdev -> mddev , rdev , false );
2600+ mddev_destroy_serial_pool (rdev -> mddev , rdev );
26142601 rdev -> mddev = NULL ;
26152602 sysfs_remove_link (& rdev -> kobj , "block" );
26162603 sysfs_put (rdev -> sysfs_state );
@@ -3077,11 +3064,11 @@ state_store(struct md_rdev *rdev, const char *buf, size_t len)
30773064 }
30783065 } else if (cmd_match (buf , "writemostly" )) {
30793066 set_bit (WriteMostly , & rdev -> flags );
3080- mddev_create_serial_pool (rdev -> mddev , rdev , true );
3067+ mddev_create_serial_pool (rdev -> mddev , rdev );
30813068 need_update_sb = true;
30823069 err = 0 ;
30833070 } else if (cmd_match (buf , "-writemostly" )) {
3084- mddev_destroy_serial_pool (rdev -> mddev , rdev , true );
3071+ mddev_destroy_serial_pool (rdev -> mddev , rdev );
30853072 clear_bit (WriteMostly , & rdev -> flags );
30863073 need_update_sb = true;
30873074 err = 0 ;
@@ -5591,9 +5578,9 @@ serialize_policy_store(struct mddev *mddev, const char *buf, size_t len)
55915578 }
55925579
55935580 if (value )
5594- mddev_create_serial_pool (mddev , NULL , true );
5581+ mddev_create_serial_pool (mddev , NULL );
55955582 else
5596- mddev_destroy_serial_pool (mddev , NULL , true );
5583+ mddev_destroy_serial_pool (mddev , NULL );
55975584 mddev -> serialize_policy = value ;
55985585unlock :
55995586 mddev_unlock_and_resume (mddev );
@@ -6359,7 +6346,7 @@ static void __md_stop_writes(struct mddev *mddev)
63596346 }
63606347 /* disable policy to guarantee rdevs free resources for serialization */
63616348 mddev -> serialize_policy = 0 ;
6362- mddev_destroy_serial_pool (mddev , NULL , true );
6349+ mddev_destroy_serial_pool (mddev , NULL );
63636350}
63646351
63656352void md_stop_writes (struct mddev * mddev )
0 commit comments