Find a file
Kirk McKusick 5cc52631b3 Rewrite the disk I/O management system in fsck_ffs(8). Other than
making fsck_ffs(8) run faster, there should be no functional change.

The original fsck_ffs(8) had its own disk I/O management system.
When gjournal(8) was added to FreeBSD 7, code was added to fsck_ffs(8)
to do the necessary gjournal rollback. Rather than use the existing
fsck_ffs(8) disk I/O system, it wrote its own from scratch. Similarly
when journalled soft updates were added in FreeBSD 9, code was added
to fsck_ffs(8) to do the necessary journal rollback. And once again,
rather than using either of the existing fsck_ffs(8) disk I/O
systems, it wrote its own from scratch. Lastly the fsdb(8) utility
uses the fsck_ffs(8) disk I/O management system. In preparation for
making the changes necessary to enable snapshots to be taken when
using journalled soft updates, it was necessary to have a single
disk I/O system used by all the various subsystems in fsck_ffs(8).

This commit merges the functionality required by all the different
subsystems into a single disk I/O system that supports all of their
needs. In so doing it picks up optimizations from each of them
with the results that each of the subsystems does fewer reads and
writes than it did with its own customized I/O system. It also
greatly simplifies making changes to fsck_ffs(8) since everything
goes through a single place. For example the ginode() function
fetches an inode from the disk. When inode check hashes were added,
they previously had to be checked in the code implementing inode
fetch in each of the three different disk I/O systems. Now they
need only be checked in ginode().

Tested by:    Peter Holm
Sponsored by: Netflix
2021-01-07 15:03:15 -08:00
.github/workflows Github actions: s/master/main/ for the CI workflow 2021-01-03 00:08:38 +01:00
bin Fix all warnings emitted in make kernel-toolchain 2021-01-07 09:26:22 +00:00
cddl Install dtrace.h and dependencies 2021-01-07 09:26:21 +00:00
contrib Update contrib/llvm-project/FREEBSD-Xlist for llvmorg-11.0.1-rc2. 2021-01-03 14:21:54 +01:00
crypto Merge OpenSSL 1.1.1i. 2020-12-09 02:05:14 +00:00
etc pkgbase: Install atf and kyua in the tests package 2021-01-04 16:20:47 +01:00
gnu gnu: remove gnugrep and libgnuregex 2020-12-25 15:16:33 -06:00
include include: Use printf(1) instead of shell loops for header symlinks 2021-01-07 09:26:22 +00:00
kerberos5 Fix more -Wundef warnings during bootstrap 2020-10-14 12:28:54 +00:00
lib Rename NO_WERROR -> MK_WERROR=no 2021-01-07 09:31:03 +00:00
libexec rtld: map without PROT_EXEC for relocation 2021-01-05 10:57:14 -05:00
release release.sh: Update GITROOT URL 2020-12-29 09:40:28 -05:00
rescue ping: add a ping6 hard link for backwards compatibility 2020-11-26 18:33:04 +00:00
sbin Rewrite the disk I/O management system in fsck_ffs(8). Other than 2021-01-07 15:03:15 -08:00
secure caroot: drop $FreeBSD$ expansion from root bundle 2020-12-27 21:47:41 -06:00
share Fix the bug in committers-ports.dot with my mentor. 2021-01-07 08:51:25 -08:00
stand stand: remove bogus dependency from libsa32 2021-01-07 16:28:21 -06:00
sys iflib: ensure that tx interrupts enabled and cleanups 2021-01-07 14:07:35 -08:00
targets Rename NO_WERROR -> MK_WERROR=no 2021-01-07 09:31:03 +00:00
tests Add aio_writev and aio_readv 2021-01-02 19:57:58 -07:00
tools prepare-commit-msg: Avoid warning on macOS and shellcheck fixes 2021-01-07 14:00:32 +00:00
usr.bin du: tests: make H_flag tests more strict about output requirements 2021-01-07 16:37:28 -06:00
usr.sbin Fix a typo 2021-01-07 15:28:29 +01: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 copyrights: Happy New Year 2021 2020-12-31 10:29:44 -05: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 Rename NO_WERROR -> MK_WERROR=no 2021-01-07 09:31:03 +00:00
Makefile.inc1 Rename NO_WERROR -> MK_WERROR=no 2021-01-07 09:31:03 +00:00
Makefile.libcompat libcompat: remove redundant path for ncurses 2021-01-07 15:14:52 +01: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 ncurses: only keep the version with widechar support 2021-01-05 14:01:32 +01:00
README import terminus-font-4.48 2021-01-02 20:51:22 +02:00
README.md Initial import of vendor/pnglite 2021-01-02 21:20:31 +02:00
RELNOTES Add relnote for r368667, GDB 6.1.1 removal 2020-12-15 17:52:04 +00:00
UPDATING UPDATING: we are now in 2021, bye 2020 2021-01-05 17:17:51 +01: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