|
@@ -759,15 +759,20 @@ static int cgwb_bdi_init(struct backing_dev_info *bdi)
|
|
if (!bdi->wb_congested)
|
|
if (!bdi->wb_congested)
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
|
|
|
|
|
|
+ atomic_set(&bdi->wb_congested->refcnt, 1);
|
|
|
|
+
|
|
err = wb_init(&bdi->wb, bdi, 1, GFP_KERNEL);
|
|
err = wb_init(&bdi->wb, bdi, 1, GFP_KERNEL);
|
|
if (err) {
|
|
if (err) {
|
|
- kfree(bdi->wb_congested);
|
|
|
|
|
|
+ wb_congested_put(bdi->wb_congested);
|
|
return err;
|
|
return err;
|
|
}
|
|
}
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static void cgwb_bdi_destroy(struct backing_dev_info *bdi) { }
|
|
|
|
|
|
+static void cgwb_bdi_destroy(struct backing_dev_info *bdi)
|
|
|
|
+{
|
|
|
|
+ wb_congested_put(bdi->wb_congested);
|
|
|
|
+}
|
|
|
|
|
|
#endif /* CONFIG_CGROUP_WRITEBACK */
|
|
#endif /* CONFIG_CGROUP_WRITEBACK */
|
|
|
|
|