Date: Tue, 19 Oct 2010 14:21:41 -0700 From: Xin LI <delphij@delphij.net> To: Marcel Moolenaar <xcllnt@mac.com> Cc: "Andrey V. Elsukov" <bu7cher@yandex.ru>, FreeBSD Current <freebsd-current@FreeBSD.ORG> Subject: Re: [zfs] Mounting from (...) failed with error 19 Message-ID: <4CBE0BE5.2060708@delphij.net> In-Reply-To: <44B33168-C432-4AA0-A765-8222DB4C048D@mac.com> References: <4CBCDD3A.9070404@delphij.net> <4CBD26B4.2020205@yandex.ru> <4CBDB17C.4040607@yandex.ru> <44B33168-C432-4AA0-A765-8222DB4C048D@mac.com>
next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format. --------------090607000805030906040809 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On 10/19/10 08:49, Marcel Moolenaar wrote: > > On Oct 19, 2010, at 7:55 AM, Andrey V. Elsukov wrote: > >> On 19.10.2010 09:03, Andrey V. Elsukov wrote: >>>> Mounting from (...) failed with error 19 >>>> >>>> On boot. The system is using pure ZFS setup. It seems that 19 means >>>> ENODEV but according to the dmesg the device do exist. >>> >>> Yes, i have the same problem. >> >> I fixed it with attached patch. > > Makes sense. "tank" (or its namesake) isn't a real device. > Feel free to commit to unbreak things, but we may want to > rethink this from a generality point of view. Listing > exceptions doesn't scale and we now have 2 (the first was > the empty device name as used by nfs, and now also zfs). > > Good catch, BTW. Yes good catch, it fixed the problem for me as well. What about the attached patch? I'm going to give it a swirl soon. The difference is that it tests whether dev begins with /dev/. Note that I'm not quite convinced with this yet as we may want to wait for the devices from a zpool be ready, which may also need some yielding during boot. A better way of solving this might be to register a "watchlist" of devices (so that ZFS can register its vdev devices for example) and have mountroot wait for that list? Or perhaps a set of EVENTHANDLER callback? Cheers, - -- Xin LI <delphij@delphij.net> http://www.delphij.net/ FreeBSD - The Power to Serve! Live free or die -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.16 (FreeBSD) iQEcBAEBCAAGBQJMvgvkAAoJEATO+BI/yjfBX/gIAIRnS4eQVBe/Zh6RrT8BjI91 J1r7wNz1AYXda2t4/RUVnPZYr97GG1quEewtgcxTxW2nkii1ZkftjMg6Ik4Gio6Y AxNdjEB35tXqhVUV1oS8JS09ejZij2Y43SHxWxOkhUnFEmuhjK4+euM/+obpJ4Kl AR61E/DYqwv/8bqhofknylroDsveN3Vhd1n7dK4s+e3YcmANnZxTCWcxroD7C2yb gCH6TDZPDVKVbfyS73QFoyic2Jml5eK/dkmlLMRubP5qs5aIgy0P1zcjhvRrrgOf bYLM3IUEbVhPSQnO8d2sDhXytgCI/s6p39rMdKPR3jrf2+UnW6IM46NvVkSaOP8= =cAxC -----END PGP SIGNATURE----- --------------090607000805030906040809 Content-Type: text/plain; name="vfs_mountroot.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="vfs_mountroot.diff" Index: sys/kern/vfs_mountroot.c =================================================================== --- sys/kern/vfs_mountroot.c (revision 214082) +++ sys/kern/vfs_mountroot.c (working copy) @@ -713,8 +713,7 @@ parse_mount(char **conf) goto out; } - if (strcmp(fs, "zfs") != 0 && dev[0] != '\0' && - !parse_mount_dev_present(dev)) { + if ((strstr(dev, "/dev/") == dev) && !parse_mount_dev_present(dev)) { printf("mountroot: waiting for device %s ...\n", dev); delay = hz / 10; timeout = root_mount_timeout * hz; --------------090607000805030906040809--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4CBE0BE5.2060708>