aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/lightnvm/pblk-init.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/lightnvm/pblk-init.c')
-rw-r--r--drivers/lightnvm/pblk-init.c18
1 files changed, 3 insertions, 15 deletions
diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c
index f84c428a76f1..b2c49fc006c9 100644
--- a/drivers/lightnvm/pblk-init.c
+++ b/drivers/lightnvm/pblk-init.c
@@ -185,17 +185,14 @@ static void pblk_rwb_free(struct pblk *pblk)
185 if (pblk_rb_tear_down_check(&pblk->rwb)) 185 if (pblk_rb_tear_down_check(&pblk->rwb))
186 pblk_err(pblk, "write buffer error on tear down\n"); 186 pblk_err(pblk, "write buffer error on tear down\n");
187 187
188 pblk_rb_data_free(&pblk->rwb); 188 pblk_rb_free(&pblk->rwb);
189 vfree(pblk_rb_entries_ref(&pblk->rwb));
190} 189}
191 190
192static int pblk_rwb_init(struct pblk *pblk) 191static int pblk_rwb_init(struct pblk *pblk)
193{ 192{
194 struct nvm_tgt_dev *dev = pblk->dev; 193 struct nvm_tgt_dev *dev = pblk->dev;
195 struct nvm_geo *geo = &dev->geo; 194 struct nvm_geo *geo = &dev->geo;
196 struct pblk_rb_entry *entries; 195 unsigned long buffer_size;
197 unsigned long nr_entries, buffer_size;
198 unsigned int power_size, power_seg_sz;
199 int pgs_in_buffer; 196 int pgs_in_buffer;
200 197
201 pgs_in_buffer = max(geo->mw_cunits, geo->ws_opt) * geo->all_luns; 198 pgs_in_buffer = max(geo->mw_cunits, geo->ws_opt) * geo->all_luns;
@@ -205,16 +202,7 @@ static int pblk_rwb_init(struct pblk *pblk)
205 else 202 else
206 buffer_size = pgs_in_buffer; 203 buffer_size = pgs_in_buffer;
207 204
208 nr_entries = pblk_rb_calculate_size(buffer_size); 205 return pblk_rb_init(&pblk->rwb, buffer_size, geo->csecs);
209
210 entries = vzalloc(array_size(nr_entries, sizeof(struct pblk_rb_entry)));
211 if (!entries)
212 return -ENOMEM;
213
214 power_size = get_count_order(nr_entries);
215 power_seg_sz = get_count_order(geo->csecs);
216
217 return pblk_rb_init(&pblk->rwb, entries, power_size, power_seg_sz);
218} 206}
219 207
220/* Minimum pages needed within a lun */ 208/* Minimum pages needed within a lun */