From: "Javier González" <javier@javigon.com>
To: Hans Holmberg <hans.ml.holmberg@owltronix.com>
Cc: "Konopko, Igor J" <igor.j.konopko@intel.com>,
"Matias Bjørling" <mb@lightnvm.io>,
"Hans Holmberg" <hans.holmberg@cnexlabs.com>,
linux-block@vger.kernel.org
Subject: Re: [PATCH 08/13] lightnvm: pblk: Set proper read stutus in bio
Date: Mon, 4 Mar 2019 10:48:44 +0100 [thread overview]
Message-ID: <9076DF06-7B01-44DA-BA5F-9C784D56134E@javigon.com> (raw)
In-Reply-To: <CANr-nt1o4ZyRW-MwwXHQ7aXTmOr8PsqRzhR3643iddh9H2kjjg@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 3025 bytes --]
> On 4 Mar 2019, at 10.35, Hans Holmberg <hans.ml.holmberg@owltronix.com> wrote:
>
> On Mon, Mar 4, 2019 at 9:03 AM Javier González <javier@javigon.com> wrote:
>>> On 27 Feb 2019, at 18.14, Igor Konopko <igor.j.konopko@intel.com> wrote:
>>>
>>> Currently in case of read errors, bi_status is not
>>> set properly which leads to returning inproper data
>>> to higher layer. This patch fix that by setting proper
>>> status in case of read errors
>>>
>>> Patch also removes unnecessary warn_once(), which does
>>> not make sense in that place, since user bio is not used
>>> for interation with drive and thus bi_status will not be
>>> set here.
>>>
>>> Signed-off-by: Igor Konopko <igor.j.konopko@intel.com>
>>> ---
>>> drivers/lightnvm/pblk-read.c | 11 +++++------
>>> 1 file changed, 5 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/drivers/lightnvm/pblk-read.c b/drivers/lightnvm/pblk-read.c
>>> index 3789185144da..39c1d6ccaedb 100644
>>> --- a/drivers/lightnvm/pblk-read.c
>>> +++ b/drivers/lightnvm/pblk-read.c
>>> @@ -175,11 +175,10 @@ static void pblk_read_check_rand(struct pblk *pblk, struct nvm_rq *rqd,
>>> WARN_ONCE(j != rqd->nr_ppas, "pblk: corrupted random request\n");
>>> }
>>>
>>> -static void pblk_end_user_read(struct bio *bio)
>>> +static void pblk_end_user_read(struct bio *bio, int error)
>>> {
>>> -#ifdef CONFIG_NVM_PBLK_DEBUG
>>> - WARN_ONCE(bio->bi_status, "pblk: corrupted read bio\n");
>>> -#endif
>>> + if (error && error != NVM_RSP_WARN_HIGHECC)
>>> + bio_io_error(bio);
>>> bio_endio(bio);
>>> }
>>>
>>> @@ -219,7 +218,7 @@ static void pblk_end_io_read(struct nvm_rq *rqd)
>>> struct pblk_g_ctx *r_ctx = nvm_rq_to_pdu(rqd);
>>> struct bio *bio = (struct bio *)r_ctx->private;
>>>
>>> - pblk_end_user_read(bio);
>>> + pblk_end_user_read(bio, rqd->error);
>>> __pblk_end_io_read(pblk, rqd, true);
>>> }
>>>
>>> @@ -292,7 +291,7 @@ static void pblk_end_partial_read(struct nvm_rq *rqd)
>>> rqd->bio = NULL;
>>> rqd->nr_ppas = nr_secs;
>>>
>>> - bio_endio(bio);
>>> + pblk_end_user_read(bio, rqd->error);
>>> __pblk_end_io_read(pblk, rqd, false);
>>> }
>>>
>>> --
>>> 2.17.1
>>
>> This is by design. We do not report the read errors as in any other
>> block device - this is why we clone the read bio.
>
> Could you elaborate on why not reporting read errors is a good thing in pblk?
>
Normal block devices do not report read errors on the completion path
unless it is a fatal error. This is actually not well understood by the
upper layers, which tend to assume that the device is completely broken.
This is a challenge for OCSSD / Denali / Zone devices as there are cases
where reads can fail. Unfortunately at this point, we need to mask these
errors and deal with them in the different layers.
For OCSSD currently, we do this in pblk, which I think fits well the
model as we exposed a normal block device.
Javier
[-- Attachment #2: Message signed with OpenPGP --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2019-03-04 9:48 UTC|newest]
Thread overview: 91+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-27 17:14 [PATCH 00/13] lightnvm: bugfixes and improvements Igor Konopko
2019-02-27 17:14 ` [PATCH 01/13] lightnvm: pblk: Line reference fix in GC Igor Konopko
2019-03-01 12:20 ` Hans Holmberg
2019-03-04 7:18 ` Javier González
2019-03-04 12:40 ` Matias Bjørling
2019-02-27 17:14 ` [PATCH 02/13] lightnvm: pblk: Gracefully handle GC data malloc fail Igor Konopko
2019-02-28 17:08 ` Javier González
2019-03-01 12:50 ` Hans Holmberg
2019-03-04 12:38 ` Igor Konopko
2019-02-27 17:14 ` [PATCH 03/13] lightnvm: pblk: Fix put line back behaviour Igor Konopko
2019-03-01 13:27 ` Hans Holmberg
2019-03-04 7:22 ` Javier González
2019-02-27 17:14 ` [PATCH 04/13] lightnvm: pblk: Rollback in gc read Igor Konopko
2019-03-04 7:38 ` Javier González
2019-03-04 8:44 ` Hans Holmberg
2019-03-04 12:39 ` Igor Konopko
2019-03-04 12:42 ` Hans Holmberg
2019-03-04 12:49 ` Matias Bjørling
2019-02-27 17:14 ` [PATCH 05/13] lightnvm: pblk: Count all read errors in stats Igor Konopko
2019-03-04 7:42 ` Javier González
2019-03-04 9:02 ` Hans Holmberg
2019-03-04 9:23 ` Javier González
2019-03-04 11:41 ` Hans Holmberg
2019-03-04 11:45 ` Javier González
2019-03-04 12:42 ` Igor Konopko
2019-03-04 12:48 ` Hans Holmberg
2019-02-27 17:14 ` [PATCH 06/13] lightnvm: pblk: Ensure that erase is chunk aligned Igor Konopko
2019-03-04 7:48 ` Javier González
2019-03-04 9:05 ` Hans Holmberg
2019-03-04 9:11 ` Javier González
2019-03-04 11:43 ` Hans Holmberg
2019-03-04 12:44 ` Igor Konopko
2019-03-04 12:57 ` Hans Holmberg
2019-03-04 13:00 ` Matias Bjørling
2019-03-05 8:20 ` Hans Holmberg
2019-03-05 8:26 ` Igor Konopko
2019-03-05 8:40 ` Hans Holmberg
[not found] ` <61b7e62a-d229-95b1-2572-336ab1bd67cb@intel.com>
2019-03-05 8:55 ` Hans Holmberg
2019-02-27 17:14 ` [PATCH 07/13] lightnvm: pblk: Cleanly fail when there is not enough memory Igor Konopko
2019-03-04 7:53 ` Javier González
2019-03-04 9:24 ` Hans Holmberg
2019-03-04 12:46 ` Igor Konopko
2019-02-27 17:14 ` [PATCH 08/13] lightnvm: pblk: Set proper read stutus in bio Igor Konopko
2019-03-04 8:03 ` Javier González
2019-03-04 9:35 ` Hans Holmberg
2019-03-04 9:48 ` Javier González [this message]
2019-03-04 12:14 ` Hans Holmberg
2019-03-04 12:51 ` Igor Konopko
2019-03-04 13:08 ` Matias Bjørling
2019-03-04 13:45 ` Javier González
2019-03-04 15:12 ` Matias Bjørling
2019-03-05 6:43 ` Javier González
2019-03-04 13:04 ` Matias Bjørling
2019-03-04 13:21 ` Javier González
2019-02-27 17:14 ` [PATCH 09/13] lightnvm: pblk: Kick writer for flush requests Igor Konopko
2019-03-04 8:08 ` Javier González
2019-03-04 9:39 ` Hans Holmberg
2019-03-04 12:52 ` Igor Konopko
2019-02-27 17:14 ` [PATCH 10/13] lightnvm: pblk: Reduce L2P DRAM footprint Igor Konopko
2019-03-04 8:17 ` Javier González
2019-03-04 9:29 ` Hans Holmberg
2019-03-04 13:11 ` Matias Bjørling
2019-02-27 17:14 ` [PATCH 11/13] lightnvm: pblk: Remove unused smeta_ssec field Igor Konopko
2019-03-04 8:21 ` Javier González
2019-03-04 9:40 ` Hans Holmberg
2019-02-27 17:14 ` [PATCH 12/13] lightnvm: pblk: close opened chunks Igor Konopko
2019-03-04 8:27 ` Javier González
2019-03-04 10:05 ` Hans Holmberg
2019-03-04 12:56 ` Igor Konopko
2019-03-04 13:03 ` Hans Holmberg
2019-03-04 13:19 ` Matias Bjørling
2019-03-04 13:48 ` Javier González
2019-03-04 13:18 ` Matias Bjørling
2019-03-04 13:47 ` Javier González
2019-02-27 17:14 ` [PATCH 13/13] lightnvm: Inherit mdts from the parent nvme device Igor Konopko
2019-03-04 9:05 ` Javier González
2019-03-04 11:30 ` Hans Holmberg
2019-03-04 11:44 ` Javier González
2019-03-04 12:22 ` Hans Holmberg
2019-03-04 13:04 ` Igor Konopko
2019-03-04 13:16 ` Hans Holmberg
2019-03-04 14:06 ` Javier González
2019-03-04 13:19 ` Javier González
2019-03-04 13:25 ` Matias Bjørling
2019-03-04 13:44 ` Javier González
2019-03-04 14:24 ` Hans Holmberg
2019-03-04 14:27 ` Javier González
2019-03-04 14:58 ` Matias Bjørling
2019-02-28 16:36 ` [PATCH 00/13] lightnvm: bugfixes and improvements Matias Bjørling
2019-02-28 17:15 ` Javier González
2019-03-01 10:23 ` Hans Holmberg
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=9076DF06-7B01-44DA-BA5F-9C784D56134E@javigon.com \
--to=javier@javigon.com \
--cc=hans.holmberg@cnexlabs.com \
--cc=hans.ml.holmberg@owltronix.com \
--cc=igor.j.konopko@intel.com \
--cc=linux-block@vger.kernel.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