freebsd-dev/lib
Kyle Evans 51aecc893a libbe(3): rewrite init to support chroot usage
libbe(3) currently uses zfs_be_root and locates which of its children is
currently mounted at "/". This is reasonable, but not correct in the case of
a chroot, for two reasons:

- chroot root may be of a different zpool than zfs_be_root
- chroot root will not show up as mounted at "/"

Fix both of these by rewriting libbe_init to work from the rootfs down.
zfs_path_to_zhandle on / will resolve to the dataset mounted at the new
root, rather than the real root. From there, we can derive the BE root/pool
and grab the bootfs off of the new pool. This does no harm in the average
case, and opens up bectl to operating on different pools for scenarios where
one may be, for instance, updating a pool that generally gets re-rooted into
from a separate UFS root or zfs bootpool.

While here, I've also:
- Eliminated the check for /boot and / to be on the same partition. This
  leaves one open to a setup where /boot (and consequently, kernel/modules)
  are not included in the boot environment. This may very well be an
  intentional setup done by someone that knows what they're doing, we should
  not kill BE usage because of it.

- Eliminated the validation bits of BEs and snapshots that enforced
  'mountpoint' to be "/" -- this broke when trying to operate on an imported
  pool with an altroot, but we need not be this picky.

Reported by:	philip
Reviewed by:	philip, allanjude (previous version)
Tested by:	philip
MFC after:	3 days
Differential Revision:	https://reviews.freebsd.org/D18012
2018-11-17 19:15:29 +00:00
..
atf DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
clang libllvm: Move SampleProfWriter to SRCS_MIN 2018-11-09 19:51:26 +00:00
csu Run __cxa_finalize in shared objects in the destructor path. 2018-11-13 15:28:27 +00:00
geom geli init with multiple providers - fix init and fix -B "none" 2018-09-10 14:50:34 +00:00
lib80211 Move regdomain.xml to lib/lib80211/ 2018-09-19 09:29:06 +00:00
libalias Move libalias.conf to lib/libalias/libalias/ 2018-09-18 20:54:37 +00:00
libarchive MFV r339640,339641,339644: 2018-10-25 21:44:17 +00:00
libauditd Disable -Wcast-align in libbsm and libauditd 2018-07-28 20:04:39 +00:00
libbe libbe(3): rewrite init to support chroot usage 2018-11-17 19:15:29 +00:00
libbegemot DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libblacklist DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libblocksruntime DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libbluetooth Move all bluetooth related config files out of etc 2018-08-21 19:28:53 +00:00
libbsdstat lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libbsm Disable -Wcast-align in libbsm and libauditd 2018-07-28 20:04:39 +00:00
libbsnmp Update bsnmp to version 1.13. This does not bring user-visible changes. 2018-07-03 08:44:40 +00:00
libbz2 DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libc amd64: handle small memset buffers with overlapping stores 2018-11-16 00:44:22 +00:00
libc_nonshared lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libc++ DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libc++experimental DIRDEPS_BUILD: Connect more libraries. 2017-07-11 00:32:48 +00:00
libcalendar lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libcam SPDX: Small for a license ID tags. 2017-12-27 21:36:37 +00:00
libcapsicum Fix a recusive call introduce in the r340130. 2018-11-04 18:52:59 +00:00
libcasper Fix typo in the comparison. 2018-11-12 18:37:31 +00:00
libclang_rt Install the 32-bit compat sanitizer libraries. 2018-08-03 18:52:51 +00:00
libcom_err DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libcompat ftime appeared in 7th Edition Unix to replace gtime. 2018-10-28 02:58:15 +00:00
libcompiler_rt The routines defined in comparedf2 and comparesf2 are defined in libc 2018-02-02 05:04:43 +00:00
libcrypt libcrypt: There is no need to clear message digest context after they 2018-07-20 07:16:28 +00:00
libcuse DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libcxxrt libcxxrt: Move mangled symbols out of extern "C++" in Version.map 2018-01-23 22:41:13 +00:00
libdevctl Forgot to bump .Dd in r338233 like I promised in the review. Doh! 2018-08-23 05:08:38 +00:00
libdevdctl zfsd: Allow zfsd to work on any type of GEOM provider 2018-02-14 23:52:39 +00:00
libdevinfo Update to device enumeration protocol 2 2018-05-31 02:58:03 +00:00
libdevstat lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libdl Add libdl to clibs package 2018-03-29 19:43:29 +00:00
libdpv Fix comparison between pointer and char literal 2018-06-16 20:00:41 +00:00
libdwarf DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libedit libedit: sort the Makefile in line with NetBSD's version. 2018-01-29 22:38:23 +00:00
libefivar Ensure that the device path is sane before trying to decode and print 2018-10-26 22:49:36 +00:00
libelf Add gelf_mips64el.c to the list of files to include in libelf. 2018-09-05 21:47:22 +00:00
libelftc Update ELF Tool Chain to r3614 2018-04-27 13:59:24 +00:00
libevent DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libexecinfo DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libexpat Update expat to 2.2.6 2018-11-04 16:08:59 +00:00
libfetch Make libfetch buildable. 2018-09-19 07:04:15 +00:00
libfigpar Bump copyright following recent changes 2018-03-14 20:55:28 +00:00
libgcc_eh In r308100, an explicit -fexceptions flag was added for the C sources 2018-08-10 19:57:55 +00:00
libgcc_s Fix build by escaping a line break. 2018-01-31 21:41:42 +00:00
libgeom lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libgpio DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libgssapi lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libiconv_modules libiconv: correct undefined behavior. 2018-07-08 23:22:04 +00:00
libifconfig Finish removing FDDI and tokenring media support. 2018-04-23 21:10:33 +00:00
libipsec Update pfkey_open() function to set socket's write buffer size to 2018-03-11 19:26:34 +00:00
libipt Add new shared library -- libipt. 2018-03-21 14:37:04 +00:00
libjail libjail: fix handling of allow.mount.fusefs in jailparam_init 2018-11-10 03:10:22 +00:00
libkiconv lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libkvm Make cache coherency attributes definitions available in machine/vm.h on MIPS. 2018-08-01 18:35:17 +00:00
libldns Add libssl to libldns for DANE. 2018-10-12 05:27:58 +00:00
liblzma MFV r333779: xz 5.2.4. 2018-05-18 06:10:16 +00:00
libmagic Don't use CCACHE for linking. 2018-06-27 19:29:15 +00:00
libmd r338270 had the side effect of no longer installing libmd.so into /lib. 2018-08-26 17:05:43 +00:00
libmemstat libmemstat: adjust for per-cpu stats after r338899 2018-10-11 23:25:14 +00:00
libmilter DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libmp Make libmp(3) buildable. 2018-09-19 07:05:31 +00:00
libmt Add the LTO-8 Type M density code (0x5d, LTO-8M) to libmt and the 2017-11-03 21:04:22 +00:00
libnandfs lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libnetbsd Make timespecadd(3) and friends public 2018-07-30 15:46:40 +00:00
libnetgraph s/NgSendMsgReply/NgSendReplyMsg/ in man to match the code. 2017-11-08 12:34:47 +00:00
libngatm DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libnv Ensure that libnv can be used when kern.trap_enotcap=1. 2018-11-13 20:07:55 +00:00
libopenbsd Fix a few more speelling errors 2017-12-28 01:31:28 +00:00
libopencsd Add new shared library -- libopencsd. 2018-04-04 14:31:56 +00:00
libopie Move opieaccess to lib/libopie/ 2018-09-20 09:26:10 +00:00
libpam Really fix pam install. Don't commit late at night or you make simple mistakes. 2018-09-13 16:14:33 +00:00
libpathconv Disconnect libpathconv tests since they require external perl and do not work with kyua. 2017-10-31 19:52:30 +00:00
libpcap Remove redundant header file from source list in libpcap. 2018-05-30 08:24:57 +00:00
libpe Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:37:03 +00:00
libpjdlog Revert 335888 ("Ensure va_list is declared by including stdarg.h.") 2018-07-03 15:48:34 +00:00
libpmc Add aditional counter descriptions to AMD 0x17 2018-11-04 06:24:27 +00:00
libpmcstat pmc(3)/hwpmc(4): update supported Intel processors to rely fully on the 2018-05-26 19:29:19 +00:00
libproc Detach from the child process before completing the test. 2018-07-27 20:34:15 +00:00
libprocstat Do not blindly include illumos kernel headers instead of user-space. 2018-08-02 18:55:55 +00:00
libradius Make libradius(3) buildable. 2018-09-19 07:06:20 +00:00
libregex libregex: Mark gnuext test as an expected fail 2018-01-29 14:00:33 +00:00
librpcsec_gss lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
librpcsvc spdx: initial adoption of licensing ID tags. 2017-11-18 14:26:50 +00:00
librss DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
librt lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
librtld_db lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libsbuf DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libsdp libsdp: Add method that returns actual source BD_ADDR of SDP session. 2018-04-30 10:15:58 +00:00
libsm Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:35:36 +00:00
libsmb Move nsmb.conf to lib/libsmb/ 2018-09-20 09:31:27 +00:00
libsmdb Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:35:18 +00:00
libsmutil Use SRCTOP-relative paths to other directories instead of .CURDIR-relative ones 2017-01-20 04:34:34 +00:00
libsqlite3 Revert r333353 - FTS5 uses log(3) which currently breakes non-amd64 builds. 2018-05-08 06:09:49 +00:00
libstdbuf lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libstdthreads lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libsysdecode Fix regex for extracting SHM_* values for libsysdecode 2018-10-23 06:31:19 +00:00
libtacplus lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libtelnet Remove redundant include directories which expand to a noop, 2017-07-31 19:07:45 +00:00
libthr libthr: minor spacing cleanup. 2018-08-21 01:33:25 +00:00
libthread_db Implement pt_fpreg_to_ucontext(), pt_ucontext_to_fpreg(). 2018-08-02 12:24:34 +00:00
libucl DIRDEPS_BUILD: Update dependencies. 2017-10-31 00:07:04 +00:00
libufs In preparation for adding inode check-hashes, clean up and 2018-11-13 21:40:56 +00:00
libugidfw Allow jail names (not just IDs) to be specified for: cpuset(1), ipfw(8), 2018-07-03 23:47:20 +00:00
libulog lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libunbound Update Makefile for 1.8.0, apologies for the breakage. 2018-10-10 08:19:11 +00:00
libusb libusb(3): Update the link to the libusb homepage. 2018-10-11 13:58:51 +00:00
libusbhid lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libutil Stop exporting __pw_scan and __pw_initpwd as freebsd-private libc functions 2018-07-27 19:47:42 +00:00
libveriexec This library allows for user space applications to check file descriptors 2018-06-20 00:55:18 +00:00
libvgl lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libvmmapi bhyve: Use MAP_GUARD when mapping guest memory ranges. 2018-09-06 20:29:40 +00:00
libwrap Move hosts.allow to lib/libwrap/ 2018-09-22 13:17:30 +00:00
libxo Import libxo-0.9.0: 2018-05-23 01:20:31 +00:00
liby liby: rewrite yyerror.h 2018-06-17 18:05:27 +00:00
libypclnt lib: further adoption of SPDX licensing ID tags. 2017-11-26 02:00:33 +00:00
libz Remove "All rights reserved" from my files. 2018-05-10 06:41:08 +00:00
libzstd Update to Zstandard 1.3.7 2018-10-22 18:29:12 +00:00
msun csqrt(3): Fix some typos in the manual page 2018-11-04 14:11:38 +00:00
ncurses Fix ncurses fallback.c build with a strict build shell 2018-10-23 06:31:31 +00:00
ofed Move OFED libraries libmlx5.so.1 and libibverbs.so.1 to /lib. 2018-07-20 23:49:57 +00:00
tests
Makefile retire LINKER_FEATURES filter flag 2018-11-12 20:44:22 +00:00
Makefile.inc