Linux-NVME Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: keith.busch@intel.com (Keith Busch)
Subject: [PATCH] nvme: set physical block size to value discovered in Identify Namespace
Date: Wed, 20 Sep 2017 13:48:42 -0400	[thread overview]
Message-ID: <20170920174842.GB1379@localhost.localdomain> (raw)
In-Reply-To: <20170920170605.42161-1-andrzej.jakowski@intel.com>

On Wed, Sep 20, 2017@10:06:05AM -0700, Andrzej Jakowski wrote:
> In old implementation physical block size exported by NVMe driver defaulted to
> logical block size. Existing NVMe SSDs very often
> Musze naprawic zeby brac pod uwage relative performance.

Dziekuje for the patch, but the change logs gotta be in English. :)

I think what you're wanting to say is:

  The physical block size will default to the logical block size unless
  otherwise specified. While NVMe doesn't provide a way to discover the
  physical block size, the format with best relative performance is a
  good indicator as to the underlying block size.

> +static u32 calc_pbs(struct nvme_id_ns *id)
> +{
> +	struct nvme_lbaf *lbaf_used;
> +	int i, max_id = 0;
> +	u8 ds = 0;
> +
> +	lbaf_used = &id->lbaf[id->flbas & NVME_NS_FLBAS_LBA_MASK];
> +	if (lbaf_used->rp == NVME_LBAF_RP_BEST)
> +		return (((u32)1) << lbaf_used->ds);
> +
> +	for (i = 0; i < id->nlbaf; i++) {
> +		if (id->lbaf[i].ms == 0 && id->lbaf[i].ds > ds &&
> +			id->lbaf[i].rp < lbaf_used->rp && id->lbaf[i].ds <= PAGE_SHIFT)
> +			max_id = i;
> +
> +		ds = id->lbaf[i].ds;
> +	}
> +
> +	if (id->lbaf[max_id].ds)
> +		return (((u32)1) << id->lbaf[max_id].ds);
> +	else
> +		return 0;
> +}

I think this can be a little clearner. How about:

static u32 calc_pbs(struct nvme_id_ns *id)
{
	int i;
	struct nvme_lbaf *best = &id->lbaf[id->flbas & NVME_NS_FLBAS_LBA_MASK];

	for (i = 0; i < id->nlbaf; i++)
		if (id->lbaf[i].rp <= best->rp &&
				id->lbaf[i].ds > best->lbaf.ds &&
				id->lbaf[i].ds <= PAGE_SHIFT)
			best = &id->lbaf[i];

	return 1 << best->ds;
}

  reply	other threads:[~2017-09-20 17:48 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-20 17:06 [PATCH] nvme: set physical block size to value discovered in Identify Namespace Andrzej Jakowski
2017-09-20 17:48 ` Keith Busch [this message]
2017-09-20 17:48   ` Christoph Hellwig
2017-09-20 19:07     ` Keith Busch
2017-09-20 20:01       ` Martin K. Petersen
2017-09-20 20:10       ` Christoph Hellwig

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=20170920174842.GB1379@localhost.localdomain \
    --to=keith.busch@intel.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox