Update pbat stats in pbat_alloc/pbat_flush, not lbatview_elem_realloc

This commit is contained in:
Tom Marshall 2019-11-17 04:41:12 +01:00
parent b169a0fbcc
commit 79eaf7dc7c
2 changed files with 19 additions and 13 deletions

View File

@ -377,21 +377,21 @@ do_free:
if (!ret) { if (!ret) {
elem_lelen = __cpu_to_le32(len); elem_lelen = __cpu_to_le32(len);
lbatview_wmem(lv, elem_off, lba_elem_len_bytes(&lv->kparams->params), &elem_lelen); lbatview_wmem(lv, elem_off, lba_elem_len_bytes(&lv->kparams->params), &elem_lelen);
mutex_lock(&lv->kstats->lock);
lv->kstats->stats.pblk_used += req_nalloc - old_nalloc;
if (old_nalloc == 0) {
if (req_nalloc != 0) {
++lv->kstats->stats.lblk_used;
}
}
else {
if (req_nalloc == 0) {
--lv->kstats->stats.lblk_used;
}
}
mutex_unlock(&lv->kstats->lock);
} }
mutex_lock(&lv->kstats->lock);
if (old_nalloc == 0) {
if (cur_nalloc != 0) {
++lv->kstats->stats.lblk_used;
}
}
else {
if (cur_nalloc == 0) {
--lv->kstats->stats.lblk_used;
}
}
mutex_unlock(&lv->kstats->lock);
mutex_unlock(&lv->lock); mutex_unlock(&lv->lock);
return ret; return ret;
} }

View File

@ -180,6 +180,9 @@ pbat_alloc(struct pbat* pbat)
pbat->last_alloc = idx; pbat->last_alloc = idx;
pblk = idx + zone_data_off(&pbat->kparams->params, pbat->zone); pblk = idx + zone_data_off(&pbat->kparams->params, pbat->zone);
SetPageDirty(pbat->page); SetPageDirty(pbat->page);
mutex_lock(&pbat->kstats->lock);
++pbat->kstats->stats.pblk_used;
mutex_unlock(&pbat->kstats->lock);
out: out:
mutex_unlock(&pbat->lock); mutex_unlock(&pbat->lock);
@ -206,6 +209,9 @@ pbat_free(struct pbat* pbat, u64 pblk)
cbd_bitmap_free(pbat->buf, idx); cbd_bitmap_free(pbat->buf, idx);
pbat->full = false; pbat->full = false;
SetPageDirty(pbat->page); SetPageDirty(pbat->page);
mutex_lock(&pbat->kstats->lock);
--pbat->kstats->stats.pblk_used;
mutex_unlock(&pbat->kstats->lock);
mutex_unlock(&pbat->lock); mutex_unlock(&pbat->lock);
return 0; return 0;