Date: Mon, 22 Dec 1997 10:40:02 -0800 (PST) From: Cy Schubert - ITSD Open Systems Group <cschuber@uumail.gov.bc.ca> To: freebsd-bugs Subject: Re: kern/5355: Fix for NULLFS problems Message-ID: <199712221840.KAA14709@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/5355; it has been noted by GNATS. From: Cy Schubert - ITSD Open Systems Group <cschuber@uumail.gov.bc.ca> To: Bruce Evans <bde@zeta.org.au> Cc: cschuber@uumail.gov.bc.ca, freebsd-gnats-submit@freebsd.org, cy@passer.osg.gov.bc.ca Subject: Re: kern/5355: Fix for NULLFS problems Date: Mon, 22 Dec 1997 10:35:40 -0800 I'll give your code a try. Would it be a good idea to to have a panic() or a printf() where I return a FALSE? I'm torn between providing better diagnostic messages and reducing kernel bloat. By doing a printf() or panic() any author of a filesystem would know that he would need to do some work on his code. Regards, Phone: (250)387-8437 Cy Schubert Fax: (250)387-5766 UNIX Support OV/VM: BCSC02(CSCHUBER) ITSD BITNET: CSCHUBER@BCSC02.BITNET Government of BC Internet: cschuber@uumail.gov.bc.ca Cy.Schubert@gems8.gov.bc.ca "Quit spooling around, JES do it." > >>Fix: > >cwsys# cat /opt/archives-3/usermods/nullfs_panic_fix.usermod > >--- src/sys/vm/vnode_pager.c.orig2 Sun Dec 7 13:11:03 1997 > >+++ src/sys/vm/vnode_pager.c Fri Dec 19 06:30:27 1997 > >@@ -231,10 +231,12 @@ > > blocksperpage = 0; > > if (pagesperblock > 0) { > > reqblock = pindex / pagesperblock; > >- } else { > >+ } else if (bsize > 0) { > > blocksperpage = (PAGE_SIZE / bsize); > > reqblock = pindex * blocksperpage; > >- } > >+ } else > >+ return FALSE; > >+ > > I think bsize is supposed to be > 0 here. Lots of other places depend > on vp->v_mount->mnt_stat.f_iosize being reasonable. nullfs and some > other file systems (portal and umapfs at least) just don't initialize > most of mnt_stat (except by bzeroing it). This untested fix for nullfs > was obtained from union[fs]. > > diff -c2 null_vfsops.c~ null_vfsops.c > *** null_vfsops.c~ Mon Oct 13 21:46:00 1997 > --- null_vfsops.c Mon Dec 22 04:32:11 1997 > *************** > *** 199,202 **** > --- 199,203 ---- > &size); > bzero(mp->mnt_stat.f_mntfromname + size, MNAMELEN - size); > + (void)nullfs_statfs(mp, &mp->mnt_stat, p); > #ifdef NULLFS_DIAGNOSTIC > printf("nullfs_mount: lower %s, alias at %s\n", > > Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199712221840.KAA14709>