Thanks for the review, that’s good point. Improved patch is on its way. Marcin Dzięgielewski
> -----Original Message----- > From: Matias Bjørling [mailto:m...@lightnvm.io] > Sent: Thursday, May 24, 2018 10:20 AM > To: Dziegielewski, Marcin <marcin.dziegielew...@intel.com> > Cc: linux-block@vger.kernel.org; Konopko, Igor J > <igor.j.kono...@intel.com> > Subject: Re: [PATCH 1/2] lightnvm: pblk: add possibility to set write buffer > size manually > > On 05/23/2018 05:17 PM, Marcin Dziegielewski wrote: > > 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.dziegielew...@intel.com> > > Signed-off-by: Igor Konopko <igor.j.kono...@intel.com> > > --- > > drivers/lightnvm/pblk-init.c | 14 ++++++++++++-- > > 1 file changed, 12 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/lightnvm/pblk-init.c > > b/drivers/lightnvm/pblk-init.c index d65d2f9..9a7213e 100644 > > --- a/drivers/lightnvm/pblk-init.c > > +++ b/drivers/lightnvm/pblk-init.c > > @@ -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) > > + buffer_size = write_buffer_size; > > + else > > + buffer_size = pblk->pgs_in_buffer; > > + > > + nr_entries = pblk_rb_calculate_size(buffer_size); > > Would it make sense to include a check to make sure that buffer size does > not become less than pblk->pgs_in_buffer? > > > > > entries = vzalloc(nr_entries * sizeof(struct pblk_rb_entry)); > > if (!entries) > >