Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10 beta 3/9/83; site uthub.UUCP Path: utzoo!utcsri!utai!uthub!thomson From: thomson@uthub.UUCP (Brian Thomson) Newsgroups: net.unix-wizards Subject: Re: A problem with kernel buffers (struct buf). Message-ID: <224@uthub.UUCP> Date: Wed, 28-Aug-85 21:59:17 EDT Article-I.D.: uthub.224 Posted: Wed Aug 28 21:59:17 1985 Date-Received: Thu, 29-Aug-85 01:08:02 EDT References: <318@ucsbcsl.UUCP> Organization: CSRG, University of Toronto Lines: 20 The file /sys/h/param.h defines the parameter MAXBSIZE, with the comment MAXBSIZE primarily determines the size of buffers in the buffer pool. Your system, like most, probably has MAXBSIZE set to 8192. Although geteblk(n) doesn't check to see if you've exceeded that limit, it is an error to do so. This happens because the system allocates MAXBSIZE bytes of system virtual space per buffer at startup, then slaps in as many real pages per buffer as you need when you need them. By asking for a 10k buffer, you slop over into the virtual space reserved for the next buffer, and those extra pages may be freed when that next buffer shrinks. The symptom would be a protection trap panic accessing an address more than 8k from the start of the buffer (bp->b_un.b_addr). -- Brian Thomson, CSRI Univ. of Toronto {linus,ihnp4,uw-beaver,floyd,utzoo}!utcsrgv!uthub!thomson