b397c875ae
(there are still some details to work out) but expect that to go away soon. To support these basic changes (creation of lfs_putpages, lfs_gop_write, mods to lfs_balloc) several other changes were made, to wit: * Create a writer daemon kernel thread whose purpose is to handle page writes for the pagedaemon, but which also takes over some of the functions of lfs_check(). This thread is started the first time an LFS is mounted. * Add a "flags" parameter to GOP_SIZE. Current values are GOP_SIZE_READ, meaning that the call should return the size of the in-core version of the file, and GOP_SIZE_WRITE, meaning that it should return the on-disk size. One of GOP_SIZE_READ or GOP_SIZE_WRITE must be specified. * Instead of using malloc(...M_WAITOK) for everything, reserve enough resources to get by and use malloc(...M_NOWAIT), using the reserves if necessary. Use the pool subsystem for structures small enough that this is feasible. This also obsoletes LFS_THROTTLE. And a few that are not strictly necessary: * Moves the LFS inode extensions off onto a separately allocated structure; getting closer to LFS as an LKM. "Welcome to 1.6O." * Unified GOP_ALLOC between FFS and LFS. * Update LFS copyright headers to correct values. * Actually cast to unsigned in lfs_shellsort, like the comment says. * Keep track of which segments were empty before the previous checkpoint; any segments that pass two checkpoints both dirty and empty can be summarily cleaned. Do this. Right now lfs_segclean still works, but this should be turned into an effectless compatibility syscall. |
||
---|---|---|
.. | ||
Makefile | ||
uvm_amap_i.h | ||
uvm_amap.c | ||
uvm_amap.h | ||
uvm_anon.c | ||
uvm_anon.h | ||
uvm_aobj.c | ||
uvm_aobj.h | ||
uvm_bio.c | ||
uvm_ddb.h | ||
uvm_device.c | ||
uvm_device.h | ||
uvm_extern.h | ||
uvm_fault_i.h | ||
uvm_fault.c | ||
uvm_fault.h | ||
uvm_glue.c | ||
uvm_glue.h | ||
uvm_init.c | ||
uvm_io.c | ||
uvm_km.c | ||
uvm_km.h | ||
uvm_loan.c | ||
uvm_loan.h | ||
uvm_map_i.h | ||
uvm_map.c | ||
uvm_map.h | ||
uvm_meter.c | ||
uvm_mmap.c | ||
uvm_object.h | ||
uvm_page_i.h | ||
uvm_page.c | ||
uvm_page.h | ||
uvm_pager_i.h | ||
uvm_pager.c | ||
uvm_pager.h | ||
uvm_param.h | ||
uvm_pdaemon.c | ||
uvm_pdaemon.h | ||
uvm_pglist.c | ||
uvm_pglist.h | ||
uvm_pmap.h | ||
uvm_prot.h | ||
uvm_stat.c | ||
uvm_stat.h | ||
uvm_swap.c | ||
uvm_swap.h | ||
uvm_unix.c | ||
uvm_user.c | ||
uvm_vnode.c | ||
uvm.h |