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
next 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.