Re: [bug] ZFS zvol dev entry disappearing upon reboot

From: Thomas Backman <serenity_at_exscape.org>
Date: Thu, 23 Jul 2009 09:31:19 +0200
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
Received on Thu Jul 23 2009 - 05:31:30 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:52 UTC