aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/lightnvm/pblk-init.c
diff options
context:
space:
mode:
authorMarcin Dziegielewski <marcin.dziegielewski@intel.com>2018-06-01 10:41:10 -0400
committerJens Axboe <axboe@kernel.dk>2018-06-01 11:02:53 -0400
commit4a828884c694dfaf002688b91a102e35d4961a1b (patch)
tree3bbe7647398267f3904226ef13242c597e5352a9 /drivers/lightnvm/pblk-init.c
parentfbadca7396b97d95e2390c97506358f4f9dce7c7 (diff)
lightnvm: pblk: add possibility to set write buffer size manually
In some cases, users can want set write buffer size manually, e.g. to adjust it to specific workload. This patch provides the possibility to set write buffer size via module parameter feature. Signed-off-by: Marcin Dziegielewski <marcin.dziegielewski@intel.com> Signed-off-by: Igor Konopko <igor.j.konopko@intel.com> Signed-off-by: Matias Bjørling <mb@lightnvm.io> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'drivers/lightnvm/pblk-init.c')
-rw-r--r--drivers/lightnvm/pblk-init.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c
index 783887b891b7..ce561f5d48ce 100644
--- a/drivers/lightnvm/pblk-init.c
+++ b/drivers/lightnvm/pblk-init.c
@@ -20,6 +20,11 @@
20 20
21#include "pblk.h" 21#include "pblk.h"
22 22
23unsigned int write_buffer_size;
24
25module_param(write_buffer_size, uint, 0644);
26MODULE_PARM_DESC(write_buffer_size, "number of entries in a write buffer");
27
23static struct kmem_cache *pblk_ws_cache, *pblk_rec_cache, *pblk_g_rq_cache, 28static struct kmem_cache *pblk_ws_cache, *pblk_rec_cache, *pblk_g_rq_cache,
24 *pblk_w_rq_cache; 29 *pblk_w_rq_cache;
25static DECLARE_RWSEM(pblk_lock); 30static DECLARE_RWSEM(pblk_lock);
@@ -172,10 +177,15 @@ static int pblk_rwb_init(struct pblk *pblk)
172 struct nvm_tgt_dev *dev = pblk->dev; 177 struct nvm_tgt_dev *dev = pblk->dev;
173 struct nvm_geo *geo = &dev->geo; 178 struct nvm_geo *geo = &dev->geo;
174 struct pblk_rb_entry *entries; 179 struct pblk_rb_entry *entries;
175 unsigned long nr_entries; 180 unsigned long nr_entries, buffer_size;
176 unsigned int power_size, power_seg_sz; 181 unsigned int power_size, power_seg_sz;
177 182
178 nr_entries = pblk_rb_calculate_size(pblk->pgs_in_buffer); 183 if (write_buffer_size && (write_buffer_size > pblk->pgs_in_buffer))
184 buffer_size = write_buffer_size;
185 else
186 buffer_size = pblk->pgs_in_buffer;
187
188 nr_entries = pblk_rb_calculate_size(buffer_size);
179 189
180 entries = vzalloc(nr_entries * sizeof(struct pblk_rb_entry)); 190 entries = vzalloc(nr_entries * sizeof(struct pblk_rb_entry));
181 if (!entries) 191 if (!entries)