Source
682
682
return wb;
683
683
}
684
684
685
685
static int cgwb_bdi_init(struct backing_dev_info *bdi)
686
686
{
687
687
int ret;
688
688
689
689
INIT_RADIX_TREE(&bdi->cgwb_tree, GFP_ATOMIC);
690
690
bdi->cgwb_congested_tree = RB_ROOT;
691
691
mutex_init(&bdi->cgwb_release_mutex);
692
+
init_rwsem(&bdi->wb_switch_rwsem);
692
693
693
694
ret = wb_init(&bdi->wb, bdi, 1, GFP_KERNEL);
694
695
if (!ret) {
695
696
bdi->wb.memcg_css = &root_mem_cgroup->css;
696
697
bdi->wb.blkcg_css = blkcg_root_css;
697
698
}
698
699
return ret;
699
700
}
700
701
701
702
static void cgwb_bdi_unregister(struct backing_dev_info *bdi)