From owner-freebsd-hackers Tue Aug 21 2:14:31 2001 Delivered-To: freebsd-hackers@freebsd.org Received: from synology.com (dns1.synology.com [202.173.37.131]) by hub.freebsd.org (Postfix) with ESMTP id 878B737B406 for ; Tue, 21 Aug 2001 02:14:28 -0700 (PDT) (envelope-from rexluo@synology.com) Received: from synology.com (IDENT:nobody@localhost [127.0.0.1]) by synology.com (8.9.3/8.9.3) with SMTP id RAA02022 for hackers@FreeBSD.ORG; Tue, 21 Aug 2001 17:14:51 +0800 Date: Tue, 21 Aug 2001 17:14:51 +0800 Message-Id: <200108210914.RAA02022@synology.com> To: hackers@FreeBSD.ORG Subject: unpaired splbio() and splx() in vfs_unmountall() From: Rex Luo X-Mailer: TWIG Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG 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