lightnvm: pblk: add possibility to set write buffer size manually
authorMarcin Dziegielewski <marcin.dziegielewski@intel.com>
Fri, 1 Jun 2018 14:41:10 +0000 (16:41 +0200)
committerJens Axboe <axboe@kernel.dk>
Fri, 1 Jun 2018 15:02:53 +0000 (09:02 -0600)
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>
drivers/lightnvm/pblk-init.c

index 783887b891b7bd48788a289ff760bdaacbb83d00..ce561f5d48ce48cf0fe25ab8b83b8976dea40b0b 100644 (file)
 
 #include "pblk.h"
 
+unsigned int write_buffer_size;
+
+module_param(write_buffer_size, uint, 0644);
+MODULE_PARM_DESC(write_buffer_size, "number of entries in a write buffer");
+
 static struct kmem_cache *pblk_ws_cache, *pblk_rec_cache, *pblk_g_rq_cache,
                                *pblk_w_rq_cache;
 static DECLARE_RWSEM(pblk_lock);
@@ -172,10 +177,15 @@ static int pblk_rwb_init(struct pblk *pblk)
        struct nvm_tgt_dev *dev = pblk->dev;
        struct nvm_geo *geo = &dev->geo;
        struct pblk_rb_entry *entries;
-       unsigned long nr_entries;
+       unsigned long nr_entries, buffer_size;
        unsigned int power_size, power_seg_sz;
 
-       nr_entries = pblk_rb_calculate_size(pblk->pgs_in_buffer);
+       if (write_buffer_size && (write_buffer_size > pblk->pgs_in_buffer))
+               buffer_size = write_buffer_size;
+       else
+               buffer_size = pblk->pgs_in_buffer;
+
+       nr_entries = pblk_rb_calculate_size(buffer_size);
 
        entries = vzalloc(nr_entries * sizeof(struct pblk_rb_entry));
        if (!entries)