[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