All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <axboe@kernel.dk>
To: Christoph Hellwig <hch@lst.de>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>,
	Neil Brown <neilb@suse.de>, Liu Bo <bo.li.liu@oracle.com>,
	linux-raid@vger.kernel.org, dm-devel@redhat.com,
	linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] block: add a bi_error field to struct bio
Date: Wed, 22 Jul 2015 12:51:47 -0600	[thread overview]
Message-ID: <55AFE643.5000704@kernel.dk> (raw)
In-Reply-To: <1437398977-8492-2-git-send-email-hch@lst.de>

On 07/20/2015 07:29 AM, Christoph Hellwig wrote:
> Currently we have two different ways to signal an I/O error on a BIO:
>
>   (1) by clearing the BIO_UPTODATE flag
>   (2) by returning a Linux errno value to the bi_end_io callback
>
> The first one has the drawback of only communicating a single possible
> error (-EIO), and the second one has the drawback of not beeing persistent
> when bios are queued up, and are not passed along from child to parent
> bio in the ever more popular chaining scenario.  Having both mechanisms
> available has the additional drawback of utterly confusing driver authors
> and introducing bugs where various I/O submitters only deal with one of
> them, and the others have to add boilerplate code to deal with both kinds
> of error returns.
>
> So add a new bi_error field to store an errno value directly in struct
> bio and remove the existing mechanisms to clean all this up.

I think this is a good change, the only part I _really_ dislike is that 
this now bumps a struct bio from 2 cache lines to 3. Have you done any 
perf testing?

-- 
Jens Axboe

  parent reply	other threads:[~2015-07-22 18:51 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-20 13:29 add a bi_error field to struct bio V3 Christoph Hellwig
2015-07-20 13:29 ` [PATCH] block: add a bi_error field to struct bio Christoph Hellwig
2015-07-21  8:19   ` [dm-devel] " Hannes Reinecke
2015-07-22  5:00   ` NeilBrown
2015-07-22 18:51   ` Jens Axboe [this message]
2015-07-22 21:59     ` Jens Axboe
2015-07-24 10:49       ` Christoph Hellwig
2015-07-24 16:36         ` Jens Axboe
2015-07-28 11:12           ` Christoph Hellwig
2015-07-28 14:33             ` Jens Axboe
2015-07-29  2:15   ` Liu Bo
  -- strict thread matches above, loose matches on Subject: below --
2015-06-11 15:54 add a bi_error field to struct bio V2 Christoph Hellwig
2015-06-11 15:54 ` [PATCH] block: add a bi_error field to struct bio Christoph Hellwig
2015-06-03 13:42 [RFC] add a bi_error field Christoph Hellwig
2015-06-03 13:42 ` [PATCH] block: add a bi_error field to struct bio 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=55AFE643.5000704@kernel.dk \
    --to=axboe@kernel.dk \
    --cc=bo.li.liu@oracle.com \
    --cc=dm-devel@redhat.com \
    --cc=hch@lst.de \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-raid@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=neilb@suse.de \
    /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.