On Jul 23, 2009, at 09:31, Thomas Backman wrote: > On Jul 18, 2009, at 19:27, McLone wrote: > >> Hell Low. >> >> As downloading torrent files from many peers to ZFS >> imposes fragmentation (and there's no way to defragment >> ZFS volume - what a pity! How come now-a-days FS can >> go like this?), i created zvol with UFS2 on it last time >> i wanted to watch some old sci-fi. I had plans to >> move sci-fi from UFS2/zvol to ZFS when it'll be complete, >> but forgot it, and rebooted machine. After reboot >> rtorrent said sci-fi is marked as complete, but it >> can not find files. I wasn't surprised, as i haven't modified >> my /etc/fstab, so i entered "mount /dev/zvol" and pressed >> Tab in hope of tcsh (eek) autocomplete. >> It just beeped on me. >> I've done "ls /dev" and there was no directory there named zvol. >> Then i've done "zfs list" and my zvol was there. >> Puzzled, i've done "zfs snapshot" and then a little dance of >> "zfs send | zfs recv" to a new volume. Now dev entries appeared >> (both for newly created snapshot of an old zvol and for new zvol). >> I rebooted, and there was no /dev/zvol again. >> >> I looked at my uname -v output (it was HEAD/amd64 from Jul 1) >> and decided to update. Updating didn't solved this problem. >> >> Strangely, simple "zfs rename zpool/zvol zpool/newzvol" >> cures this woe, but i think this is a bug. >> >> Steps to reproduce: >> zfs create -V 1g zpool/zvol >> [newfs /dev/zvol/zpool/zvol] >> reboot >> ls /dev >> >> Workaround: >> zfs rename zpool/zvol zpool/newzvol >> mount /dev/zvol/zpool/zvol /mnt > OK, I've found the problem we have here... Or, rather, I've found > the *reason* (and this shows why I previously said I couldn't > reproduce). I haven't found it in source, though. > > UFS filesystems in fstab are mounted *before* the /dev/zvol > directory is populated, at least on my system! > If I remove the entry from fstab, everything boots fine, and the > directory exists when the boot is complete. If its IN fstab, init > gives me a root prompt because it couldn't find /dev/zvol/x/y. > Remove it, and again it works on the next boot. > And, as you said, renaming it while in single user creates /dev/zvol > and thus resolves the issue for that boot and allows me to boot into > multiuser with the ZVOL working. > > Anyone with a clue in these areas know if there's an easy fix to > this (i.e. easy enough that we could have it in 8.0)? I'm guessing / > etc/rc.d/zfs simply starts too late in the boot process? > > Regards, > Thomas So, my solution: Edit /etc/rc.d/zfs, and replace "#REQUIRE: mountcritlocal" with "#BEFORE: mountcritlocal". / is mounted before any of these runs anyway, right? And / contains / sbin/zfs and everything it needs: # ldd /sbin/zfs /sbin/zfs: libzfs.so.2 => /lib/libzfs.so.2 (0x800656000) libgeom.so.5 => /lib/libgeom.so.5 (0x80078a000) libbsdxml.so.4 => /lib/libbsdxml.so.4 (0x80088f000) libsbuf.so.5 => /lib/libsbuf.so.5 (0x8009b2000) libm.so.5 => /lib/libm.so.5 (0x800ab4000) libnvpair.so.2 => /lib/libnvpair.so.2 (0x800bd3000) libuutil.so.2 => /lib/libuutil.so.2 (0x800cdc000) libutil.so.8 => /lib/libutil.so.8 (0x800de5000) libc.so.7 => /lib/libc.so.7 (0x800ef5000) Works for me(tm) (with MBR, ZFS root and UFS /boot), the ZVOL mounts just fine and I get no errors during boot. Another way would probably (haven't tested) to run "zfs volinit" in mountcritlocal, but then I suppose there'd have to be a check for zfs_enable="YES" in there too. Regards, ThomasReceived on Thu Jul 23 2009 - 06:12:09 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:52 UTC