freebsd-skq/sys/fs
Jeff Roberson a808177864 Add a deferred free mechanism for freeing swap space that does not require
an exclusive object lock.

Previously swap space was freed on a best effort basis when a page that
had valid swap was dirtied, thus invalidating the swap copy.  This may be
done inconsistently and requires the object lock which is not always
convenient.

Instead, track when swap space is present.  The first dirty is responsible
for deleting space or setting PGA_SWAP_FREE which will trigger background
scans to free the swap space.

Simplify the locking in vm_fault_dirty() now that we can reliably identify
the first dirty.

Discussed with:	alc, kib, markj
Differential Revision:	https://reviews.freebsd.org/D22654
2019-12-15 03:15:06 +00:00
..
autofs vfs: introduce v_irflag and make v_type smaller 2019-12-08 21:30:04 +00:00
cd9660 vfs: introduce v_irflag and make v_type smaller 2019-12-08 21:30:04 +00:00
cuse Free all allocated unit IDs in cuse(3) after the client character 2019-06-25 11:46:01 +00:00
deadfs Switch to use shared vnode locks for text files during image activation. 2019-05-05 11:20:43 +00:00
devfs vfs: introduce v_irflag and make v_type smaller 2019-12-08 21:30:04 +00:00
ext2fs vfs: introduce v_irflag and make v_type smaller 2019-12-08 21:30:04 +00:00
fdescfs vfs: introduce v_irflag and make v_type smaller 2019-12-08 21:30:04 +00:00
fifofs fcntl: fix overflow when setting F_READAHEAD 2019-06-20 23:07:20 +00:00
fuse vfs: introduce v_irflag and make v_type smaller 2019-12-08 21:30:04 +00:00
msdosfs Plug the rest of undef behavior places that were missed in r337456. 2019-10-11 18:37:02 +00:00
nfs Add support for NFSv4.2 to the NFS client and server. 2019-12-12 23:22:55 +00:00
nfsclient Silence some "might not be initialized" warnings for riscv64. 2019-12-13 21:38:08 +00:00
nfsserver Silence some "might not be initialized" warnings for riscv64. 2019-12-13 21:38:08 +00:00
nullfs vfs: introduce v_irflag and make v_type smaller 2019-12-08 21:30:04 +00:00
procfs Define macro VM_MAP_ENTRY_FOREACH for enumerating the entries in a vm_map. 2019-10-08 07:14:21 +00:00
pseudofs vfs: introduce v_irflag and make v_type smaller 2019-12-08 21:30:04 +00:00
smbfs vfs: introduce v_irflag and make v_type smaller 2019-12-08 21:30:04 +00:00
tmpfs Add a deferred free mechanism for freeing swap space that does not require 2019-12-15 03:15:06 +00:00
udf Rework v_object lifecycle for vnodes. 2019-08-29 07:50:25 +00:00
unionfs vfs: introduce v_irflag and make v_type smaller 2019-12-08 21:30:04 +00:00