This is an old revision of the document!


Buf cache renovation project

As decided by the junta at BSDcan2008

Stuckee: jeffr

  • Move the regular file data out of the buffercache, let VM system manage it.

(jeffr: add details)

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)

Stuckee: phk, jhb

Strawman for structure:

struct bioseg {
        vm_paddr_t    start;
        size_t        length;
};

struct biosg {
        struct biosg *seg;
        unsigned      nseg;
};

struct bio {
        struct        biosg;
        struct bioseg seg0[NBIOSEG];
};

Note that vm_page_t is inconvenient to get if you don't already have it. Hence we were talking about passing it down if we already had it since it isn't that cheap to recover if a lower level wants it for some reason. If we have it, then it would be worth passing down (think PAE.. vm_page_t is 4 bytes, paddr is 8 bytes). But if we don't universally have it available at all call sites then don't bother. -Peter

Stuckee: jeffr

  • f_offset serialization
  • parallel reads, possibly with one or more writers.

(jeffr: Add details)

  • buf0x.1210884980.txt.gz
  • Last modified: 2008/05/15 20:56
  • by PoulHenningKamp