This is an old revision of the document!
Buf cache renovation project
As decided by the junta at BSDcan2008
Attack 1: VREG data from buf to VM
Stuckee: jeffr
- Move the regular file data out of the buffercache, let VM system manage it.
(jeffr: add details)
Attack 2: Syncer to per-{bufobj,mount} threads
Stuckee: ? (phk ?)
- Park a kthread when mounting
- can hold onto mount cred
- can do NFS reconnect
- Responsible for policy of synching for this filesystem instance
- Makes it possible to avoid the “sync entire filesystem” for fs that do not need it.
- Generally only responsible for synching metadata (VM above does data)
Technically, the thread is associated with the bufobj but in practice that is the mountpoint (Relevant for gibbs@'s case)
Attack 3: Unmapped S/G bio
Stuckee: phk, jhb
Strawman for structure:
struct bioseg {
vmpage_t page;
unsigned offset;
size_t length;
};
struct biosg {
struct biosg *seg;
unsigned nseg;
};
struct bio {
struct biosg;
struct bioseg seg0[NBIOSEG];
};
Attack 4: read/write parallelism
Stuckee: jeffr
- f_offset serialization
- parallel reads, possibly with one or more writers.
(jeffr: Add details)