On 11/3/13, 1:38 PM, Goffredo Baroncelli wrote: > Hi all, > > this patch provides a mount.btrfs helper for the mount command to > mounting a btrfs filesystem. > A btrfs filesystem could spans several disks. This helper scans all > the partition to discover all the disks required to mount a filesystem. > So it is not necessary any-more to "scan" manually the partitions to mount > a filesystem via the "btrfs device scan" command. > > It adds in the option parameters the devices required to mount a > filesystem. Supposing that a filesystem is composed by several disks > (/dev/sd[cdef]), when the user does "mount /dev/sdd /mnt", mount calls > mount.btrfs which int turn calls the mount(2) syscall like: > mount("/dev/sdd", "/mnt", "btrfs", 0, > "device=/dev/sdc,device=/dev/sde,device=/de/vsdf"). > > This helper uses both the libblkid and libmount to discover the > devices, to compute the parameters manipulation and to update the mtab > file. > > I got the idea from the btrfs.wiki; its biggest gains is to avoid the > separation of scanning phases (at boot time or during the block device > discovery) from the mounting. Also mkfs.btrfs could avoid to re-do a > rescan of the devices after a formatting. > > mount.btrfs doesn't add more requirement than the mount command. It > would be possible to remove the "btrfs" command from the initramfs, and > all the related scripts (in my debian both udev and btrfs-tools > packages contains three udev rules for btrfs). > > Comments are welcome. I like the idea but I'm concerned how well this will perform on large systems with thousands of disks attached. btrfs dev scan can have a list of potential devices specified, but this helper defaults to all devices. A quick test run with 2000 scsi_debug targets shows that btrfs dev scan can take 8 seconds, and that's with no actual I/O occurring. I don't think we want to specify the list of devices to scan on the mount command line, but perhaps an /etc config file that limits the scan to a list of devices (and defaults to all) similar to how mdadm.conf works would be a good improvement. -Jeff -- Jeff Mahoney SUSE Labs