[dm-devel] 2.6.10-rc1-udm1: multipath work in progress
Alasdair G Kergon
agk at redhat.com
Tue Nov 2 20:19:28 UTC 2004
Miscellaneous points:
On Tue, Nov 02, 2004 at 08:46:04PM +0100, christophe varoqui wrote:
> Let the kernel fail them ... as soon as the primary PG paths are
> exhausted, it will switch to the secondary PG and an event will cause
> multipathd to reconfigure the table. The secondary will become primary,
> and failed paths will come back up, grouped in a low prio PG.
Which may require rapid intervention by userspace, or the queue_if_no_paths
pause to give userspace time to sort things out.
[Consider the primary pg_init_fn finds the paths would be OK but
aren't current, so fails them all so the currently-preferred secondary can
be used. But the secondary paths turn out to have genuinely failed so you
*do* want to use the primary after all, but you can't now. How do you tell
the primary to *forcibly* use the paths? This method has effectively
transferred the pg_init_fn to userspace. Or it requires giving the
pg_init_fn complete knowledge of the configuration so it checks both primary
and secondary PGs before deciding what to do - but then that has an
equivalent effect to what's already implemented in these patches using PG
enable/disable. Or you have a 3rd and 4th PG duplicating the 1st & 2nd ones
but with a new 'force' flag.]
[I see queue_if_no_paths very much as a last resort: it's there
as an option for not-so-good hardware. In any decent system there should
never be no paths without catastrophic hardware failure.]
> We can failback already, with the current design.
> As I see it, all the "disable PG" feature brings is save some table
> reloads. Is it worth the added complexity ?
Performing tables reloads is the complex option IMHO.
[Even ignoring the suspend/resume queueing issues that aren't
resolved yet.]
Table reloads wipe all knowledge of the existing state from the kernel and
start afresh, so pg_init_fn's have to be run again etc. They also cannot
avoid allocating memory, which might not be available immediately.
You can't assume a table reload will succeed and must always have a
fallback plan in case it fails.
Alasdair
--
agk at redhat.com
More information about the dm-devel
mailing list