[bug] ZFS zvol dev entry disappearing upon reboot
serenity at exscape.org
Thu Jul 23 07:31:30 UTC 2009
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]
> ls /dev
> 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?
More information about the freebsd-current