Message ID | 1527166065-8161-1-git-send-email-marcin.dziegielewski@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 05/24/2018 02:47 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.dziegielewski@intel.com> > Signed-off-by: Igor Konopko <igor.j.konopko@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..c890493e 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 && (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) > Thanks. Applied for 4.18
diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c index d65d2f9..c890493e 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 && (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)