From: David Sterba <dsterba@suse.cz>
To: Johannes Thumshirn <jthumshirn@suse.de>
Cc: dsterba@suse.cz, Dmitriy Gorokh <dmitriy.gorokh@gmail.com>,
linux-btrfs@vger.kernel.org, Ming Lei <ming.lei@redhat.com>
Subject: Re: [PATCH v2] btrfs: raid56: data corruption on a device removal
Date: Mon, 7 Jan 2019 16:34:56 +0100 [thread overview]
Message-ID: <20190107153456.GW23615@twin.jikos.cz> (raw)
In-Reply-To: <0a356978-4d95-7597-b71a-d502e94c2461@suse.de>
On Mon, Jan 07, 2019 at 12:03:43PM +0100, Johannes Thumshirn wrote:
> >> + /*
> >> + * Since the failed bio can return partial data, bi_sector might be
> >> + * incremented by that value. We need to revert it back to the
> >> + * state before the bio was submitted.
> >> + */
> >> + physical -= bio->bi_iter.bi_done;
> >
> > The bi_done member has been removed in recent block layer changes
> > commit 7759eb23fd9808a2e4498cf36a798ed65cde78ae ("block: remove
> > bio_rewind_iter()"). I wonder what kind of block-magic do we need to do
> > as the iterators seem to be local and there's nothing available in the
> > call chain leading to find_bio_stripe. Johannes, any ideas?
>
> Right, what we could do here is go the same way Ming did in
> 7759eb23fd980 ("block: remove bio_rewind_iter()") and save a bvec_iter
> somewhere before submission and then see if we returned partial data,
> but this somehow feels wrong to me (at least to do in btrfs code instead
> of the block layer).
> Ming can we resurrect ->bi_done, or do you have a different suggestion
> for finding about partial written bios?
I don't think bi_done can be resurrected
(https://marc.info/?l=linux-block&m=153549921116441&w=2) but I still am
not sure that saving the iterator is the right thing (or at least how to
do that right, not that the whole idea is wrong).
next prev parent reply other threads:[~2019-01-07 15:35 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-12 0:25 [PATCH] btrfs: raid56: data corruption on a device removal Dmitriy Gorokh
2018-12-12 9:09 ` Johannes Thumshirn
2018-12-12 15:53 ` David Sterba
2018-12-14 17:48 ` [PATCH v2] " Dmitriy Gorokh
2018-12-26 0:15 ` Liu Bo
2019-01-04 16:49 ` David Sterba
2019-01-07 11:03 ` Johannes Thumshirn
2019-01-07 15:34 ` David Sterba [this message]
2019-01-10 16:49 ` Johannes Thumshirn
2019-01-11 8:08 ` Johannes Thumshirn
2019-01-11 9:26 ` Ming Lei
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=20190107153456.GW23615@twin.jikos.cz \
--to=dsterba@suse.cz \
--cc=dmitriy.gorokh@gmail.com \
--cc=jthumshirn@suse.de \
--cc=linux-btrfs@vger.kernel.org \
--cc=ming.lei@redhat.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