|
@@ -438,10 +438,10 @@ retry:
|
|
|
if (new_congested) {
|
|
|
/* !found and storage for new one already allocated, insert */
|
|
|
congested = new_congested;
|
|
|
- new_congested = NULL;
|
|
|
rb_link_node(&congested->rb_node, parent, node);
|
|
|
rb_insert_color(&congested->rb_node, &bdi->cgwb_congested_tree);
|
|
|
- goto found;
|
|
|
+ spin_unlock_irqrestore(&cgwb_lock, flags);
|
|
|
+ return congested;
|
|
|
}
|
|
|
|
|
|
spin_unlock_irqrestore(&cgwb_lock, flags);
|
|
@@ -451,13 +451,13 @@ retry:
|
|
|
if (!new_congested)
|
|
|
return NULL;
|
|
|
|
|
|
- atomic_set(&new_congested->refcnt, 0);
|
|
|
+ refcount_set(&new_congested->refcnt, 1);
|
|
|
new_congested->__bdi = bdi;
|
|
|
new_congested->blkcg_id = blkcg_id;
|
|
|
goto retry;
|
|
|
|
|
|
found:
|
|
|
- atomic_inc(&congested->refcnt);
|
|
|
+ refcount_inc(&congested->refcnt);
|
|
|
spin_unlock_irqrestore(&cgwb_lock, flags);
|
|
|
kfree(new_congested);
|
|
|
return congested;
|
|
@@ -474,7 +474,7 @@ void wb_congested_put(struct bdi_writeback_congested *congested)
|
|
|
unsigned long flags;
|
|
|
|
|
|
local_irq_save(flags);
|
|
|
- if (!atomic_dec_and_lock(&congested->refcnt, &cgwb_lock)) {
|
|
|
+ if (!refcount_dec_and_lock(&congested->refcnt, &cgwb_lock)) {
|
|
|
local_irq_restore(flags);
|
|
|
return;
|
|
|
}
|
|
@@ -804,7 +804,7 @@ static int cgwb_bdi_init(struct backing_dev_info *bdi)
|
|
|
if (!bdi->wb_congested)
|
|
|
return -ENOMEM;
|
|
|
|
|
|
- atomic_set(&bdi->wb_congested->refcnt, 1);
|
|
|
+ refcount_set(&bdi->wb_congested->refcnt, 1);
|
|
|
|
|
|
err = wb_init(&bdi->wb, bdi, 1, GFP_KERNEL);
|
|
|
if (err) {
|