The "unmount of /dev failed (BUSY)" message, explained

Andre Guibert de Bruet andy at siliconlandmark.com
Sat May 7 23:54:25 PDT 2005


Folks,

In a show of way too much free time, I set off on a quest to figure out 
what was up with the "unmount of /dev failed (BUSY)" message that is seen 
on reboot. I am pleased to announce that I found what I believe to be the 
reason behind the message:

vfs_unmountall: Processing /dev/amrd1a:
vfs_unmountall: Processing /dev/amrd0s1d:
vfs_unmountall: Processing /dev/amrd0s1f:
vfs_unmountall: Processing /dev/amrd0s1e:
vfs_unmountall: Processing devfs:
0xc53efcc0: tag devfs, type VCHR
     usecount 1, writecount 0, refcount 22 mountedhere 0xc53d4c00
     flags ()
     v_object 0xc10608c4 ref 0 pages 72

         dev amrd0s1a
0xc5442550: tag devfs, type VCHR
     usecount 1, writecount 0, refcount 1 mountedhere 0xc53d4b00
     flags ()

         dev amrd0s1b
unmount of /dev failed (BUSY)
vfs_unmountall: Processing /dev/amrd0s1a:
0xc53efaa0: tag ufs, type VDIR
     usecount 1, writecount 0, refcount 1 mountedhere 0xc5396800
     flags ()

         ino 32896, on dev amrd0s1a
0xc53ef880: tag ufs, type VREG
     usecount 3, writecount 0, refcount 5 mountedhere 0
     flags (VV_TEXT)
     v_object 0xc1060738 ref 2 pages 89

         ino 16527, on dev amrd0s1a
Uptime: 12m8s

The patch that produces this output is available from: 
http://bling.properkernel.com/freebsd/vfs_unmountalldiag.diff

As you can see from the output, the unmount of /dev fails because the 
/dev/amrd0s1a (Which is the root mountpoint on this system) and 
/dev/amrd0s1b (Primary swap) device nodes still exist. The logic that we 
have that uses reverse TAILQ unmounting is flawed because the root 
filesystem is mounted read-only before devfs.

I will be cleaning up my patch a bit before I submit it to be committed. I 
will also be producing a patch that will make vfs_unmountall do the right 
thing.

I haven't found a way to make it vacuum my apartment yet but I will submit 
that functionality to ACME Labs when it's available... ;-)

Andy

PS: If you want to cross-reference the filesystems, the list is here:
http://bling.properkernel.com/freebsd/fstab

/*  Andre Guibert de Bruet  * 6f43 6564 7020 656f 2e74 4220 7469 6a20 */
/*   Code poet / Sysadmin   * 636f 656b 2e79 5320 7379 6461 696d 2e6e */
/*   GSM: +1 734 846 8758   * 5520 494e 2058 6c73 7565 6874 002e 0000 */
/* WWW: siliconlandmark.com *      Tormenting bytes since 1980.       */


More information about the freebsd-current mailing list