This implements the incore function - which finds and locks a buffer if
it exists, but does not read anything from disk. This helps XFS in the
logbound case a lot - failing to find the buffer was causing a lot of
cpu spinning which was not getting us any forward progress.
It also takes the delayed write queue of pagebufs and makes flushing from
it a time based operation, we now keep pagebufs around a lot longer.
Date: Wed Jul 19 19:47:46 PDT 2000
Workarea: 192.82.201.211:/usr/src/lord/2.4.0-test1
The following file(s) were checked into:
bonnie.engr.sgi.com:/isms/slinx/2.4.0-test1-xfs
Modid: 2.4.0-test1-xfs:slinx:67181a
linux/fs/xfs/xfs_buf.h - 1.54
- Fix xfs_incore interface, we need to map from blocks to offsets.
linux/include/linux/page_buf.h - 1.53
- Remove some unused fields from the pagebuf, and add a flushtime field.
linux/fs/pagebuf/page_buf.c - 1.13
- Implement pagebuf_find, it looks for existing pagebufs and returns
them locked. Also change flush mechanism for delwri pagebufs to be
time
based, we now allow a pagebuf to stay dirty for 15 seconds since it
was last dirtied. This is a fairly arbitrary number, we also need to
factor in the amount of memory this is chewing up at some point.
linux/fs/pagebuf/page_buf_locking.c - 1.4
- Break get_lockable_pagebuf into two so that we can use the find part
of
it for pagebuf_find().
|