From: "Javier González" <jg@lightnvm.io>
To: mb@lightnvm.io
Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-nvme@lists.infradead.org,
"Javier González" <javier@cnexlabs.com>
Subject: [PATCH V3 00/19] lightnvm: pblk: implement 2.0 support
Date: Mon, 26 Feb 2018 14:16:59 +0100 [thread overview]
Message-ID: <1519651038-16845-1-git-send-email-javier@cnexlabs.com> (raw)
# Changes since V2:
Apply Matias' feedback:
- Remove generic nvm_id identify structure.
- Do not remap capabilities (cap) to media and controlled capabilities
(mccap). Instead, add a comment to prevent confusion when
crosschecking with 2.0 spec.
- Change maxoc and maxocpu defaults from 1 block to the max number of
blocks.
- Re-implement the generic geometry to use nvm_geo on both device and
targets. Maintain nvm_common_geo to make it easier to copy the common
part of the geometry (without having to overwrite target-specific
fields, which is ugly and error prone). Matias, if you still want to
get rid of this, we can do it.
- Re-order patches with renaming to make them more meaningful. These
belong to the series, since the name changes are motivated by 2.0
inclusions. The only exception would be 36d10bfd3234, but I hope it
is OK I include it here.
Also,
- Eliminate a dependency between luns and lines in the init/exit
refactoring.
- Use the global address format when possible to avoid defaulting on
the 1.2 path. This will safe headaches if the address format changes
at some point.
I took out the patch allowing to do bit shifts on non power-of-2 media
formats on pblk's mapping since it requires touching many places that
are not 2.0 related. I'll submit this separately.
# Changes since V1:
Apply Matias' feedback:
- Rebase on top of Matias' latest patches.
- Use nvme_get_log_ext to submit report chunk and export it.
- Re-write report chunk based on Matias' suggestions. Here, I
maintained the lba interface, but it was necessary to redo the
address formatting to match the chunk log page format. For pblk,
this means a double address transformation, but it enables the
standard path to use lbas, plus, this is not in the fast path.
- Fold address format together with address transformations.
- Split the generic geometry patch in different patches.
- Remove refactoring of ligthnvm's core sysfs.
Feedback not applied:
- Not letting pblk know about 1.2 and 2.0 bad block paths.
Since the interfaces for get/set bad block and report chunk are so
different, moving this logic to core adds assumptions on how the
targets would want to get the data back. A way of doing this is
creating a logical report chunk on the 1.2 path, but this would
mean that values like the wear-index are invalid, which requires
the target knowledge. I'm open to suggestions here.
Also:
- Do some further renamings
- Create a generic address format to make it explicit where we share
1.2 and 2.0 fields to avoid address formatting in the fast path.
- Add new fields to sysfs to complete spec and show major/minor
versions (version and subversion to respect current interface).
Implement 2.0 support in pblk. This includes the address formatting and
mapping paths, as well as the sysfs entries for them.
Javier
Javier González (19):
lightnvm: simplify geometry structure.
lightnvm: add controller capabilities to 2.0
lightnvm: add minor version to generic geometry
lightnvm: add shorten OCSSD version in geo
lightnvm: complete geo structure with maxoc*
lightnvm: pblk: check for supported version
lightnvm: complete 2.0 values in sysfs
lightnvm: rename number of channels and luns
lightnvm: rename sect_* to sec_*
lightnvm: add support for 2.0 address format
lightnvm: pblk: rename ppaf* to addrf*
lightnvn: pblk: use generic address format
lightnvm: make address conversions depend on generic device
nvme: make nvme_get_log_ext available
lightnvm: implement get log report chunk helpers
lightnvm: define chunk states
lightnvm: pblk: implement get log report chunk
lightnvm: pblk: refactor init/exit sequences
lightnvm: pblk: implement 2.0 support
drivers/lightnvm/core.c | 199 +++++-----
drivers/lightnvm/pblk-core.c | 151 +++++--
drivers/lightnvm/pblk-gc.c | 2 +-
drivers/lightnvm/pblk-init.c | 833 +++++++++++++++++++++++----------------
drivers/lightnvm/pblk-map.c | 4 +-
drivers/lightnvm/pblk-read.c | 2 +-
drivers/lightnvm/pblk-recovery.c | 14 +-
drivers/lightnvm/pblk-rl.c | 2 +-
drivers/lightnvm/pblk-sysfs.c | 134 ++++++-
drivers/lightnvm/pblk-write.c | 2 +-
drivers/lightnvm/pblk.h | 255 ++++++++----
drivers/nvme/host/lightnvm.c | 458 ++++++++++++++-------
drivers/nvme/host/nvme.h | 3 +
include/linux/lightnvm.h | 338 ++++++++++------
14 files changed, 1559 insertions(+), 838 deletions(-)
--
2.7.4
next reply other threads:[~2018-02-26 13:19 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-26 13:16 Javier González [this message]
2018-02-26 13:17 ` [PATCH 01/19] lightnvm: simplify geometry structure Javier González
2018-02-26 13:17 ` [PATCH 02/19] lightnvm: add controller capabilities to 2.0 Javier González
2018-02-26 13:17 ` [PATCH 03/19] lightnvm: add minor version to generic geometry Javier González
2018-02-26 13:17 ` [PATCH 04/19] lightnvm: add shorten OCSSD version in geo Javier González
2018-02-26 13:17 ` [PATCH 05/19] lightnvm: complete geo structure with maxoc* Javier González
2018-02-26 13:17 ` [PATCH 06/19] lightnvm: pblk: check for supported version Javier González
2018-02-26 13:17 ` [PATCH 07/19] lightnvm: complete 2.0 values in sysfs Javier González
2018-02-26 13:17 ` [PATCH 08/19] lightnvm: rename number of channels and luns Javier González
2018-02-26 13:17 ` [PATCH 09/19] lightnvm: rename sect_* to sec_* Javier González
2018-02-26 13:17 ` [PATCH 10/19] lightnvm: add support for 2.0 address format Javier González
2018-02-26 13:17 ` [PATCH 11/19] lightnvm: pblk: rename ppaf* to addrf* Javier González
2018-02-26 13:17 ` [PATCH 12/19] lightnvn: pblk: use generic address format Javier González
2018-02-26 13:17 ` [PATCH 13/19] lightnvm: make address conversions depend on generic device Javier González
2018-02-26 13:17 ` [PATCH 14/19] nvme: make nvme_get_log_ext available Javier González
2018-02-26 13:17 ` [PATCH 15/19] lightnvm: implement get log report chunk helpers Javier González
2018-02-26 13:17 ` [PATCH 16/19] lightnvm: define chunk states Javier González
2018-02-26 13:17 ` [PATCH 17/19] lightnvm: pblk: implement get log report chunk Javier González
2018-02-26 19:04 ` Matias Bjørling
2018-02-27 14:40 ` Javier González
2018-02-27 18:46 ` Matias Bjørling
2018-02-27 19:50 ` Javier González
2018-02-26 13:17 ` [PATCH 18/19] lightnvm: pblk: refactor init/exit sequences Javier González
2018-02-26 13:17 ` [PATCH 19/19] lightnvm: pblk: implement 2.0 support Javier González
2018-02-26 18:19 ` [PATCH V3 00/19] " Matias Bjørling
2018-02-26 18:21 ` Javier Gonzalez
2018-02-26 18:24 ` Matias Bjørling
2018-02-26 18:27 ` Javier Gonzalez
2018-02-26 18:33 ` Matias Bjørling
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=1519651038-16845-1-git-send-email-javier@cnexlabs.com \
--to=jg@lightnvm.io \
--cc=javier@cnexlabs.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).