Serious performance issues, broken initialization, and a likely fix

Maxim Sobolev sobomax at
Sun Aug 14 13:30:08 GMT 2005

Ade Lovett wrote:
> Ade Lovett wrote:
>>To cut a long story short, the order in which nswbuf is being
>>initialized is completely, totally, and utterly wrong -- this was
>>introduced by revision 1.132 of vm/vnode_pager.c just over 4 years ago.
> This is now logged as kern/84903 and, as the PR states, IMO 6.0 should
> *NOT* be released until a resolution is found to this problem.
> The current misinitialization of nswbuf will affect *any* system where
> there are even a reasonable number of attempted concurrent disk reads.
> I'm certainly willing to work with someone to get a definitive patch
> made, however we do *not* run HEAD here, only RELENG_6, so that will
> have to be taken into consideration.

I think kan has already committed a fix for that problem into HEAD.


kan         2005-08-13 20:21:34 UTC

   FreeBSD src repository

   Modified files:
     sys/kern             vfs_cluster.c
     sys/sys              buf.h
     sys/vm               vm_pager.c vnode_pager.c
   Do not use vm_pager_init() to initialize vnode_pbuf_freecnt variable.
   vm_pager_init() is run before required nswbuf variable has been set
   to correct value. This caused system to run with single pbuf available
   for vnode_pager. Handle both cluster_pbuf_freecnt and vnode_pbuf_freecnt
   variable in the same way.

   Reported by:    ade
   Obtained from:  alc
   MFC after:      2 days

   Revision  Changes    Path
   1.167     +0 -6      src/sys/kern/vfs_cluster.c
   1.188     +2 -0      src/sys/sys/buf.h
   1.106     +1 -0      src/sys/vm/vm_pager.c
   1.223     +0 -9      src/sys/vm/vnode_pager.c

More information about the freebsd-current mailing list