*BSD News Article 24101


Return to BSD News archive

Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!agate!howland.reston.ans.net!sol.ctr.columbia.edu!news.kei.com!news.byu.edu!cwis.isu.edu!u.cc.utah.edu!cs.weber.edu!terry
From: terry@cs.weber.edu (A Wizard of Earth C)
Newsgroups: comp.os.386bsd.bugs
Subject: Re: Mixing 4k and 8k filesystems
Date: 17 Nov 1993 03:13:17 GMT
Organization: Weber State University, Ogden, UT
Lines: 50
Message-ID: <2cc4sd$6s6@u.cc.utah.edu>
References: <2c7nn4$3g5@cleese.apana.org.au> <35346@ksr.com>
NNTP-Posting-Host: cs.weber.edu

In article <35346@ksr.com> jfw@ksr.com (John F. Woods) writes:
>
>I run NetBSD-current.  I have 8K filesystems on most partitions, but a 4K
>filesystem on /usr/spool/news (which is on the same disk as another 8K
>partition, /usr/src).  All the partitions get regular exercise; I've never
>seen any kind of random filesystem curdling
>
>				except
>
>when running the machine with the motherboard external cache enabled.  It is
>said that some motherboards have faulty cache logic that doesn't do DMA
>watchdogging right, and sure enough, disabling my external cache is correlated
>with seeing no filesystem curdling.  (It's also much less of a performance
>hit than I would have expected.)  You might try this if your problems recur,
>but I haven't seen anyone say that mixing 4K and 8K filesystems doesn't work.

I've seen the "mixing 4k and 8k filesystems doesn't work" more than once,
but it is simply not true; the supposed problem is fragging of the cache
buffer allocation pool so that there aren't any buffers left for 8k
use.

NetBSD does not have this problem because they have unified the VM and
buffer cache (at least on current).

FreeBSD doesn't have this problem because of the way page reclamation is
done (at least on current).

A combination of both approaches would be "a good thing" (tm).


The set of problems that "go away when your external cache is disabled"
is a result of the BINVD instruction not being honored on the external
cache.  This is a side effect of BINVD being used at all.

The use of BINVD is a hack to get around the "non-cacheable" bit not
being set for the page descriptors for the buffers that can be DMA'ed
to without updating the cache (ie: bus mastering DMA by a card).  The
correct soloution is to *remove* the BINVD and *add* the "non-cacheable"
bits as need (per a bounce buffer DMA alloc).

Disabling the cache is an acceptable workaround for now, but it is not
something you want to do (give up hardware performance for software
foibles).


					Terry Lambert
					terry@cs.weber.edu
---
Any opinions in this posting are my own and not those of my present
or previous employers.