All of lore.kernel.org
 help / color / mirror / Atom feed
From: Javier Gonzalez <javier@cnexlabs.com>
To: "Matias Bjørling" <mb@lightnvm.io>
Cc: Jens Axboe <axboe@fb.com>,
	"linux-block@vger.kernel.org" <linux-block@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Marcin Dziegielewski <marcin.dziegielewski@intel.com>,
	"Konopko, Igor J" <igor.j.konopko@intel.com>
Subject: Re: [GIT PULL 18/20] lightnvm: pblk: handle case when mw_cunits equals to 0
Date: Mon, 28 May 2018 11:02:43 +0000	[thread overview]
Message-ID: <54B2CCDB-B869-4087-8AE2-2AC73381B1FF@cnexlabs.com> (raw)
In-Reply-To: <20180528085841.26684-19-mb@lightnvm.io>

[-- Attachment #1: Type: text/plain, Size: 2564 bytes --]

> On 28 May 2018, at 10.58, Matias Bjørling <mb@lightnvm.io> wrote:
> 
> From: Marcin Dziegielewski <marcin.dziegielewski@intel.com>
> 
> Some devices can expose mw_cunits equal to 0, it can cause creation
> of too small write buffer and cause performance to drop on write
> workloads.
> 
> To handle that, we use the default value for MLC and beacause it
> covers both 1.2 and 2.0 OC specification, setting up mw_cunits
> in nvme_nvm_setup_12 function isn't longer necessary.
> 
> 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>
> ---
> drivers/lightnvm/pblk-init.c | 10 +++++++++-
> drivers/nvme/host/lightnvm.c |  1 -
> 2 files changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/lightnvm/pblk-init.c b/drivers/lightnvm/pblk-init.c
> index d65d2f972ccf..0f277744266b 100644
> --- a/drivers/lightnvm/pblk-init.c
> +++ b/drivers/lightnvm/pblk-init.c
> @@ -356,7 +356,15 @@ static int pblk_core_init(struct pblk *pblk)
> 	atomic64_set(&pblk->nr_flush, 0);
> 	pblk->nr_flush_rst = 0;
> 
> -	pblk->pgs_in_buffer = geo->mw_cunits * geo->all_luns;
> +	if (geo->mw_cunits) {
> +		pblk->pgs_in_buffer = geo->mw_cunits * geo->all_luns;
> +	} else {
> +		pblk->pgs_in_buffer = (geo->ws_opt << 3) * geo->all_luns;
> +		/*
> +		 * Some devices can expose mw_cunits equal to 0, so let's use
> +		 * here default safe value for MLC.
> +		 */
> +	}
> 
> 	pblk->min_write_pgs = geo->ws_opt * (geo->csecs / PAGE_SIZE);
> 	max_write_ppas = pblk->min_write_pgs * geo->all_luns;
> diff --git a/drivers/nvme/host/lightnvm.c b/drivers/nvme/host/lightnvm.c
> index 41279da799ed..c747792da915 100644
> --- a/drivers/nvme/host/lightnvm.c
> +++ b/drivers/nvme/host/lightnvm.c
> @@ -338,7 +338,6 @@ static int nvme_nvm_setup_12(struct nvme_nvm_id12 *id,
> 
> 	geo->ws_min = sec_per_pg;
> 	geo->ws_opt = sec_per_pg;
> -	geo->mw_cunits = geo->ws_opt << 3;	/* default to MLC safe values */
> 
> 	/* Do not impose values for maximum number of open blocks as it is
> 	 * unspecified in 1.2. Users of 1.2 must be aware of this and eventually
> --
> 2.11.0

By doing this, 1.2 future users (beyond pblk), will fail to have a valid
mw_cunits value. It's ok to deal with the 0 case in pblk, but I believe
that we should have the default value for 1.2 either way.

A more generic way of doing this would be to have a default value for
2.0 too, in case mw_cunits is reported as 0.

Javier


[-- Attachment #2: Message signed with OpenPGP --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2018-05-28 12:18 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-28  8:58 [GIT PULL 00/20] lightnvm updates for 4.18 Matias Bjørling
2018-05-28  8:58 ` [GIT PULL 01/20] lightnvm: pblk: fail gracefully on line alloc. failure Matias Bjørling
2018-05-28  8:58 ` [GIT PULL 02/20] lightnvm: pblk: recheck for bad lines at runtime Matias Bjørling
2018-05-28  8:58 ` [GIT PULL 03/20] lightnvm: pblk: check read lba on gc path Matias Bjørling
2018-05-28  8:58 ` [GIT PULL 04/20] lightnvm: pblk: improve error msg on corrupted LBAs Matias Bjørling
2018-05-28  8:58 ` [GIT PULL 05/20] lightnvm: pblk: warn in case of corrupted write buffer Matias Bjørling
2018-05-28  8:58 ` [GIT PULL 06/20] lightnvm: pblk: return NVM_ error on failed submission Matias Bjørling
2018-05-28  8:58 ` [GIT PULL 07/20] lightnvm: pblk: remove unnecessary indirection Matias Bjørling
2018-05-28  8:58 ` [GIT PULL 08/20] lightnvm: pblk: remove unnecessary argument Matias Bjørling
2018-05-28  8:58 ` [GIT PULL 09/20] lightnvm: pblk: check for chunk size before allocating it Matias Bjørling
2018-05-28  8:58 ` [GIT PULL 10/20] lightnvm: pass flag on graceful teardown to targets Matias Bjørling
2018-05-28  8:58 ` [GIT PULL 11/20] lightnvm: pblk: remove dead function Matias Bjørling
2018-05-28  8:58 ` [GIT PULL 12/20] lightnvm: pblk: rework write error recovery path Matias Bjørling
2018-05-28  8:58 ` [GIT PULL 13/20] lightnvm: pblk: garbage collect lines with failed writes Matias Bjørling
2018-05-28  8:58 ` [GIT PULL 14/20] lightnvm: pblk: fix smeta write error path Matias Bjørling
2018-05-28  8:58 ` [GIT PULL 15/20] lightnvm: proper error handling for pblk_bio_add_pages Matias Bjørling
2018-05-28  8:58 ` [GIT PULL 16/20] lightnvm: error handling when whole line is bad Matias Bjørling
2018-05-28 10:59   ` Javier Gonzalez
2018-05-29 13:15     ` Konopko, Igor J
2018-05-29 18:29       ` Javier Gonzalez
2018-05-28  8:58 ` [GIT PULL 17/20] lightnvm: fix partial read error path Matias Bjørling
2018-05-28  8:58 ` [GIT PULL 18/20] lightnvm: pblk: handle case when mw_cunits equals to 0 Matias Bjørling
2018-05-28 11:02   ` Javier Gonzalez [this message]
2018-06-04 10:09     ` Dziegielewski, Marcin
2018-06-04 10:09       ` Dziegielewski, Marcin
2018-06-04 10:21       ` Javier Gonzalez
2018-06-04 10:21         ` Javier Gonzalez
2018-06-04 11:11         ` Dziegielewski, Marcin
2018-06-04 11:11           ` Dziegielewski, Marcin
2018-06-04 11:15           ` Javier Gonzalez
2018-06-04 11:15             ` Javier Gonzalez
2018-06-04 17:17             ` Dziegielewski, Marcin
2018-06-04 17:17               ` Dziegielewski, Marcin
2018-06-05  7:12               ` Javier Gonzalez
2018-06-05  9:18                 ` Dziegielewski, Marcin
2018-05-28  8:58 ` [GIT PULL 19/20] lightnvm: pblk: add possibility to set write buffer size manually Matias Bjørling
2018-05-28  8:58 ` [GIT PULL 20/20] lightnvm: pblk: sync RB and RL states during GC Matias Bjørling
2018-05-28 10:51   ` Javier Gonzalez
2018-05-29 13:07     ` Konopko, Igor J
2018-05-29 17:58       ` Javier Gonzalez
2018-06-01 10:45 ` [GIT PULL 00/20] lightnvm updates for 4.18 Matias Bjørling
2018-06-01 12:36   ` Jens Axboe
2018-06-01 12:36     ` Jens Axboe

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54B2CCDB-B869-4087-8AE2-2AC73381B1FF@cnexlabs.com \
    --to=javier@cnexlabs.com \
    --cc=axboe@fb.com \
    --cc=igor.j.konopko@intel.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marcin.dziegielewski@intel.com \
    --cc=mb@lightnvm.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.