All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takahiro Yasui <tyasui@redhat.com>
To: lvm-devel@redhat.com
Subject: [PATCH] handle transient errors in lvconvert --repair
Date: Wed, 28 Apr 2010 15:37:21 -0400	[thread overview]
Message-ID: <4BD88E71.3040902@redhat.com> (raw)
In-Reply-To: <87y6g99bbg.fsf@twilight.int.mornfall.net.>

On 04/27/10 11:14, Petr Rockai wrote:
> this is a first iteration of the transient-error handling in
> lvconvert. This works by marking LVs as partial even though there are no
> PVs missing -- whenever a mirror marks a leg or log as failed (in the
> status string). The downside of this approach is that we never figure
> which PV is failing, but that would require kernel-level support for IO
> error tracking.

Hello Petr,

It is very grad that the patch to fix this issue was being developed.
I have not thoroughly read it, but I found one issue. It doesn't work
for a "mirrored" log, while it looks good for a "core" or "disk" log.

A logical mirror device with a mirrored log has a 'layered' structure
for its log. Therefore, we need to check the status of its log, too.
As for the following example, we need to check the status string of
vg00-lv00_mlog.

# dmsetup ls --tree -o ascii
vg00-lv00 (253:5)
 |-vg00-lv00_mimage_1 (253:4)
 |  `- (8:48)
 |-vg00-lv00_mimage_0 (253:3)
 |  `- (8:32)
 `-vg00-lv00_mlog (253:2)
    |-vg00-lv00_mlog_mimage_1 (253:1)
    |  `- (8:80)
    `-vg00-lv00_mlog_mimage_0 (253:0)
       `- (8:64)

# dmsetup status
...
vg00-lv00_mlog: 0 8192 mirror 2 253:0 253:1 8/8 1 AA 1 core
vg00-lv00: 0 24576 mirror 2 253:3 253:4 24/24 1 AA 3 disk 253:2 A


The current code calls lv_check_transient() at the beginning of
_lvconvert_mirrors_repair() but I think that lv_check_transient()
needs to be called in functions which repairs a mirror log,
such as _lv_update_log_type(), too.

Also this patch works well not only for a transient error but
also a medium error, therefore, function names with '_transient'
could be '_status' or '_status_string'. (e.g. lv_check_status())

I appreciate your work on this issue.

Thanks,
Taka



  parent reply	other threads:[~2010-04-28 19:37 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-27 15:14 [PATCH] handle transient errors in lvconvert --repair Petr Rockai
2010-04-27 18:03 ` Petr Rockai
2010-05-06 17:30   ` Petr Rockai
2010-05-14 22:52     ` Takahiro Yasui
2010-05-17 23:01       ` Takahiro Yasui
2010-05-19 12:06         ` Petr Rockai
2010-05-19 15:06           ` Takahiro Yasui
2010-05-19 18:31             ` Petr Rockai
2010-05-19 19:46               ` Takahiro Yasui
2010-05-19 20:19                 ` Petr Rockai
2010-05-19 20:31                   ` Alasdair G Kergon
2010-05-19 20:35                   ` Takahiro Yasui
2010-05-20  0:49               ` Takahiro Yasui
2010-05-20  7:40                 ` Petr Rockai
2010-05-20 11:54                   ` Takahiro Yasui
2010-05-19 16:44           ` Takahiro Yasui
2010-05-19 17:15             ` Takahiro Yasui
2010-05-19 20:26               ` Petr Rockai
2010-04-28 19:37 ` Takahiro Yasui [this message]
2010-05-05  7:46   ` Petr Rockai
2010-05-05 15:31     ` 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=4BD88E71.3040902@redhat.com \
    --to=tyasui@redhat.com \
    --cc=lvm-devel@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.