From owner-freebsd-hackers Tue Aug 21 19:52: 9 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 3A73537B40D for ; Tue, 21 Aug 2001 19:51:57 -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 KAA07814; Wed, 22 Aug 2001 10:52:40 +0800 Date: Wed, 22 Aug 2001 10:52:40 +0800 Message-Id: <200108220252.KAA07814@synology.com> To: Alfred Perlstein , Rex Luo Subject: Re: unpaired splbio() and splx() in vfs_unmountall() From: Rex Luo X-Mailer: TWIG Cc: hackers@FreeBSD.ORG 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 Alfred, I have tried to add several asserts to verify its interrupt mask, however, the abnormal behaviour disappered if I did that. That's really rediculous and I don't know why? I would continue to find out what's the reason, and feedback if something new. Anyway, I really appreciate your help and kindness. Further question, what kind of books, or news, information I can get to study about pc's interrupt handling and architecture. Thanks, -- Rex Luo Alfred Perlstein said: > * Rex Luo [010821 04:14] wrote: > > 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. > > That makes no sense. All you need to do is find the where the splbio() > is that doesn't have a corresponding splx(). You can use the SPLASSERT > functions to do that. > > -- > -Alfred Perlstein [alfred@freebsd.org] > Ok, who wrote this damn function called '??'? > And why do my programs keep crashing in it? > -- 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