refill_freelist futility

Bill Hawes (whawes@star.net)
Thu, 03 Jul 1997 15:18:40 -0400


In the discussion of the changes to refill_freelist, one factor that has
been overlooked is that there are a number of places where the code will
block, allowing other tasks to steal away the buffers freed up by the
task running refill_freelist. This is especially true of the blocking
call to wakeup bdflush. Thus even when the refill_freelist finally gets
the needed amount of memory, little of it may be available after
returning.

Since the "needed" amount is more-or-less arbitrary, wouldn't it be
better to return if _some_ buffers have been freed? That is, wake up
bdflush if there are dirty buffers, but return to the caller instead of
waiting.