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>
Subject: Re: Resizing multipath maps: reload ioctl failed: Invalid argument
Date: Mon, 27 Aug 2007 16:29:46 -0400	[thread overview]
Message-ID: <46D3343A.6030302@ce.jp.nec.com> (raw)
In-Reply-To: <46D31C24.4030201@linpro.no>

Hi,

Tore Anderson wrote:
>> It's due to kernel device-mapper restriction.
>>
>> multipath-tools uses no_flush suspend of device-mapper device to save
>> I/O errors in all-paths-down case. (Without the option, device-mapper
>> needs to flush all pending I/Os, that will result in I/O errors if
>> there is no working path.)
>>
>> For no_flush suspend, resizing is disabled because of known
>> dead-lock: it requires a lock that can be kept hold until the pending
>> I/Os are flushed.
> 
>   Hmm.  So this deadlock is a kernel bug that (hopefully) will be fixed
>  in the future, so resizing can again be enabled, or is this a design
>  limitation that it's impossible to do something about?

IMO, it's not a design limitation and should be solved in future.

>   Can the no_flush thing be toggled online;  that is, would it be
>  possible to alter multipath-tools so that when it attempted to resize a
>  map, it would disable no_flush, resize it, and then re-enable it?  I
>  think a two-second window of vulnerability to all-paths-down is
>  acceptable...

Everywhen you suspend the device, there is a possibility of
all paths being down. So as far as you don't want to lose data,
you have to use no_flush option.

>   Similarily, if this no_flush option is relevant only when
>  features=queue_if_no_paths (at least that's the impression I get from
>  your description of it), would it work to temporarily reload the map
>  without this feature, resize the volume, than re-add queue_if_no_path?

Current code uses 'no_flush' unconditionally.
I think it's possible to improve it to do that only when
queue_if_no_path is enabled.

>> A workaround for it would be using modified multipath-tools which
>> doesn't use no_noflush.
> 
>   I grepped for noflush and no_flush (and so on) in the multipath-tools
>  source code but can't really find where it is set..?

Hmm, sorry. I misread your first message.
Since the feature is added after 0.4.7, your problem may be caused
by other reason.
The call to dm_task_no_flush() is added after the release of 0.4.7.
It should be in dm_simplecmd() in libmultipath/devmapper.c.

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

  reply	other threads:[~2007-08-27 20:29 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-08-27 13:02 Resizing multipath maps: reload ioctl failed: Invalid argument Tore Anderson
2007-08-27 15:25 ` Jun'ichi Nomura
2007-08-27 18:47   ` Tore Anderson
2007-08-27 20:29     ` Jun'ichi Nomura [this message]
     [not found]       ` <46D33FA6.5000304@linpro.no>
2007-08-27 22:44         ` Jun'ichi Nomura
  -- strict thread matches above, loose matches on Subject: below --
2007-10-24 14:17 Domenico Viggiani
2007-10-24 15:50 ` Aaron Bergstralh
2007-10-24 21:10 ` Jun'ichi Nomura

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=46D3343A.6030302@ce.jp.nec.com \
    --to=j-nomura@ce.jp.nec.com \
    --cc=dm-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.