Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Aug 2001 17:14:51 +0800
From:      Rex Luo <rexluo@synology.com>
To:        hackers@FreeBSD.ORG
Subject:   unpaired splbio() and splx() in vfs_unmountall()
Message-ID:  <200108210914.RAA02022@synology.com>

next in thread | raw e-mail | index | archive | help
Dear,

   I modifid kernel to write to disk directly after unmount all mounted 
filesystem in boot() kern/kern_shutdown.c. However, I found that my IO requests
wouldn't have callback from device interrupt routine. I traced the codes and use
gdb to find something out. The interesting is after execute 

     vfs_unmountall() -> dounmount() -> ffs_unmount() -> ffs_flushfiles() ->
     vflush()-> ??? the interrupt mask is set by splbio() without splx(), 
     therefore, all my following requests cannot return.

Notice that, the situation only happens after heavy IO, for example: cp 30 files
at the same time.

   I use spl0() to solve the prolbem, but I think it's not the right way to do 
that. Can anyone provide some clues or suggestions.

Thanks

--
Rex Luo

Tel : 886-2-25521814 Ext. 824
Fax : 886-2-25521824
e-mail : rexluo@synology.com



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200108210914.RAA02022>