freebsd kernel with SKQ
Go to file
Mark Johnston 81846def34 vm: Fix some bugs in the page busying code
In vm_page_busy_acquire(), load the object pointer using
atomic_load_ptr() as we do elsewhere.  Per the comment, the object
identity must be consistent across sleeps.

In vm_page_grab_sleep(), pass the correct pindex to
_vm_page_busy_sleep().  The pindex is used to re-check the page's
identity before going to sleep.  In particular, vm_page_grab_sleep() is
used in unlocked grab, so the object lock is not necessarily held when
verifying the page's identity, and the pindex may change if the page is
moved, or freed and re-allocated.  I believe this can result in spurious
VM_PAGER_FAILs from vm_page_grab_valid_unlocked() or early termination
of vm_page_grab_pages_unlocked().

In vm_page_grab_pages(), pass the correct pindex to
vm_page_grab_sleep().  Otherwise I believe vm_page_grab_pages() will
effectively spin when attempting to busy a busy page after the first
index in the range.

Reviewed by:	alc, kib
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D27607
2020-12-27 17:01:44 -05:00
.github/workflows GH Actions: Use pre-installed clang packages 2020-11-26 14:42:16 +00:00
bin Replace sscanf() by strtoul() 2020-12-27 22:32:22 +01:00
cddl dtrace: honor LC_NUMERIC for %'d and alike, and LC_TIME for %T 2020-12-03 11:59:40 +00:00
contrib Import bc 3.2.4 2020-12-27 22:32:22 +01:00
crypto Merge OpenSSL 1.1.1i. 2020-12-09 02:05:14 +00:00
etc build: remove the option to build gnugrep 2020-12-25 15:14:17 -06:00
gnu gnu: remove gnugrep and libgnuregex 2020-12-25 15:16:33 -06:00
include Add tcgetwinsize(3) and tcsetwinsize(3) to termios 2020-12-25 20:43:09 +02:00
kerberos5 Fix more -Wundef warnings during bootstrap 2020-10-14 12:28:54 +00:00
lib Decode and report native eventfd descriptors from libprocstat and procstat. 2020-12-27 12:57:27 +02:00
libexec rtld-elf(1): remove obsolete pre_init() hook 2020-12-25 19:47:46 +01:00
release riscv: increase GENERICSD gap 2020-12-16 20:21:56 +00:00
rescue ping: add a ping6 hard link for backwards compatibility 2020-11-26 18:33:04 +00:00
sbin sbin/init: Reduce code duplication by using %m for error message 2020-12-25 17:49:33 -08:00
secure caroot: update bundle 2020-12-11 18:14:43 +00:00
share sym.4: Remove remainder of SYM_SETUP_LP_PROBE_MAP documentation 2020-12-26 22:42:26 +01:00
stand libsa: xdrproc_t should return bool 2020-12-27 23:25:18 +02:00
sys vm: Fix some bugs in the page busying code 2020-12-27 17:01:44 -05:00
targets Add WITH_CLANG_FORMAT option 2020-06-24 17:03:42 +00:00
tests pf tests: Verify (tcp) checksum modification on unaligned options 2020-12-23 12:03:20 +01:00
tools build: remove the option to build gnugrep 2020-12-25 15:14:17 -06:00
usr.bin Adjust to display more than 999 sleeping threads 2020-12-27 22:32:22 +01:00
usr.sbin Fix daily_backup_gpart_exclude in periodic daily 221.backup-gpart 2020-12-26 19:27:12 -05:00
.arcconfig arcconfig: add callsign again 2020-11-23 04:39:29 +00:00
.arclint arc lint: ignore /tests/ in chmod 2017-12-19 03:38:06 +00:00
.cirrus.yml CI: switch to qemu42 package 2020-10-29 02:02:30 +00:00
.clang-format clang-format: Avoid breaking after the opening paren of function definitions 2020-10-28 11:54:00 +00:00
.gitattributes Add a basic clang-format configuration file 2019-06-07 15:23:52 +00:00
.gitignore Stop ignoring makeLINT generated files 2020-10-09 00:27:45 +00:00
COPYRIGHT Happy New Year 2020! 2019-12-31 16:01:36 +00:00
LOCKS LOCKS: update current locks 2018-06-09 03:08:04 +00:00
MAINTAINERS Add a pointer to csprng@ for the CSPRNG driver. This is enforced anyway by 2020-09-01 08:02:12 +00:00
Makefile Makefile: re-wordsmith the blurb about xtoolchain ports 2020-11-14 18:06:35 +00:00
Makefile.inc1 Remove additional GDB leftovers missed in r368667 2020-12-15 18:12:03 +00:00
Makefile.libcompat Race in 32-bit fixed 2020-10-08 17:30:05 +00:00
Makefile.sys.inc AUTO_OBJ: For all top-level targets enforce using an OBJDIR. 2017-12-05 21:29:47 +00:00
ObsoleteFiles.inc build: remove the option to build gnugrep 2020-12-25 15:14:17 -06:00
README Mark the repository has been converted to Git 2020-12-23 12:27:27 +08:00
README.md Mark the repository has been converted to Git 2020-12-23 12:27:27 +08:00
RELNOTES Add relnote for r368667, GDB 6.1.1 removal 2020-12-15 17:52:04 +00:00
UPDATING UPDATING: Announce git transition 2020-12-23 09:40:45 -07:00

FreeBSD Source:

This is the top level of the FreeBSD source directory. This file was last revised on: FreeBSD

FreeBSD is an operating system used to power modern servers, desktops, and embedded platforms. A large community has continually developed it for more than thirty years. Its advanced networking, security, and storage features have made FreeBSD the platform of choice for many of the busiest web sites and most pervasive embedded networking and storage devices.

For copyright information, please see the file COPYRIGHT in this directory. Additional copyright information also exists for some sources in this tree - please see the specific source directories for more information.

The Makefile in this directory supports a number of targets for building components (or all) of the FreeBSD source tree. See build(7), config(8), https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html, and https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html for more information, including setting make(1) variables.

Source Roadmap:

bin		System/user commands.

cddl		Various commands and libraries under the Common Development
		and Distribution License.

contrib		Packages contributed by 3rd parties.

crypto		Cryptography stuff (see crypto/README).

etc		Template files for /etc.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* for more information.

include		System include files.

kerberos5	Kerberos5 (Heimdal) package.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

rescue		Build system for statically linked /rescue utilities.

sbin		System commands.

secure		Cryptographic libraries and commands.

share		Shared resources.

stand		Boot loader sources.

sys		Kernel sources.

sys/<arch>/conf Kernel configuration files. GENERIC is the configuration
		used in release builds. NOTES contains documentation of
		all possible entries.

tests		Regression tests which can be run by Kyua.  See tests/README
		for additional information.

tools		Utilities for regression testing and miscellaneous tasks.

usr.bin		User commands.

usr.sbin	System administration commands.

For information on synchronizing your source tree with one or more of the FreeBSD Project's development branches, please see:

https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/current-stable.html