zfs problems after rebuilding system [SOLVED]
Eugene Grosbein
eugen at grosbein.net
Sat Mar 3 14:26:57 UTC 2018
03.03.2018 19:56, Bruce Evans wrote:
> On Sat, 3 Mar 2018, tech-lists wrote:
>
>> On 03/03/2018 00:23, Dimitry Andric wrote:
>>> Indeed. I have had the following for a few years now, due to USB drives
>>> with ZFS pools:
>>>
>>> --- /usr/src/etc/rc.d/zfs 2016-11-08 10:21:29.820131000 +0100
>>> +++ /etc/rc.d/zfs 2016-11-08 12:49:52.971161000 +0100
>>> @@ -25,6 +25,8 @@
>>>
>>> zfs_start_main()
>>> {
>>> + echo "Sleeping for 10 seconds to let USB devices settle..."
>>> + sleep 10
>>> zfs mount -va
>>> zfs share -a
>>> if [ ! -r /etc/zfs/exports ]; then
>>>
>>> For some reason, USB3 (xhci) controllers can take a very, very long time
>>> to correctly attach mass storage devices: I usually see many timeouts
>>> before they finally get detected. After that, the devices always work
>>> just fine, though.
>
> I have one that works for an old USB hard drive but never works for a not
> so old USB flash drive and a new SSD in a USB dock (just to check the SSD
> speed when handicapped by USB). Win7 has no problems with the xhci and
> USB flash drive combination, and FreeBSD has no problems with the drive
> on other systems.
>
>>> Whether this is due to some sort of BIOS handover trouble, or due to
>>> cheap and/or crappy USB-to-SATA bridges (even with brand WD and Seagate
>>> disks!), I have no idea. I attempted to debug it at some point, but
>>> a well-placed "sleep 10" was an acceptable workaround... :)
>>
>> That fixed it, thank you again :D
>
> That won't work for the boot drive.
>
> When no boot drive is detected early enough, the kernel goes to the
> mountroot prompt. That seems to hold a Giant lock which inhibits
> further progress being made. Sometimes progress can be made by trying
> to mount unmountable partitions on other drives, but this usually goes
> too fast, especially if the USB drive often times out.
In fact, we have enough loader.conf quirks for that:
kern.cam.boot_delay "Bus registration wait time" # miliseconds
vfs.mountroot.timeout "Wait for root mount" # seconds
vfs.root_mount_always_wait "Wait for root mount holds even if the root device already exists" # boolean
No need in extra hacks to zfs rc.d script.
More information about the freebsd-fs
mailing list