diff options
Diffstat (limited to 'mm/backing-dev.c')
| -rw-r--r-- | mm/backing-dev.c | 5 | 
1 files changed, 5 insertions, 0 deletions
| diff --git a/mm/backing-dev.c b/mm/backing-dev.c index 783904d8c5ef..0beaca6bacf7 100644 --- a/mm/backing-dev.c +++ b/mm/backing-dev.c @@ -633,6 +633,7 @@ static void cgwb_release_workfn(struct work_struct *work)  	wb_exit(wb);  	bdi_put(bdi);  	WARN_ON_ONCE(!list_empty(&wb->b_attached)); +	WARN_ON_ONCE(work_pending(&wb->switch_work));  	call_rcu(&wb->rcu, cgwb_free_rcu);  } @@ -709,6 +710,8 @@ static int cgwb_create(struct backing_dev_info *bdi,  	wb->memcg_css = memcg_css;  	wb->blkcg_css = blkcg_css;  	INIT_LIST_HEAD(&wb->b_attached); +	INIT_WORK(&wb->switch_work, inode_switch_wbs_work_fn); +	init_llist_head(&wb->switch_wbs_ctxs);  	INIT_WORK(&wb->release_work, cgwb_release_workfn);  	set_bit(WB_registered, &wb->state);  	bdi_get(bdi); @@ -839,6 +842,8 @@ static int cgwb_bdi_init(struct backing_dev_info *bdi)  	if (!ret) {  		bdi->wb.memcg_css = &root_mem_cgroup->css;  		bdi->wb.blkcg_css = blkcg_root_css; +		INIT_WORK(&bdi->wb.switch_work, inode_switch_wbs_work_fn); +		init_llist_head(&bdi->wb.switch_wbs_ctxs);  	}  	return ret;  } | 
