All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Jun'ichi Nomura" <j-nomura@ce.jp.nec.com>
To: device-mapper development <dm-devel@redhat.com>
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH] dm: noflush resizing (0/3)
Date: Wed, 24 Oct 2007 17:25:17 -0400	[thread overview]
Message-ID: <471FB83D.4060307@ce.jp.nec.com> (raw)

Hi,

Currently, there is a restriction on resizing device-mapper device:
it cannot be resized if 'noflush' option is given for suspend.

Since both multipath-tools (dm-multipath) and LVM2 mirror use
'noflush' suspend, the restriction limits the capability of
those tools.

The following patches remove the restriction.
  [PATCH] (1/3) Add bdlookup()
  [PATCH] (2/3) Use bdlookup() on noflush suspend
  [PATCH] (3/3) Allow resizing table load on noflush suspend

The patches were tested on i686 and ia64 with LVM2,
for both 'noflush' case and normal case.

Background:

  - For some device-mapper targets (multipath and mirror),
    the mapping table sometimes has to be replaced to cope with device
    failure.
    OTOH, device-mapper flushes all pending I/Os upon table replacement
    and may result in I/O errors, if there are device failures.
    'noflush' suspend is used to let dm queue the pending I/Os
    instead of flushing them.
    Since it's not possible for user space program to tell whether
    the suspend could cause I/O error, they always use
    'noflush' to suspend mirror/multipath targets.

  - Currently resizing is disabled for 'noflush' suspend.
    Resizing occurs in the course of table replacement.
    To resize the device under use, device-mapper needs to get its
    bdev inode. However, using bdget() in this case could cause deadlock
    by waiting for I_LOCK where an I/O process holding I_LOCK is
    waiting for completion of table replacement.

Thanks,
-- 
Jun'ichi Nomura, NEC Corporation of America

             reply	other threads:[~2007-10-24 21:25 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-24 21:25 Jun'ichi Nomura [this message]
2007-10-25  1:24 ` [PATCH] dm: noflush resizing (0/3) Alasdair G Kergon
2007-10-25  1:24   ` [dm-devel] " Alasdair G Kergon
2007-10-25 14:18   ` Jun'ichi Nomura
2007-10-25 14:18     ` [dm-devel] " Jun'ichi Nomura
2007-10-25 14:48     ` Alasdair G Kergon
2007-10-25 14:48       ` [dm-devel] " Alasdair G Kergon
2007-10-25 18:46       ` Jun'ichi Nomura
2007-10-25 18:46         ` [dm-devel] " Jun'ichi Nomura
2007-10-25 23:51         ` Jun'ichi Nomura
2007-10-25 23:51           ` [dm-devel] " Jun'ichi Nomura
2007-10-26  0:37         ` Alasdair G Kergon
2007-10-26  0:37           ` [dm-devel] " Alasdair G Kergon

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=471FB83D.4060307@ce.jp.nec.com \
    --to=j-nomura@ce.jp.nec.com \
    --cc=dm-devel@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    /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.