Date: Sun, 21 Feb 1999 23:42:10 -0500 (EST) From: Luoqi Chen <luoqi@watermarkgroup.com> To: mjacob@feral.com Cc: dfr@nlsystems.com, freebsd-hackers@FreeBSD.ORG Subject: Re: Panic in FFS/4.0 as of yesterday - update Message-ID: <199902220442.XAA14152@lor.watermarkgroup.com>
next in thread | raw e-mail | index | archive | help
> > What troubled me here is why these supposedly async writes block (and ccd > > is not involved)? I'd really like to see a dump of ps listing from ddb. > The async writes blocked on "nfsrcvlk". It looked like the test program writeit was trying to clean some dirty nfs bufs. This situation shouldn't be fatal as it is impossible to avoid blocking during async writes, getnewbuf should simply return a NULL. The following patch should do the trick. -lq Index: vfs_bio.c =================================================================== RCS file: /home/ncvs/src/sys/kern/vfs_bio.c,v retrieving revision 1.199 diff -u -r1.199 vfs_bio.c --- vfs_bio.c 1999/01/27 21:49:58 1.199 +++ vfs_bio.c 1999/02/22 04:19:06 @@ -993,6 +993,7 @@ bp->b_qindex); #endif } +waitforany: if (!bp) { /* wait for a free buffer of any kind */ needsbuffer |= VFS_BIO_NEED_ANY; @@ -1069,8 +1070,10 @@ bp = TAILQ_NEXT(bp, b_freelist); } } - if (bp == NULL) - panic("getnewbuf: cannot get buffer, infinite recursion failure"); + if (bp == NULL) { + printf("getnewbuf: cannot get buffer, infinite recursion failure\n"); + goto waitforany; + } } else { bremfree(bp); bp->b_flags |= B_BUSY | B_AGE | B_ASYNC; 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?199902220442.XAA14152>