perseant b397c875ae Add code to UBCify LFS. This is still behind "#ifdef LFS_UBC" for now
(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.
2003-02-17 23:48:08 +00:00
..
2003-01-04 23:43:02 +00:00
2002-06-05 06:31:21 +00:00
2002-09-18 06:38:50 +00:00
2003-02-09 21:56:19 +00:00
2002-09-30 07:37:09 +00:00
2002-10-04 13:19:05 +00:00
2003-01-05 22:28:41 +00:00
2002-09-28 00:56:25 +00:00
2003-02-14 16:21:47 +00:00
2003-01-06 20:30:28 +00:00
2002-09-21 18:43:31 +00:00
2002-09-21 18:43:31 +00:00
2003-01-06 20:30:28 +00:00
2002-09-21 18:43:31 +00:00
2002-09-21 18:43:31 +00:00
2002-10-01 13:52:49 +00:00
2002-09-21 18:43:31 +00:00
2003-02-14 16:21:47 +00:00
2002-11-16 16:39:55 +00:00
2002-12-19 14:49:03 +00:00
2002-11-16 23:54:16 +00:00
2002-10-08 20:17:06 +00:00
2002-12-06 02:20:43 +00:00
2003-01-31 23:32:21 +00:00
2003-01-19 10:52:25 +00:00