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;
}
next prev parent 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