@@ -838,8 +838,7 @@ static struct backing_dev_info cgroup_backing_dev_info = {
838
838
.capabilities = BDI_CAP_NO_ACCT_AND_WRITEBACK ,
839
839
};
840
840
841
- static int alloc_css_id (struct cgroup_subsys * ss ,
842
- struct cgroup * parent , struct cgroup * child );
841
+ static int alloc_css_id (struct cgroup_subsys_state * child_css );
843
842
844
843
static struct inode * cgroup_new_inode (umode_t mode , struct super_block * sb )
845
844
{
@@ -4308,9 +4307,8 @@ static void css_release(struct percpu_ref *ref)
4308
4307
schedule_work (& css -> destroy_work );
4309
4308
}
4310
4309
4311
- static void init_cgroup_css (struct cgroup_subsys_state * css ,
4312
- struct cgroup_subsys * ss ,
4313
- struct cgroup * cgrp )
4310
+ static void init_css (struct cgroup_subsys_state * css , struct cgroup_subsys * ss ,
4311
+ struct cgroup * cgrp )
4314
4312
{
4315
4313
css -> cgroup = cgrp ;
4316
4314
css -> ss = ss ;
@@ -4327,9 +4325,9 @@ static void init_cgroup_css(struct cgroup_subsys_state *css,
4327
4325
}
4328
4326
4329
4327
/* invoke ->css_online() on a new CSS and mark it online if successful */
4330
- static int online_css (struct cgroup_subsys * ss , struct cgroup * cgrp )
4328
+ static int online_css (struct cgroup_subsys_state * css )
4331
4329
{
4332
- struct cgroup_subsys_state * css = cgroup_css ( cgrp , ss -> subsys_id ) ;
4330
+ struct cgroup_subsys * ss = css -> ss ;
4333
4331
int ret = 0 ;
4334
4332
4335
4333
lockdep_assert_held (& cgroup_mutex );
@@ -4342,9 +4340,9 @@ static int online_css(struct cgroup_subsys *ss, struct cgroup *cgrp)
4342
4340
}
4343
4341
4344
4342
/* if the CSS is online, invoke ->css_offline() on it and mark it offline */
4345
- static void offline_css (struct cgroup_subsys * ss , struct cgroup * cgrp )
4343
+ static void offline_css (struct cgroup_subsys_state * css )
4346
4344
{
4347
- struct cgroup_subsys_state * css = cgroup_css ( cgrp , ss -> subsys_id ) ;
4345
+ struct cgroup_subsys * ss = css -> ss ;
4348
4346
4349
4347
lockdep_assert_held (& cgroup_mutex );
4350
4348
@@ -4442,10 +4440,10 @@ static long cgroup_create(struct cgroup *parent, struct dentry *dentry,
4442
4440
goto err_free_all ;
4443
4441
}
4444
4442
4445
- init_cgroup_css (css , ss , cgrp );
4443
+ init_css (css , ss , cgrp );
4446
4444
4447
4445
if (ss -> use_id ) {
4448
- err = alloc_css_id (ss , parent , cgrp );
4446
+ err = alloc_css_id (css );
4449
4447
if (err )
4450
4448
goto err_free_all ;
4451
4449
}
@@ -4480,7 +4478,9 @@ static long cgroup_create(struct cgroup *parent, struct dentry *dentry,
4480
4478
4481
4479
/* creation succeeded, notify subsystems */
4482
4480
for_each_root_subsys (root , ss ) {
4483
- err = online_css (ss , cgrp );
4481
+ struct cgroup_subsys_state * css = cgroup_css (cgrp , ss -> subsys_id );
4482
+
4483
+ err = online_css (css );
4484
4484
if (err )
4485
4485
goto err_destroy ;
4486
4486
@@ -4700,7 +4700,7 @@ static void cgroup_offline_fn(struct work_struct *work)
4700
4700
* initate destruction.
4701
4701
*/
4702
4702
for_each_root_subsys (cgrp -> root , ss )
4703
- offline_css (ss , cgrp );
4703
+ offline_css (cgroup_css ( cgrp , ss -> subsys_id ) );
4704
4704
4705
4705
/*
4706
4706
* Put the css refs from cgroup_destroy_locked(). Each css holds
@@ -4778,7 +4778,7 @@ static void __init cgroup_init_subsys(struct cgroup_subsys *ss)
4778
4778
css = ss -> css_alloc (cgroup_css (cgroup_dummy_top , ss -> subsys_id ));
4779
4779
/* We don't handle early failures gracefully */
4780
4780
BUG_ON (IS_ERR (css ));
4781
- init_cgroup_css (css , ss , cgroup_dummy_top );
4781
+ init_css (css , ss , cgroup_dummy_top );
4782
4782
4783
4783
/* Update the init_css_set to contain a subsys
4784
4784
* pointer to this state - since the subsystem is
@@ -4793,7 +4793,7 @@ static void __init cgroup_init_subsys(struct cgroup_subsys *ss)
4793
4793
* need to invoke fork callbacks here. */
4794
4794
BUG_ON (!list_empty (& init_task .tasks ));
4795
4795
4796
- BUG_ON (online_css (ss , cgroup_dummy_top ));
4796
+ BUG_ON (online_css (cgroup_css ( cgroup_dummy_top , ss -> subsys_id ) ));
4797
4797
4798
4798
mutex_unlock (& cgroup_mutex );
4799
4799
@@ -4866,8 +4866,8 @@ int __init_or_module cgroup_load_subsys(struct cgroup_subsys *ss)
4866
4866
ss -> root = & cgroup_dummy_root ;
4867
4867
4868
4868
/* our new subsystem will be attached to the dummy hierarchy. */
4869
- init_cgroup_css (css , ss , cgroup_dummy_top );
4870
- /* init_idr must be after init_cgroup_css because it sets css->id. */
4869
+ init_css (css , ss , cgroup_dummy_top );
4870
+ /* init_idr must be after init_css() because it sets css->id. */
4871
4871
if (ss -> use_id ) {
4872
4872
ret = cgroup_init_idr (ss , css );
4873
4873
if (ret )
@@ -4897,7 +4897,7 @@ int __init_or_module cgroup_load_subsys(struct cgroup_subsys *ss)
4897
4897
}
4898
4898
write_unlock (& css_set_lock );
4899
4899
4900
- ret = online_css (ss , cgroup_dummy_top );
4900
+ ret = online_css (cgroup_css ( cgroup_dummy_top , ss -> subsys_id ) );
4901
4901
if (ret )
4902
4902
goto err_unload ;
4903
4903
@@ -4936,7 +4936,7 @@ void cgroup_unload_subsys(struct cgroup_subsys *ss)
4936
4936
4937
4937
mutex_lock (& cgroup_mutex );
4938
4938
4939
- offline_css (ss , cgroup_dummy_top );
4939
+ offline_css (cgroup_css ( cgroup_dummy_top , ss -> subsys_id ) );
4940
4940
4941
4941
if (ss -> use_id )
4942
4942
idr_destroy (& ss -> idr );
@@ -5588,20 +5588,16 @@ static int __init_or_module cgroup_init_idr(struct cgroup_subsys *ss,
5588
5588
return 0 ;
5589
5589
}
5590
5590
5591
- static int alloc_css_id (struct cgroup_subsys * ss , struct cgroup * parent ,
5592
- struct cgroup * child )
5591
+ static int alloc_css_id (struct cgroup_subsys_state * child_css )
5593
5592
{
5594
- int subsys_id , i , depth = 0 ;
5595
- struct cgroup_subsys_state * parent_css , * child_css ;
5593
+ struct cgroup_subsys_state * parent_css = css_parent (child_css );
5596
5594
struct css_id * child_id , * parent_id ;
5595
+ int i , depth ;
5597
5596
5598
- subsys_id = ss -> subsys_id ;
5599
- parent_css = cgroup_css (parent , subsys_id );
5600
- child_css = cgroup_css (child , subsys_id );
5601
5597
parent_id = rcu_dereference_protected (parent_css -> id , true);
5602
5598
depth = parent_id -> depth + 1 ;
5603
5599
5604
- child_id = get_new_cssid (ss , depth );
5600
+ child_id = get_new_cssid (child_css -> ss , depth );
5605
5601
if (IS_ERR (child_id ))
5606
5602
return PTR_ERR (child_id );
5607
5603
0 commit comments