[dm-devel] Re: [RFC][PATCH] dm-mirror: fix data corruption
Takahiro Yasui
tyasui at redhat.com
Wed Sep 9 20:18:45 UTC 2009
Hi Mikulas,
On 08/31/09 17:39, Mikulas Patocka wrote:
> I uploaded patches for this bug at:
> http://people.redhat.com/mpatocka/patches/kernel/mirror-race/
>
> But note! They were never tried. When I wanted to try them, I found out
> that dmeventd is totally nonworking in upstream code (it doesn't pass
> "handle_errors" argument and has some crashes and signal errors), so I
> didn't test them with dmeventd. Dmeventd must be fixed first, then we can
> work on this bug.
Thank you for posting the patch set. I roughly looked at your patch and
have several comments.
- The flag, "handle_errors," won't be passed to dm-raid1 by dmeventd. lvm
commands (e.g. vgchange) or dmsetup pass "handle_errors" when new mirror
mapping is created.
- As I mentioned before, bios which are sent to out-of-sync regions also
need to be blocked because bios to out-of-sync regions are processed by
generic_make_request() and would return the "success" to upper layer
without dm-raid1 notices it. This might cause data corruption.
https://www.redhat.com/archives/dm-devel/2009-July/msg00118.html
- The modification of write_callback() looks a little confusing to me.
Do all bios need to be blocked? When all legs returns error, the bio
should be returned with -EIO to upper layer without being blocked as
original code using uptodate flag.
I appreciate your comments.
Thanks,
Taka
--
Takahiro Yasui
Hitachi Computer Products (America), Inc.
More information about the dm-devel
mailing list