On Fri, Nov 28, 2014 at 11:55:07PM -0800, Robert White wrote: > On 11/28/2014 08:59 PM, Zygo Blaxell wrote: > >On Fri, Nov 28, 2014 at 06:05:48PM +0100, Goffredo Baroncelli wrote: > >>On 11/27/2014 05:15 AM, Zygo Blaxell wrote: > >>>This is a weakness of the current udev and asynchronous device hotplug > >>>concept: there is no notion of bus enumeration in progress, so we can be > >>>trying to assemble multi-device storage before we have all the devices > >>>visible. Assembly of aggregate storage (whatever it is--btrfs, md, > >>>lvm2...) has to wait until all known storage buses are fully enumerated > >>>in order to detect if there are duplicates. > >> > >>It is more complex than that. Some devices may appear after the "1st" bus > >>enumeration. > > > >That case is well handled already--a new enumeration will start with the > >second (and all later) hotplug events. > > > >The problem arises when we try to assemble disk arrays before the > >known end of the "1st" (or any) enumeration. There is no way for an > >enumerating agent to tell other agents "this is definitely not the > >complete list of devices yet, other devices may be inserted imminently" > >and defer all the multi-device assembly until the address space of the > >enumering bus is fully covered. > > > MDADM has an "attached" but not "started" state for arrays that > handles this condition during incremental assembly. (see "mdadm > --incremental /dev/whatever"),
> [...very complicated mdadm-architecture-invades-the-filesystem-layer > thing snipped...] I don't see why it can't all be done in user-space more or less the same way LVM does. Scan all the parititions known to be available, build a table of devices with UUIDs matching the target filesystem, check for sufficiency, check for uniqueness, and if the configuration passes all the sanity checks (or we have hints from the user that resolve ambiguity), submit the entire list of devices to the kernel as a BTRFS filesystem. If there are UUID duplicates or missing devices, submit nothing to the kernel at all. initramfs-less multi-disk configurations can calculate all that in advance and generate a rootflags parameter for the kernel command line. It's not necessary to resolve every possible situation in the kernel.
signature.asc
Description: Digital signature