Thread (11 messages) 11 messages, 4 authors, 2010-08-24

RE: A policy frame work for mdadm (incorporating domains and hotplug and such)

From: Labun, Marcin <hidden>
Date: 2010-07-06 14:03:07

-----Original Message-----
From: Neil Brown [mailto:neilb@suse.de]
Sent: Thursday, July 01, 2010 8:50 AM
To: Williams, Dan J; Doug Ledford
Cc: Labun, Marcin; Czarnowska, Anna; Hawrylewicz Czarnowski,
Przemyslaw; Ciechanowski, Ed; Healey, Douglas D; Neubauer, Wojciech;
linux-raid@vger.kernel.org
Subject: A policy frame work for mdadm (incorporating domains and
hotplug and such)
[cut]

 Point 2 is that policy revolves primarily around devices (rather than
 arrays) and to a lesser extent around metadata types.
 It is devices that are migrated, devices that arrays are built from,
devices
 that are automatically made into spares etc.
 Metadata types often encode some specific policy in the metadata, so
they
 need some fairly strong role in the policy framework too.  Often the
 metadata type is like a parameter to a policy.  "You can incorporate
this
 device in any imsm array".

 So Abstraction 1 is a "Policy statement".

 A policy statement applies to a particular device, possibly in the
context
 of a particular metadata, and asserts that a particular name has a
 particular value.
     action=spare (ddf1)
 might be a policy statement about a device.  It says that where ddf1
 metadata is involved, the device can be made a hot-spare when it is
 hot-plugged.
     auto=homehost (0.90)
 might be another which says that auto-assembly may use a non-
disambiguated
 name (no trailing _NN) when assembling this device into a
metadata=0.90
 array providing the homehost information in the metadata matches this
host.

 A statement might not have any metadata type associated.
     action=ignore
 applies irrespective of metadata type.

 The policy names that I currently envisage are:

   action=  ignore, include, spare, force-spare

     which covers the hotplug actions that --incremental might perform.

   auto=  yes, homehost, no

     which covers the functionality currently in the AUTO mdadm.conf
line

   domain=  arbitrary-string

     This provides the 'domain' isolation functionality.
     The semantics I have in mind (and the precise details here are
fairly
     important so this cannot be changed lightly) are:
       A device can have a number of domains, possibly from various
sources.
       An array can have a number of domains, from the devices plus
from
       spare-group

      A device may be attached to an array if all of the domains of the
device
      are also domains of the array.  The array may have extra domains.
The
      device may not.

      This requires that if there are overlapping domains, they must
properly
      nest. i.e. the intersection of two domains must be empty, or one
of the
      domains.  It might make sense to have a domain 'global' which all
      devices have, and some other domains which just subsets have.
What is the usage of domain name? 
I understand that each policy line can have a domain token.
In this case each device that matches "match" keyword gains another domain. 
But how it can use it?

If each policy line has its own domain, so we have explicit relation 
one-to-one between POLICY line and domain name.
Can different POLICY line share the same domain name?

Another questions is domain intersection. 
It seems to me that the plan is test if "matching" keyword intersect. 
In case domain would have non-empty intersection if the path globs overlap? 
What else? Type (disk, partition) Metadata name?


Matching multiple policy lines that define conflicting policy names assignment is invalid configuration, right?
(for instance one policy defines action=ignore and the other include and disk matches both POLICY line)
How to deal with it? 




Thanks,
Marcin Labun


Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help