diff options
Diffstat (limited to 'drivers/lightnvm/pblk-init.c')
-rw-r--r-- | drivers/lightnvm/pblk-init.c | 18 |
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 | ||
192 | static int pblk_rwb_init(struct pblk *pblk) | 191 | static 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 */ |