From: Takahiro Yasui <tyasui@redhat.com>
To: device-mapper development <dm-devel@redhat.com>
Cc: Heinz Mauelshagen <heinzm@redhat.com>,
Alasdair G Kergon <agk@redhat.com>
Subject: Re: DM-RAID1 data corruption
Date: Tue, 14 Apr 2009 17:07:16 -0400 [thread overview]
Message-ID: <49E4FB04.4030309@redhat.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0904141618220.701@hs20-bc2-1.build.redhat.com>
Hi Mikulas,
I know this data corruption issue can happen. To make this
condition easily, I stopped dmeventd and injected an error
to leg 0, then this issue happened in my environment.
The problem is leg 0 is always the default mirror without
checking any information. To store the information which
leg is the default mirror might solve this issue.
Thanks,
Taka
> Hi
>
> This is the scenario of data corruption that I was talking about:
>
> Mirror has two legs, 0 and 1 and a log. Disk 0 is the default.
>
> A write is propagated to both legs. The write fails on leg 0 and succeeds
> on leg 1.
>
> The function "write_callback" puts the bio to "failure" list (if
> errors_handled was true). It also wakes userspace.
>
> do_failures pops the bios from ms->log_failure and calls dm_rh_mark_nosync
> on them to mark the region nosync. dm_rh_mark_nosync completes the bio
> with success.
>
> *the computer crahes* (before the userspace daemon had a chance to run)
>
> On next reboot, disk is 0 revived (suppose that it temporarily failed
> because of a loose cable, overheating, insufficient power or so, and the
> condition is repaired), raid1 sees set bit in the dirty bitmap and starts
> copying data from disk 0 to disk 1.
>
> The result: write bio was ended as succes, but the data was lost. For
> databases, this might have bad consequences - committed transactions being
> forgotten.
>
> -
>
> If the above scenario can't happen, pls. describe why.
>
> What would be a possible way to fix this?
>
> Delay all bios until the userspace code removes the failed mirror?
> Or store the number of the default mirror in the log?
>
> Mikulas
>
> --
> dm-devel mailing list
> dm-devel@redhat.com
> https://www.redhat.com/mailman/listinfo/dm-devel
next prev parent reply other threads:[~2009-04-14 21:07 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-14 20:46 DM-RAID1 data corruption Mikulas Patocka
2009-04-14 21:07 ` Takahiro Yasui [this message]
2009-04-15 3:12 ` malahal
2009-04-15 20:38 ` Takahiro Yasui
2009-04-16 2:49 ` malahal
2009-04-16 22:24 ` Takahiro Yasui
2009-04-20 9:56 ` Mikulas Patocka
2009-04-20 17:08 ` Takahiro Yasui
2009-05-27 1:33 ` malahal
2009-06-23 1:09 ` malahal
2009-06-23 16:44 ` Takahiro Yasui
2009-06-23 18:22 ` malahal
2009-06-24 3:03 ` Neil Brown
2009-06-24 16:09 ` Takahiro Yasui
2009-06-25 14:47 ` Mikulas Patocka
2009-06-25 16:16 ` Takahiro Yasui
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=49E4FB04.4030309@redhat.com \
--to=tyasui@redhat.com \
--cc=agk@redhat.com \
--cc=dm-devel@redhat.com \
--cc=heinzm@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 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.