freebsd-src/lib
Kirk McKusick e688661642 Move the ability to search for alternate UFS superblocks from fsck_ffs(8)
into ffs_sbsearch() to allow use by other parts of the system.

Historically only fsck_ffs(8), the UFS filesystem checker, had code
to track down and use alternate UFS superblocks. Since fsdb(8) used
much of the fsck_ffs(8) implementation it had some ability to track
down alternate superblocks.

This change extracts the code to track down alternate superblocks
from fsck_ffs(8) and puts it into a new function ffs_sbsearch() in
sys/ufs/ffs/ffs_subr.c. Like ffs_sbget() and ffs_sbput() also found
in ffs_subr.c, these functions can be used directly by the kernel
subsystems. Additionally they are exported to the UFS library,
libufs(8) so that they can be used by user-level programs. The new
functions added to libufs(8) are sbfind(3) that is an alternative
to sbread(3) and sbsearch(3) that is an alternative to sbget(3).
See their manual pages for further details.

The utilities that have been changed to search for superblocks are
dumpfs(8), fsdb(8), ffsinfo(8), and fsck_ffs(8). Also, the prtblknos(8)
tool found in tools/diag/prtblknos searches for superblocks.

The UFS specific mount code uses the superblock search interface
when mounting the root filesystem and when the administrator doing
a mount(8) command specifies the force flag (-f). The standalone UFS
boot code (found in stand/libsa/ufs.c) uses the superblock search
code in the hope of being able to get the system up and running so
that fsck_ffs(8) can be used to get the filesystem cleaned up.

The following utilities have not been changed to search for
superblocks: clri(8), tunefs(8), snapinfo(8), fstyp(8), quot(8),
dump(8), fsirand(8), growfs(8), quotacheck(8), gjournal(8), and
glabel(8). When these utilities fail, they do report the cause of
the failure. The one exception is the tasting code used to try and
figure what a given disk contains. The tasting code will remain
silent so as not to put out a slew of messages as it trying to taste
every new mass storage device that shows up.

Reviewed by: kib
Reviewed by: Warner Losh
Tested by:   Peter Holm
Differential Revision: https://reviews.freebsd.org/D36053
Sponsored by: The FreeBSD Foundation
2022-08-13 12:43:40 -07:00
..
atf Do not build libatf-c++ when WITHOUT_CXX 2021-10-29 10:08:24 -04:00
clang Merge llvm-project release/14.x llvmorg-14.0.5-0-gc12386ae247c 2022-06-12 20:53:16 +02:00
csu Revert "csu: test: explicitly add libm as build parameter" 2022-07-28 11:23:26 -03:00
flua jail(3lua): add jail.attach()/jail.remove() methods 2021-09-30 16:31:04 -05:00
geom gmirror.8: Remove references rc.early 2022-07-21 22:02:44 +02:00
googletest googletest: Silence warnings about deprecated implicit copy constructors 2021-08-26 22:06:53 +02:00
lib9p lib9p: fix building on systems without capser 2021-01-04 20:48:48 +01:00
lib80211 lib80211: Start adding 11ac ETSI bits to regdomain.xml 2021-03-18 11:09:10 +00:00
libalias Rename NO_WERROR -> MK_WERROR=no 2021-01-07 09:31:03 +00:00
libarchive libarchive: fix zstd compression support 2022-04-08 10:11:25 +02:00
libauditd libauditd: make it a PRIVATELIB 2020-04-19 02:20:39 +00:00
libbe bectl: push space-in-name check down into libbe 2022-04-02 21:04:31 -05:00
libbearssl Revert that! 2020-07-19 23:56:19 +00:00
libbegemot Update Makefile.depend files 2019-12-11 17:37:53 +00:00
libblacklist Update Makefile.depend files 2019-12-11 17:37:53 +00:00
libblocksruntime Move all sources from the llvm project into contrib/llvm-project. 2019-12-20 19:53:05 +00:00
libbluetooth bluetooth: Remove one more h4 reference. 2021-09-29 22:02:25 -06:00
libbsddialog bsddialog(3): fix disabled shadow 2022-04-20 17:52:04 +02:00
libbsdstat Update Makefile.depend files 2019-12-11 17:37:53 +00:00
libbsm libbsm: fix some MLINKS 2020-04-19 02:18:40 +00:00
libbsnmp pkgbase: Put the mibs and defs in the bnsmp package 2021-06-19 17:50:03 +02:00
libbz2 Update Makefile.depend files 2019-12-11 17:37:53 +00:00
libc libc: iconv: add mb_cur_min for encoder traits 2022-08-11 11:42:17 -05:00
libc++ Apply libc++ fix for <ranges> not compiling at all 2022-05-14 13:46:39 +02:00
libc++experimental Merge llvm-project release/13.x llvmorg-13.0.0-rc1-97-g23ba3732246a 2021-11-13 21:42:03 +01:00
libc_nonshared
libcalendar Update Makefile.depend files 2019-12-11 17:37:53 +00:00
libcam cam_get_device: resolve path links before parsing device name 2022-01-26 11:25:31 +02:00
libcapsicum Add missing FreeBSD functions to -legacy when building on macOS/Linux 2020-08-25 13:23:31 +00:00
libcasper cap_fileargs: silence warnings of unused variable 2022-03-20 11:22:55 +01:00
libcbor Add libcbor to the build 2021-10-15 15:10:24 -04:00
libclang_rt libclang_rt: Trim a few more MIPSisms. 2022-06-30 10:02:37 -07:00
libcom_err pkgbase: Create a FreeBSD-kerberos package 2021-09-07 10:23:14 +02:00
libcompat
libcompiler_rt Build compiler-rt against libunwind, not libcxxrt 2022-03-09 22:23:35 +01:00
libcrypt libcrypt: Drop inclusion of libutil.h 2021-12-07 00:24:19 +00:00
libcuse cuse(3): Make some clarifications in the manual page. 2022-07-20 10:41:11 +02:00
libcxxrt Sort SRCS in libcxxrt's Makefile, and use += to list sources 2022-01-22 21:08:55 +01:00
libdevctl libdevctl: Add devctl_getpath 2022-03-01 08:06:41 -07:00
libdevdctl Fix race in case of device destruction. 2021-04-13 11:25:27 -04:00
libdevinfo devinfo: add man page links 2020-08-04 21:09:36 +00:00
libdevstat Update Makefile.depend files 2019-12-11 17:37:53 +00:00
libdl libc: include rtld.h into static implementations of rtld interface 2021-04-09 23:46:24 +03:00
libdpv libdialog: Bump shared library version to 10. 2021-10-27 09:30:24 -07:00
libdwarf libdwarf: Add a weak uncompress() symbol 2021-12-13 18:47:15 -05:00
libedit ncurses: chase dependency changes in the source tree 2021-10-04 11:38:24 +02:00
libefivar libefivar(3): Fix a typo in a source code comment 2022-03-28 19:27:58 +02:00
libelf libelf: Link gelf_getchdr.3 to the build 2021-11-29 13:57:24 -05:00
libelftc Update ELF Tool Chain to upstream r3769 2019-12-05 13:20:15 +00:00
libevent1 rename in-tree libevent v1 to libevent1 2020-05-28 22:05:50 +00:00
libexecinfo Move all sources from the llvm project into contrib/llvm-project. 2019-12-20 19:53:05 +00:00
libexpat MFV f83ac37f1e: libbsdxml (expat) 2.4.3. 2022-01-17 16:34:41 -08:00
libfetch libfetch: remove a set-but-not-uswed variable 2022-04-20 16:58:33 +02:00
libfido2 Add libfido2 to the build 2021-10-22 19:57:57 -04:00
libfigpar Update Makefile.depend files 2019-12-11 17:37:53 +00:00
libgcc_eh Merge llvm-project release/14.x llvmorg-14-init-18315-g190be5457c90 2022-05-14 13:45:25 +02:00
libgcc_s Export _Unwind_Complete and _Unwind_VRS_Pop from arm's libgcc_s 2022-04-27 11:04:10 +02:00
libgeom Clarify when GEOM utilities exit with success or failure. 2022-07-16 10:26:51 -07:00
libgpio Update Makefile.depend files 2019-12-11 17:37:53 +00:00
libgssapi pkgbase: split kerberos binaries and libs 2022-08-03 11:02:28 +01:00
libiconv_modules iconv_std: complete the //IGNORE support 2022-08-11 11:42:20 -05:00
libifconfig libifconfig: Overhaul ifconfig_media_* interfaces 2021-03-05 04:15:55 -05:00
libipsec ipsec(4): Fix a typo in a source code comment 2022-06-04 12:28:20 +02:00
libipt Update Intel Processor Trace decoder library. 2019-10-10 12:46:34 +00:00
libiscsiutil iscsi: per-session timeouts and rapid teardown of session on reconnect 2022-02-25 10:35:47 +01:00
libjail libjail: Handle an error from reallocarray() when trimming the buffer. 2020-01-07 21:44:27 +00:00
libkiconv libkiconv: address memory leak in not-found cases 2021-04-22 19:32:34 -04:00
libkvm kern_tc.c/cputick2usec() (which is used to calculate cputime from 2022-03-21 09:33:46 -04:00
libldns Update Makefile.depend files 2019-12-11 17:37:53 +00:00
liblua contrib/lua: update to 5.4.2 2021-01-13 23:56:18 -06:00
liblutok Add liblutok a lightweight C++ API for lua. 2020-03-23 18:26:23 +00:00
liblzma Install working pkgconfig .pc files for compat libraries 2022-08-11 23:18:34 +01:00
libmagic Install working pkgconfig .pc files for compat libraries 2022-08-11 23:18:34 +01:00
libmd libmd: Fix a common typo in the license header 2022-03-27 19:46:32 +02:00
libmemstat sys/bitset.h: reduce visibility of BIT_* macros 2021-12-05 23:00:25 +01:00
libmilter Update Makefile.depend files 2019-12-11 17:37:53 +00:00
libmixer mixer.4 and mixer.8: Fix mandoc -Tlint errors. 2022-03-20 20:21:03 +01:00
libmp Update Makefile.depend files 2019-12-11 17:37:53 +00:00
libmt mt(3): Fix a typo in the manual page 2022-04-06 18:41:08 +02:00
libnetbsd libnetbsd: Fix a typo in a source code comment 2022-04-02 14:53:56 +02:00
libnetgraph Retire synchronous PPP kernel driver sppp(4). 2021-10-22 11:41:36 -07:00
libnetmap libnetmap: reset errno in nmreq_register_decode() 2021-04-02 14:31:57 +00:00
libngatm Update Makefile.depend files 2019-12-11 17:37:53 +00:00
libnv libnv: bump library version 2022-07-22 00:23:08 +02:00
libomp Merge llvm-project release/14.x llvmorg-14-init-18315-g190be5457c90 2022-05-14 13:45:25 +02:00
libopenbsd Only set WARNS if not defined 2020-09-11 13:28:37 +00:00
libopencsd Update opencsd to 0.14.2 2020-06-17 10:42:20 +00:00
libopie Update Makefile.depend files 2019-12-11 17:37:53 +00:00
libpam pam_exec: fix segfault when authtok is null 2022-05-22 12:36:48 -04:00
libpathconv libpathconv: bump man page dates 2022-08-09 10:05:31 +02:00
libpcap MFV r353141 (by phillip): 2019-12-21 21:01:03 +00:00
libpe
libpfctl pf: support matching on tags for Ethernet rules 2022-06-20 10:16:20 +02:00
libpjdlog pkgbase: Create a FreeBSD-utilities package and make it the default one 2019-09-05 14:15:47 +00:00
libpmc Add pmc.dmc-620(3) man page. 2022-07-26 11:17:50 +03:00
libpmcstat libpmcstat: Fix a few ARM-specific issues with function symbols. 2022-03-10 15:39:53 -08:00
libproc libproc: replace home grown crc32 with zlib implementation. 2022-07-10 16:31:35 -07:00
libprocstat libprocstat: document procstat_getadvlock(3) 2022-04-10 00:47:49 +03:00
libradius libradius: fix WITHOUT_OPENSSL build 2021-10-28 17:05:53 -04:00
libregex pkgbase: Put more binaries/lib in runtime 2021-12-21 10:17:27 +01:00
librpcsec_gss Fix a few mandoc issues 2020-10-09 19:12:44 +00:00
librpcsvc pkgbase: Put more binaries/lib in runtime 2021-12-21 10:17:27 +01:00
librss Update Makefile.depend files 2019-12-11 17:37:53 +00:00
librt Fix aio_readv(2), aio_writev(2) with SIGEV_THREAD. 2021-08-22 23:49:23 +12:00
librtld_db librtld_db: Handle shlibs with discontiguous mappings. 2021-12-03 11:07:30 -08:00
libsbuf Do a sweep and remove most WARNS=6 settings 2020-10-01 01:10:51 +00:00
libsdp Update Makefile.depend files 2019-12-11 17:37:53 +00:00
libsecureboot Add -S option to veriexec 2022-07-19 08:59:53 -07:00
libsm Merge sendmail 8.16.1 to HEAD: See contrib/sendmail/RELEASE_NOTES for details 2020-07-15 18:28:54 +00:00
libsmb
libsmdb Merge sendmail 8.16.1 to HEAD: See contrib/sendmail/RELEASE_NOTES for details 2020-07-15 18:28:54 +00:00
libsmutil
libsqlite3 [PowerPC64LE] Pass our byte order to the sqlite3 build. 2020-09-23 02:17:44 +00:00
libssp libssp: don't compile with -fstack-protector* 2020-03-14 15:15:27 +00:00
libssp_nonshared Provide libssp based on libc 2020-01-04 20:19:25 +00:00
libstats Make use of the stats(3) framework in the TCP stack. 2019-12-02 20:58:04 +00:00
libstdbuf
libstdthreads Update Makefile.depend files 2019-12-11 17:37:53 +00:00
libsysdecode libsysdecode: Grab some more ioctl definitions from CAM 2022-06-30 10:31:26 -04:00
libtacplus libtacplus: Remove bogus srandomdev+random 2019-12-13 05:11:34 +00:00
libtelnet
libthr Remove PAGE_SIZE from libthr 2022-05-03 11:04:41 +01:00
libthread_db mips: Remove thread_db support 2021-12-31 00:14:53 -07:00
libucl Only set WARNS if not defined 2020-09-11 13:28:37 +00:00
libufs Move the ability to search for alternate UFS superblocks from fsck_ffs(8) 2022-08-13 12:43:40 -07:00
libugidfw Deduplicate fsid comparisons 2020-05-21 01:55:35 +00:00
libulog Update Makefile.depend files 2019-12-11 17:37:53 +00:00
libunbound MFV r361322: 2020-05-21 21:00:46 +00:00
libusb Install working pkgconfig .pc files for compat libraries 2022-08-11 23:18:34 +01:00
libusbhid usbhid(3): Fix a typo in the manual page 2022-06-04 19:54:25 +02:00
libutil libutil: Fix mandoc warnings 2022-08-07 16:30:24 +02:00
libveriexec Do not claim libbearssl et al are INTERNALLIB 2020-04-01 05:45:12 +00:00
libvgl Update Makefile.depend files 2019-12-11 17:37:53 +00:00
libvmmapi bhyve: Initialize more registers in vcpu_reset() 2022-07-27 18:20:47 +02:00
libwrap pkgbase: Put more binaries/lib in runtime 2021-12-21 10:17:27 +01:00
libxo add blank line between variables (testing git commit) 2021-08-04 16:56:55 -04:00
liby
libypclnt pkgbase: Put more binaries/lib in runtime 2021-12-21 10:17:27 +01:00
libz Install working pkgconfig .pc files for compat libraries 2022-08-11 23:18:34 +01:00
libzstd Disable clang 14 warning about bitwise operators in zstd 2022-02-08 21:46:08 +01:00
msun [libm] Correct comments in s_cbrt[l].c 2022-08-04 19:33:34 +02:00
ncurses Install working pkgconfig .pc files for compat libraries 2022-08-11 23:18:34 +01:00
ofed irdma: Add RDMA driver for Intel(R) Ethernet Controller E810 2022-05-23 16:52:49 -07:00
tests
Makefile Simplify conditional guards for libclang_rt. 2022-07-07 13:54:57 -07:00
Makefile.inc build: provide a default WARNS for all in-tree builds 2020-09-18 17:17:46 +00:00