Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4a828884 authored by Marcin Dziegielewski's avatar Marcin Dziegielewski Committed by Jens Axboe
Browse files

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: default avatarMarcin Dziegielewski <marcin.dziegielewski@intel.com>
Signed-off-by: default avatarIgor Konopko <igor.j.konopko@intel.com>
Signed-off-by: default avatarMatias Bjørling <mb@lightnvm.io>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent fbadca73
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -20,6 +20,11 @@

#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)