freebsd-skq/sys
das 2beb616ced Close a race in swapoff(). Here are the gory details:
In order to avoid livelock, swapoff() skips over objects with a
  nonzero pip count and makes another pass if necessary.  Since it is
  impossible to know which objects we care about, it would choose an
  arbitrary object with a nonzero pip count and wait for it before
  making another pass, the theory being that this object would finish
  paging about as quickly as the ones we care about.  Unfortunately,
  we may have slept since we acquired a reference to this object.
  Hack around this problem by tsleep()ing on the pointer anyway, but
  timeout after a fixed interval.  More elegant solutions are possible,
  but the ones I considered unnecessarily complicate this rare case.

Also, kill some nits that seem to have crept into the swapoff() code
in the last 75 revisions or so:

- Don't pass both sp and sp->sw_used to swap_pager_swapoff(), since
  the latter can be derived from the former.

- Replace swp_pager_find_dev() with something simpler.  There's no
  need to iterate over the entire list of swap devices just to determine
  if a given block is assigned to the one we're interested in.

- Expand the scope of the swhash_mtx in a couple of places so that it
  isn't released and reacquired once for every hash bucket.

- Don't drop the swhash_mtx while holding a reference to an object.
  We need to lock the object first.  Unfortunately, doing so would
  violate the established lock order, so use VM_OBJECT_TRYLOCK() and
  try again on a subsequent pass if the object is already locked.

- Refactor swp_pager_force_pagein() and swap_pager_swapoff() a bit.
2004-11-05 05:36:56 +00:00
..
alpha Reduce annoying SCSI probing delay from 15 to 5 seconds in all GENRIC kernels. 2004-11-02 20:57:20 +00:00
amd64 Don't use atomic ops to increment interrupt stats. This was only done on 2004-11-03 18:03:06 +00:00
arm Protect the function declarations with #ifdef _KERNEL. 2004-11-04 19:20:54 +00:00
boot Add a loader menu option to set hint.atkbd.0.flags=0x1 which allows USB 2004-10-30 13:45:13 +00:00
cam Remove references to the second byte of a CCB containing the LUN, as this 2004-10-13 09:31:04 +00:00
coda Do not use devsw() but si_devsw direction. This is still bogus but a 2004-09-23 12:19:24 +00:00
compat Rebuild from FreeBSD32 syscalls.master:1.42. 2004-10-23 20:05:42 +00:00
conf Reduce annoying SCSI probing delay from 15 to 5 seconds in all GENRIC kernels. 2004-11-02 20:57:20 +00:00
contrib Improved interface handling. This should fix the use of renamed interfaces 2004-11-03 17:21:12 +00:00
crypto For variables that are only checked with defined(), don't provide 2004-10-24 15:33:08 +00:00
ddb - Change the ddb paging "support" to use a variable (db_lines_per_page) to 2004-11-01 22:15:15 +00:00
dev Remove unused vinum files. 2004-11-04 09:57:21 +00:00
doc Experimental support for using doxygen to generate kernel documentation. 2004-07-11 16:13:57 +00:00
fs Add back securelevel check for disks. 2004-11-04 09:17:55 +00:00
gdb Comment-out the debugging printf I left in in case there were some 2004-08-10 19:32:33 +00:00
geom Finish cut&paste adjustments. 2004-11-04 07:17:08 +00:00
gnu Move EXT2FS to GEOM backing instead of DEVFS. 2004-10-29 10:42:30 +00:00
i4b Mark i4b IPR and SPPP drivers as NET_NEEDS_GIANT(), as they both 2004-10-12 09:25:52 +00:00
i386 Don't use atomic ops to increment interrupt stats. This was only done on 2004-11-03 18:03:06 +00:00
ia64 - Change the ddb paging "support" to use a variable (db_lines_per_page) to 2004-11-01 22:15:15 +00:00
isa Stop printing the VGA registers during verbose boot, in order to not 2004-11-03 09:07:44 +00:00
isofs/cd9660 Move CD9660 to GEOM backing instead of DEVFS. 2004-10-29 10:41:44 +00:00
kern Don't forget to turn off P_SINGLE_BOUNDARY for thread_single(SINGLE_EXIT), 2004-11-04 22:13:16 +00:00
libkern Don't attempt to profile __udivsi3() and friends, as mcount() uses them. 2004-10-01 16:44:08 +00:00
modules Remove another vinum file 2004-11-04 13:32:24 +00:00
net Utilize m_uiotombuf() in device write method, instead of home-grown 2004-10-31 17:39:46 +00:00
net80211 Add a new network interface flag, IFF_NEEDSGIANT, which will allow 2004-07-27 23:20:45 +00:00
netatalk Push acquisition of the accept mutex out of sofree() into the caller 2004-10-18 22:19:43 +00:00
netatm Push acquisition of the accept mutex out of sofree() into the caller 2004-10-18 22:19:43 +00:00
netgraph Partically backout previous commit. Since _callout_stop_safe() clears 2004-11-04 21:30:18 +00:00
netinet Hide udp_in6 behind #ifdef INET6 2004-11-04 07:14:03 +00:00
netinet6 fixed a bug that incorrect IPsec request level may be returned for proto AH 2004-10-28 09:24:45 +00:00
netipsec Remove extraneous SECPOLICY_LOCK_DESTROY calls that cause the mutex to be 2004-10-02 00:19:05 +00:00
netipx Push acquisition of the accept mutex out of sofree() into the caller 2004-10-18 22:19:43 +00:00
netkey Merge netipsec/key.c:1.17 into KAME pfkey implementation: 2004-09-30 00:49:55 +00:00
netnatm Push acquisition of the accept mutex out of sofree() into the caller 2004-10-18 22:19:43 +00:00
netncp Add missing zero flag argument. 2004-10-12 08:22:08 +00:00
netsmb Avoid casts as lvalues. 2004-07-28 06:59:55 +00:00
nfs
nfs4client comment out debug printf. 2004-10-27 23:19:34 +00:00
nfsclient Retire b_magic now, we have the bufobj containing the same hint. 2004-11-04 09:48:18 +00:00
nfsserver Add b_bufobj to struct buf which eventually will eliminate the need for b_vp. 2004-10-22 08:47:20 +00:00
opencrypto Don't acquire Giant in cryptof_close(), as the code is intended to be 2004-08-10 03:26:17 +00:00
pc98 MFi386: revision 1.420 (Reduce annoying SCSI probing delay). 2004-11-04 15:20:26 +00:00
pccard Move PNP IDs back into oldcard files 2004-08-13 06:57:31 +00:00
pci * Correct an off-by-one reading vpd ro data. 2004-11-01 17:21:04 +00:00
posix4
powerpc Reduce annoying SCSI probing delay from 15 to 5 seconds in all GENRIC kernels. 2004-11-02 20:57:20 +00:00
rpc Prefer C99's __func__ over GCC's __FUNCTION__. 2004-09-23 18:25:46 +00:00
security Disable use of synchronization early in the boot by the MAC Framework; 2004-10-30 14:20:59 +00:00
sparc64 The synchronization provided by vm object locking has eliminated the 2004-11-03 20:17:31 +00:00
sys Protect against local flooder of /var/run/log. Do not loop forever in 2004-11-04 23:09:57 +00:00
tools Pass doxygen doc comments through to the output. 2004-07-11 16:14:24 +00:00
ufs Don't grab the exclusive bit on a root filesystem until we are willing 2004-11-04 09:11:22 +00:00
vm Close a race in swapoff(). Here are the gory details: 2004-11-05 05:36:56 +00:00
Makefile Add a NO_BOOT knob to prevent building the boot blocks and loader. 2004-08-19 09:54:28 +00:00