freebsd-skq/sys/fs
mckusick a63a2e809b MFC of 291244, 291380, 291459, 291460, 291671, and 291743:
This MFC includes changes to better manage the vnode freelist
  and to streamline the allocation and freeing of vnodes.

  Note that to maintain the KPI the VI_AGE flag is left defined
  in sys/vnode.h though its use is dropped as described in 291380.
  To maintain KBI the vfs.vlru_alloc_cache_src sysctl variable
  remains though it no longer has any effect as described in 291244.

MFC of 291244:
  Move the comment about resident pages preventing vnode from leaving
  active list, into the header comment for vdrop(), which is the
  function that decides whether to leave the vnode on the list.  Note
  that dirty page write-out in vinactive() is asynchronous.

  Discussed with: alc
  Sponsored by:   The FreeBSD Foundation

  MFC of 291380:
  Remove VI_AGE vnode iflag, it is unused.

  Noted by:       bde
  Sponsored by:   The FreeBSD Foundation

MFC of 291459:
  For performance reasons, it is useful to have a single string used as
  the name of a filesystem when setting it as the first parameter to the
  getnewvnode() function. Most filesystems call getnewvnode from just one
  place so can use a literal string as the first parameter. However, NFS
  calls getnewvnode from two places, so we create a global constant string
  that can be used by the two instances. This change also collapses two
  instances of getnewvnode() in the UFS filesystem to a single call.

  Reviewed by: kib
  Tested by:   Peter Holm

MFC of 291460:
  As the kernel allocates and frees vnodes, it fully initializes them
  on every allocation and fully releases them on every free.  These
  are not trivial costs: it starts by zeroing a large structure then
  initializes a mutex, a lock manager lock, an rw lock, four lists,
  and six pointers. And looking at vfs.vnodes_created, these operations
  are being done millions of times an hour on a busy machine.

  As a performance optimization, this code update uses the uma_init
  and uma_fini routines to do these initializations and cleanups only
  as the vnodes enter and leave the vnode_zone. With this change the
  initializations are only done kern.maxvnodes times at system startup
  and then only rarely again. The frees are done only if the vnode_zone
  shrinks which never happens in practice. For those curious about the
  avoided work, look at the vnode_init() and vnode_fini() functions in
  kern/vfs_subr.c to see the code that has been removed from the main
  vnode allocation/free path.

  Reviewed by: kib
  Tested by:   Peter Holm

MFC of 291671:
  We need to zero out the union of pointers in a freed vnode structure.

  Fix from:  Mateusz Guzik
  Tested by: Jason Unovitch

MFC of 291743:
  We need to zero out the clustering variables in a freed vnode structure.
  For completeness add a VNASSERT that there are no threads waiting on a
  range lock (this was previously checked on every vnode free).

  Reported by; Rick Macklem
  Fix from:    Mateusz Guzik
2015-12-30 00:04:33 +00:00
..
autofs MFC r271927: 2015-03-07 20:00:26 +00:00
cd9660 MFC r277899: 2015-02-02 07:42:03 +00:00
deadfs MFC r273132: 2014-10-22 09:12:20 +00:00
devfs MFC r292621: 2015-12-29 16:11:43 +00:00
ext2fs MFC: r281562 2015-04-30 12:39:24 +00:00
fdescfs Merge r263233 from HEAD to stable/10: 2015-03-19 13:37:36 +00:00
fifofs MFC r288044: 2015-09-27 01:06:45 +00:00
fuse MFC r279536: 2015-05-15 11:03:19 +00:00
msdosfs MFC: r281562 2015-04-30 12:39:24 +00:00
nandfs MFC: r281562 2015-04-30 12:39:24 +00:00
nfs MFC of 291244, 291380, 291459, 291460, 291671, and 291743: 2015-12-30 00:04:33 +00:00
nfsclient MFC of 291244, 291380, 291459, 291460, 291671, and 291743: 2015-12-30 00:04:33 +00:00
nfsserver MFC: r291527 2015-12-14 21:21:43 +00:00
nullfs MFC: r281562 2015-04-30 12:39:24 +00:00
procfs MFC r283924 2015-10-02 14:36:41 +00:00
pseudofs MFC r258088: 2013-12-17 13:10:28 +00:00
smbfs MFC r277953: 2015-02-09 07:45:46 +00:00
tmpfs MFC r284594: 2015-06-26 06:25:14 +00:00
udf MFC r277952: 2015-02-03 08:03:19 +00:00
unionfs MFC r275897: 2015-01-01 10:44:20 +00:00