Commit graph

1336 commits

Author SHA1 Message Date
Mark Johnston
5def1805d1 ctfdump: Remove definitions of warn() and vwarn()
The presence of the latter causes a link error when building a
statically linked ctfdump(1) because libc defines the same symbol.
libc's warn() is defined as a weak symbol and so does not cause the same
problem, but let's just use libc's version.

Reported by:	stephane rochoy <stephane.rochoy@stormshield.eu>
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 45dd2eaac3)
2022-04-27 20:34:39 -04:00
Mark Johnston
ccb94ba0da ctf: Link CTF toolchain man pages to ctf.5
Also expand the CTF acronym to provide a bit of context.

PR:		259790
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 5727eceabc)
2022-04-27 20:34:30 -04:00
Mark Johnston
8b01c3026b libctf: Fix recursive descent into anonymous SOU fields
PR:		262412
Tested by:	dhw, gallatin
Fixes:		a6fb869173 ("libctf: Handle CTFv3 containers")
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 6e563a1b60)
2022-04-14 15:02:44 -04:00
Mark Johnston
fb89cf93a5 ctf: Avoid passing a caddr_t to roundup2()
For some reason I can't reproduce this locally, but Jenkins complains.

Reported by:	Jenkins
Fixes:		bdf290cd3e ("ctf: Add v3 support to CTF tools, ctf{convert,dump,merge}")

(cherry picked from commit 3fe1f21fb3)
2022-04-06 20:30:45 -04:00
Mark Johnston
d80faf878a ctf: Fix a -Wunused-but-set-variable warning
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit cb6f722562)
2022-04-06 20:30:45 -04:00
Mark Johnston
e5b54808f7 ctf: Add v3 support to CTF tools, ctf{convert,dump,merge}
ctfdump handles v2 and v3.  ctfconvert now emits only CTFv3, whereas
ctfmerge can merge v2 and v3 containers into v3 containers.

Sponsored by:	The FreeBSD Foundation

(cherry picked from commit bdf290cd3e)
2022-04-06 20:30:45 -04:00
Mark Johnston
a49aa9da78 libctf: Handle CTFv3 containers
In general, the patch adds indirection to minimize the amount of code
that needs to know about differences between v2 and v3.  Specifically,
some new ctf_get_ctt_* functions are added, and new LCTF_* macros are
added to use the underlying container's version to do the right thing.

CTF containers can have parent/child relationships, wherein a type ID in
one container refers to a type in the parent.  It is permitted for the
parent and child to have different versions.

Sponsored by:	The FreeBSD Foundation

(cherry picked from commit a6fb869173)
2022-04-06 20:30:45 -04:00
Mark Johnston
9818e5ebf3 ctf: Add definitions for CTFv3
These are based on definitions added to binutils' libctf.  Specifically:
- Type IDs are now encoded in 32 bits rather than 16, changing the
  layout of ctf_type_t, ctf_array_t, ctf_member_t and ctf_lmember_t.
- Type info is encoded in 32 bits rather than 16.  The type "kind" is
  extended from 5 bits to 6, and the type "vlen" is extended from 10
  bits to 25.

The main upside is that we remove the current limit, imposed by CTFv2,
of 2^{15} distinct types in the main kernel executable.  Other limits,
such as that on the number of elements in an enum, imposed by the vlen
limit, are also raised.

This change adds v2 and v3 flavours of macros and type definitions which
differ between the two versions.  Compatibility is preserved for now by
having generic names refer to the v2 definitions, so, e.g., ctf_type_t
is still a v2 type.

No functional change intended.

Reviewed by:	Domagoj Stolfa
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 994297b01b)
2022-04-06 20:30:44 -04:00
Mark Johnston
3681c4f065 ctf: Import ctf.h from OpenBSD
Use it instead of the existing ctf.h from OpenSolaris.  This makes it
easier to use CTF in the core kernel, and to extend the CTF format to
support wider type IDs.

The imported ctf.h is modified to depend only on _types.h, and also to
provide macros which use the "parent" bit of a type ID to refer to types
in a parent CTF container.

No functional change intended.

Reviewed by:	Domagoj Stolfa, emaste
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 2d5d2a986c)
2022-04-06 20:30:44 -04:00
Li-Wen Hsu
937d08454b
dtrace tests: Fix expected outout for tst.system.d
This is follow up of d500a85e64

PR:		262415
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 16e02ae401)
2022-03-09 11:42:23 +08:00
Mark Johnston
2d30593c24 libctf: Use const ctf_file_t references in string lookup routines
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 45c23c2608)
2022-03-02 08:59:25 -05:00
Mark Johnston
78fb81dec2 libctf: Remove checks for CTFv1
Per commit 7db423d692 ("libctf: Rip out CTFv1 support") this support
is obsolete.

Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 565518046c)
2022-03-02 08:58:59 -05:00
Mark Johnston
afc0a40772 libdtrace: Add a missing newline to an error message
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 1ef441f699)
2022-03-02 08:58:47 -05:00
Mark Johnston
5d526e9361 libctf: Rip out CTFv1 support
CTFv1 was obsolete before libctf was imported into FreeBSD, and
ctfconvert/ctfmerge can emit only CTFv2.  Make ctf.h a bit easier to
maintain by ripping v1 support out.  No functional change intended.

Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 7db423d692)
2022-02-21 09:57:30 -05:00
Mark Johnston
8687a5f369 libctf: Use ctf_type_t instead of struct ctf_type
For consistency with other CTF toolchain code.  No functional change
intended.

Fixes:	105fd928b0 ("libctf: Improve check for duplicate SOU definitions in ctf_add_type()")

(cherry picked from commit 2e4311906d)
2022-02-21 09:57:22 -05:00
Mark Johnston
1dd57c72a4 ctfconvert: Rip out STABS support
It is unused on FreeBSD and complicates some efforts to modify the CTF
format to permit wider type IDs, so remove it.  No functional change
intended.

Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 7be9a3b453)
2022-02-21 09:57:14 -05:00
Dimitry Andric
284434f7a6 Disable clang 14 warning about bitwise operators in zstd
Parts of zstd, used in openzfs and other places, trigger a new clang 14
-Werror warning:

```
sys/contrib/zstd/lib/decompress/huf_decompress.c:889:25: error: use of bitwise '&' with boolean operands [-Werror,-Wbitwise-instead-of-logical]
                        (BIT_reloadDStreamFast(&bitD1) == BIT_DStream_unfinished)
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```

While the warning is benign, it should ideally be fixed upstream and
then vendor-imported, but for now silence it selectively.

MFC after:	3 days

(cherry picked from commit 5f2aca8394)
2022-02-11 17:42:30 +01:00
Andriy Gapon
cbc3c3f0d7 dt_unring_buf: set dtbd_oldest to the start of the first record
It was set to the start of the buffer and that can be different from the
start of teh first record because of a misalignment.

This change follows the example of dt_realloc_buf().

(cherry picked from commit 256c8c5df2)
2022-02-08 18:15:59 +02:00
Mark Johnston
ed0748f1a8 ctfconvert: Handle arrays of empty structs
Members with such a type will legitimately have a size of zero, so don't
emit a warning.

PR:		260818
Reviewed by:	bz
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 963f5dc7a3)
2022-01-07 09:03:02 -05:00
Emmanuel Vadot
7706352226 pkgbase: Create a FreeBSD-dwatch package
While dwatch is useful some users might not want it by default.
Create a package for it.

Differential Revision:	https://reviews.freebsd.org/D31796

(cherry picked from commit a3266ba269)
2022-01-05 18:23:49 +01:00
Domagoj Stolfa
6c9c924b43 dtrace: Disable getf() as it is broken on FreeBSD
getf() on FreeBSD calls _sx_slock(), _sx_sunlock() and fget_locked().
Furthermore, it does not set the per-core fault flag, meaning it
usually ends up in a double fault panic once getf() does get called,
especially from fbt.

Reviewing the DTrace Toolkit + a number of other scripts scattered
around FreeBSD, I have not been able to find one use of getf(). Given
how broken the implementation currently is, we disable it until it
can be implemented properly.

Also comment out a test in aggs/tst.subr.d for getf().

Reviewed by:	markj

(cherry picked from commit 30ec3138ed)
2021-12-26 19:15:07 -05:00
Greg V
4022f3eec4 cddl: fix missing ZFS library dependencies
In 9fae47666 zfsd got a libspl dependency to avoid undefined references.
However that workaround did not help external consumers of libzfs_core.

Fix all missing dependencies lld 13 and the rtld complain about.

Reviewed by:	freqlabs, markj

(cherry picked from commit 9e9c651cac)
2021-11-29 09:26:35 -05:00
Mark Johnston
feb3289f49 libctf: Improve check for duplicate SOU definitions in ctf_add_type()
When copying a struct or union from one CTF container to another,
ctf_add_type() checks whether it matches an existing type in the
destination container.  It does so by looking for a type with the same
name and kind as the new type, and if one exists, it iterates over all
members of the source type and checks whether a member with matching
name and offset exists in the matched destination type.  This can
produce false positives, for example because member types are not
compared, but this is not expected to arise in practice.  If the match
fails, ctf_add_type() returns an error.

The procedure used for member comparison breaks down in the face of
anonymous struct and union members.  ctf_member_iter() visits each
member in the source definition and looks up the corresponding member in
the desination definition by name using ctf_member_info(), but this
function will descend into anonymous members and thus fail to match.
Fix the problem by introducing a custom comparison routine which does
not assume member names are unique.  This should also be faster for
types with many members; in the previous scheme, membcmp() would perform
a linear scan of the desination type's members to perform a lookup by
name.  The new routine steps through the members of both types in a
single loop.

PR:		258763
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 105fd928b0)
2021-10-18 09:09:02 -04:00
Mark Johnston
7ae8074df1 dtrace.1: Document a couple of preprocessor-related options
Suggested by:	swills
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit a40c4ae866)
2021-09-14 08:50:42 -04:00
Mark Johnston
7ca6b62f8d dtrace.1: Document -x ldpath
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 13d9437a60)
2021-09-14 08:50:21 -04:00
Dimitry Andric
4eb23465de Explicitly link zfsd with libspl to avoid undefined references
Because lld 13.0.0 is more strict about undefined references when
linking to shared libraries, it produces the following errors for zfsd:

ld: error: /home/dim/obj/home/dim/src/llvm-13-update/amd64.amd64/tmp/usr/lib/libzfs_core.so: undefined reference to libspl_assertf [--no-allow-shlib-undefined]
ld: error: /home/dim/obj/home/dim/src/llvm-13-update/amd64.amd64/tmp/usr/lib/libnvpair.so: undefined reference to libspl_assertf [--no-allow-shlib-undefined]
ld: error: /home/dim/obj/home/dim/src/llvm-13-update/amd64.amd64/tmp/usr/lib/libavl.so: undefined reference to libspl_assertf [--no-allow-shlib-undefined]
*** [zfsd.full] Error code 1

Fix this by adding libspl (where libspl_assertf lives) to zfsd's LIBADD.

(cherry picked from commit 9fae476669)
2021-08-31 21:05:52 +02:00
Ryan Moeller
d5a71c929d zfsd: Check for error from zpool_vdev_online
Onlining a vdev can fail. Log the error if it does.

Reviewed by:	mav, asomers
MFC after:	1 week
Sponsored by:	iXsystems, Inc.
Differential Revision:	https://reviews.freebsd.org/D30882

(cherry picked from commit 53b438b242)
2021-07-13 15:44:32 +00:00
Martin Matuska
804a060891 zfs: attach zpool_influxdb to build
From the zpool_influxdb.8 manual page:
  zpool_influxdb produces InfluxDB-line-protocol-compatible metrics from
  zpools.  Like the zpool command, zpool_influxdb reads the current pool
  status and statistics.  Unlike the zpool command which is intended for
  humans, zpool_influxdb formats the output in the InfluxDB line protocol.
  The expected use is as a plugin to a metrics collector or aggregator,
  such as Telegraf.

zpool_influxdb is installed into /usr/libexec/zfs/

Differential revision:	https://reviews.freebsd.org/D31094

(cherry picked from commit 48b4fe0503)
2021-07-10 12:26:42 +02:00
Emmanuel Vadot
9e4940840d pkgbase: Put dtrace in its own package
While dtrace is usefull some people might not want it.

Differential Revision:	https://reviews.freebsd.org/D30752
Sponsored by:	Diablotin Systems
2021-06-30 09:24:32 +02:00
Emmanuel Vadot
aeae670888 pkgbase: Move libicp in utilities
libicp is used by zdb zhack zinject zstream ztest libzpool.so.2 which
are all in FreeBSD-utilities.

Reviewed by:	bapt, emaste
Differential Revision:	https://reviews.freebsd.org/D29164
MFC after:	2 weeks
2021-06-30 09:24:29 +02:00
Domagoj Stolfa
1bf7ee1ab5 dtrace: fix an out of bound read and a NULL pointer increment
In dt_cc.c when the provider is an empty string, accessing
strlen(pdp->dtpd_provider) - 1 will result in a pdp->dtpd_provider[-1]
access.

Similarly, in dt_ident.c, if p2 is a NULL pointer, doing a p2++ on it is
undefined behaviour.

Reviewed by:	markj
Sponsored by:	Google

(cherry picked from commit a877965fa3)
2021-06-24 09:04:54 -04:00
Martin Matuska
25302a721f zfs: merge openzfs/zfs@9a865b7fb (zfs-2.1-release) into stable/13
Notable upstream pull request merges:
  #11904 libspl: implement atomics in terms of atomics

Obtained from:	OpenZFS
OpenZFS commit:	9a865b7fb7
2021-06-22 09:18:11 +02:00
Alan Somers
c0e72b2bc0 Delete obsolete Solaris compat files
These files have been unused ever since the OpenSolaris import

Sponsored by:	Axcient
Reviewed By:	freqlabs
Differential Revision: https://reviews.freebsd.org/D30371

(cherry picked from commit fc3ba3e9fa)
2021-06-17 12:40:00 -06:00
Martin Matuska
d940dcb757 zfs: unbreak stable/13 clang build on non-x86 archs after b0c251b0d
(direct commit)
2021-06-16 02:44:48 +02:00
Martin Matuska
b0c251b0de zfs: merge openzfs/zfs@c3b60eded (zfs-2.1-release) into stable/13
Notable upstream pull request merges:
  #12015 Replace zstreamdump with zstream link
  #12046 Improve scrub maxinflight_bytes math.
  #12052 FreeBSD: incorporate changes to the VFS_QUOTACTL(9) KPI
  #12072 Let zfs diff be more permissive
  #12091 libzfs: On FreeBSD, use MNT_NOWAIT with getfsstat
  #12104 Reminder to update boot code after zpool upgrade
  #12114 Introduce write-mostly sums
  #12125 Modernise all (most) remaining .TH manpages
  #12145 More aggsum optimizations
  #12149 Multiple man-pages: Move to appropriate section
  #12158 Re-embed multilist_t storage
  #12177 Livelist logic should handle dedup blkptrs
  #12196 Unify manpage makefiles, move pages to better sexions, revisit some
  #12212 Remove pool io kstats

Obtained from:	OpenZFS
OpenZFS commit:	c3b60ededa
OpenZFS tag:	zfs-2.1.0-rc7
2021-06-13 05:43:03 +02:00
Martin Matuska
04c4bd7f7b zfs: merge openzfs/zfs@7d9f3ef0e (zfs-2.1-release) into stable/13
Notable upstream pull request merges:
  #11710 Allow zfs to send replication streams with missing snapshots
  #11786 Ratelimit deadman zevents as with delay zevents
  #11813 Allow pool names that look like Solaris disk names
  #11822 Atomically check and set dropped zevent count
  #11822 Don't scale zfs_zevent_len_max by CPU count
  #11837 zfs get -p only outputs 3 columns if "clones" property is empty
  #11849 Use dsl_scan_setup_check() to setup a scrub
  #11861 Improvements to the 'compatibility' property
  #11862 cmd/zfs receive: allow dry-run (-n) to check property args
  #11864 receive: don't fail inheriting (-x) properties on wrong dataset type
  #11877 Combine zio caches if possible
  #11881 FreeBSD: use vnlru_free_vfsops if available
  #11883 FreeBSD: add support for lockless symlink lookup
  #11884 FreeBSD: add missing seqc write begin/end around zfs_acl_chown_setattr
  #11896 Fix crash in zio_done error reporting
  #11905 zfs-send(8): Restore sorting of flags
  #11926 FreeBSD: damage control racing .. lookups in face of mkdir/rmdir
  #11938 Fix AVX512BW Fletcher code on AVX512-but-not-BW machines
  #11966 Scale worker threads and taskqs with number of CPUs
  #11997 FreeBSD: Don't force xattr mount option
  #11997 FreeBSD: Use SET_ERROR to trace xattr name errors
  #11998 Simplify/fix dnode_move() for dn_zfetch
  #12003 FreeBSD: Initialize/destroy zp->z_lock
  #12010 Fix dRAID self-healing short columns
  #12033 Revert "Fix raw sends on encrypted datasets when copying back snapshots"
  #12040 Reinstate the old zpool read label logic as a fallback
  #12049 FreeBSD: avoid memory allocation in arc_prune_async
  #12061 Fix dRAID sequential resilver silent damage handling
  #12077 FreeBSD: Retry OCF ENOMEM errors.
  #12088 Propagate vdev state due to invalid label corruption
  #12097 FreeBSD: Update dataset_kstats for zvols in dev mode

Obtained from:	OpenZFS
OpenZFS commit:	7d9f3ef0ef
OpenZFS tag:	2.1.0-rc6
2021-06-08 17:01:18 +02:00
Mark Johnston
ce6fffd965 dtrace tests: Fix tst.system.d after ping/ping6 unification
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit d500a85e64)
2021-04-30 09:21:00 -04:00
Domagoj Stolfa
d6b6bd19e8 dtrace: Document the libdir, nolibs and syslibdir options
Differential Revision:	https://reviews.freebsd.org/D29541

(cherry picked from commit 7653f9317b)
2021-04-08 20:28:03 -04:00
Mark Johnston
e3b1b9d625 libctf: Adjust logic to match upstream after 410556f1f
No functional change intended.

Suggested by:	jrtc27

(cherry picked from commit 3c065eeaa7)
2021-04-03 11:12:09 -04:00
Domagoj Stolfa
cbadf77834 libctf: Fix an out-of-bounds read in ctf_lookup_by_name()
When prefixes such as struct, union, etc. are compared with the current
type (e.g. struct foo), a comparison is made with the prefix.  The code
currently assumes that every type is a valid C type with a prefix,
however at times, garbage ends up in this function causing an
unpredictable crash with DTrace due to the isspace(*p) call or
subsequent calls. An example that I've seen of this is the letter 's'
being passed in, comparing true with struct as the comparison size was
(q - p) == 1, but then we increment p with the length of "struct",
resulting in an out of bounds read.

Reviewed by:	markj
Differential Revision:	https://reviews.freebsd.org/D29435

(cherry picked from commit 410556f1f1)
2021-04-03 11:11:55 -04:00
Greg V
603f1c3da4 openzfs: attach pam_zfs_key to build
This PAM module allows unlocking encrypted user home datasets when
logging in (and changing passphrase when changing the account password),
see https://github.com/openzfs/zfs/pull/9903

Also supposed to unload the key when the last session for the user is
done, but there are EBUSY issues:
https://github.com/openzfs/zfs/issues/11222#issuecomment-731897858

Submitted by:	Greg V <greg_unrelenting.technology>
Reviewed by:	mm
Differential Revision:	https://reviews.freebsd.org/D28018

(cherry picked from commit ee21ee1572)
2021-03-10 02:57:42 +01:00
Ryan Moeller
16f5a4ea91 Install links for zpool feature compat aliases
The alias links were missed when this feature was introduced to the
FreeBSD build system in 10f57cb98f.

Reviewed by:	mm
Sponsored by:	iXsystems, Inc.
Differential Revision:	https://reviews.freebsd.org/D28925

(cherry picked from commit 2ae79aa362)
2021-03-10 02:56:46 +01:00
Martin Matuska
57b9b81894 zfs: merge OpenZFS master-9312e0fd1
Notable upstream changes:
  778869fa1 Fix reporting of mount progress
  e7adccf7f Disable use of hardware crypto offload drivers on FreeBSD
  03e02e5b5 Fix checksum errors not being counted on repeated repair
  64e0fe14f Restore FreeBSD resource usage accounting
  11f2e9a49 Fix panic if scrubbing after removing a slog device

(cherry picked from commit ba27dd8be8)
2021-03-10 02:53:32 +01:00
Martin Matuska
e295b9d9f5 zfs: bump version and install new share files
- bump version to 2.0.0-FreeBSD_gbf156c966
- install definition files for the new "-o compatibility" option
  to "zpool create"

MFC after:	2 weeks

(cherry picked from commit 10f57cb98f)
2021-03-10 02:26:35 +01:00
Martin Matuska
21b12f3e45 zfs: merge OpenZFS master-436ab35a5
- speed up writing to ZFS pools without ZIL devices (aa755b3)
- speed up importing ZFS pools (2d8f72d, a0e0199, cf0977a)
...

Reviewed by:		mjg (partial)
Tested by:		pho
Differential Revision:	https://reviews.freebsd.org/D28677

(cherry picked from commit 184c1b9439)
2021-03-10 02:24:58 +01:00
Martin Matuska
2126962573 zfs: restore FreeBSD resource usage accounting
With the switch to OpenZFS 2.0 the platform-dependent resource
usage accounting code got missing.

Patch author:	Ryan Moeller <freqlabs@FreeBSD.org>

Obtained from:	openzfs/zfs@64e0fe14ff
MFS after:	3 days

(direct commit)
2021-02-22 22:20:28 +01:00
Mark Johnston
d69677407e libdtrace: Trivial style fixes to force dt_lex.c to be regenerated
After commit 8ba333e02e ("libdtrace: Stop relying on lex
compatibility"), there have been several reports of incremental
buildworlds failing since make does not know that dt_lex.c needs to be
regenerated, and I want to avoid this when merging to stable/13.

MFC with:	8ba333e02e

(cherry picked from commit 150fc89a12)
2021-02-20 11:39:53 -05:00
Mark Johnston
af80731179 libdtrace: Stop relying on lex compatibility
It does not appear to be required, and as of commit 6b7e592c21
("lex: Do not let input() return 0 when end-of-file is reached") it
causes input to return 0 instead of EOF when end-of-input is reached.

PR:		253440
Sponsored by:	The FreeBSD Foundation

(cherry picked from commit 8ba333e02e)
2021-02-19 21:39:51 -05:00
Kyle Evans
ed05bfceb8 build: remove LIBPTHREAD/LIBTHR build options
WITHOUT_LIBTHR has been broken for a little over five years now, since the
xz 5.2.0 update introduced a hard liblzma dependency on libthr, and building
a useful system without threading support is becoming increasingly more
difficult.

Additionally, in the five plus years that it's been broken more reverse
dependencies have cropped up in libzstd, libsqlite3, and libcrypto (among
others) that make it more and more difficult to reconcile the effort needed
to fix these options.

Remove the broken options.

PR:		252760

(cherry picked from commit 123ae3045d)
(cherry picked from commit 251a6ddfbd)
2021-01-28 19:21:46 -06:00
Ryan Libby
c14e17a49c dtrace tests: fix prototypes for gcc build
- quiet -Wstrict-prototypes
 - provide prototypes for weak aliases

Reviewed by:	markj
Sponsored by:	Dell EMC Isilon
Differential Revision:	https://reviews.freebsd.org/D28036
2021-01-10 21:53:15 -08:00