From: Qu Wenruo <quwenruo.btrfs@gmx.com>
To: dsterba@suse.cz, Qu Wenruo <wqu@suse.com>,
Josef Bacik <josef@toxicpanda.com>,
David Sterba <dsterba@suse.com>, Christoph Hellwig <hch@lst.de>,
Naohiro Aota <naohiro.aota@wdc.com>,
linux-btrfs@vger.kernel.org
Subject: Re: [PATCH 1/2] btrfs: fix direct I/O read repair for split bios
Date: Thu, 31 Mar 2022 06:24:45 +0800 [thread overview]
Message-ID: <bcb7b671-6c82-1914-7442-a96fcc460b71@gmx.com> (raw)
In-Reply-To: <20220330144358.GF2237@twin.jikos.cz>
On 2022/3/30 22:43, David Sterba wrote:
> On Thu, Mar 24, 2022 at 05:06:27PM +0100, Christoph Hellwig wrote:
>> When a bio is split in btrfs_submit_direct, dip->file_offset contains
>> the file offset for the first bio. But this means the start value used
>> in btrfs_check_read_dio_bio is incorrect for subsequent bios. Add
>> a file_offset field to struct btrfs_bio to pass along the correct offset.
>>
>> Given that check_data_csum only uses start of an error message this
>> means problems with this miscalculation will only show up when I/O
>> fails or checksums mismatch.
>>
>> Signed-off-by: Christoph Hellwig <hch@lst.de>
>> Reviewed-by: Qu Wenruo <wqu@suse.com>
>
> Qu, you've removed the same logic in f4f39fc5dc30 ("btrfs: remove
> btrfs_bio::logical member") where it was a different name for the same
> variable. What changed in the logic that we don't need to store it along
> the btrfs_bio and that btrfs_dio_private can't provide anymore?
All my fault, I didn't realize that in btrfs_submit_direct() what we
really do is splitting the iomap bio.
Thus we still need that @logical member as dip is only allocated for the
whole iomap bio, not for each split btrfs bio.
Thus we need the fixes: tag.
>
> I'm a bit worried about your changes that remove/rewrite code, silently
> introducing bugs so it has to be reinstated. We don't have enough
> review coverage and in the amount of patches you send I'm increasingly
> worried how many bugs I've inadvertently let in.
Normally it should be caught by test cases. But test case coverage is
not that better than our review coverage, especially for read repair, as
it's a btrfs specific feature, and almost impossible to do stress tests.
The good news is, for most of my subpage related rewrite, the existing
test cases are pretty good catching the bugs.
I don't really have better way other than adding regression tests cases
until we found some regression.
Thanks,
Qu
next prev parent reply other threads:[~2022-03-30 22:25 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-24 16:06 fixes for handling of split direct I/O bios Christoph Hellwig
2022-03-24 16:06 ` [PATCH 1/2] btrfs: fix direct I/O read repair for split bios Christoph Hellwig
2022-03-30 14:43 ` David Sterba
2022-03-30 22:24 ` Qu Wenruo [this message]
2022-03-30 23:14 ` Qu Wenruo
2022-03-31 0:53 ` Qu Wenruo
2022-03-24 16:06 ` [PATCH 2/2] btrfs: fix direct I/O writes for split bios on zoned devices Christoph Hellwig
2022-03-24 16:49 ` fixes for handling of split direct I/O bios Sweet Tea Dorminy
2022-03-24 16:57 ` Christoph Hellwig
2022-03-25 9:14 ` Johannes Thumshirn
2022-03-29 8:00 ` Naohiro Aota
2022-04-08 16:40 ` Christoph Hellwig
2022-04-12 19:43 ` David Sterba
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=bcb7b671-6c82-1914-7442-a96fcc460b71@gmx.com \
--to=quwenruo.btrfs@gmx.com \
--cc=dsterba@suse.com \
--cc=dsterba@suse.cz \
--cc=hch@lst.de \
--cc=josef@toxicpanda.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=naohiro.aota@wdc.com \
--cc=wqu@suse.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