[dm-devel] Resizing multipath maps: reload ioctl failed: Invalid argument
Tore Anderson
tore at linpro.no
Mon Aug 27 18:47:00 UTC 2007
Hello,
* Jun'ichi Nomura
> 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?
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...
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?
> 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..?
Thanks
--
Tore Anderson
More information about the dm-devel
mailing list