Home - Waterfall Grid T-Grid Console Builders Recent Builds Buildslaves Changesources - JSON API - About

Console View


Tags: Architectures Platforms default
Legend:   Passed Failed Warnings Failed Again Running Exception Offline No data

Architectures Platforms default
Rich Ercolani
Fix importing with symlinks

It turns out that symlinks are heavily used on Linux in /dev/disk.
So let's allow importing from them.

Signed-off-by: Rich Ercolani <rincebrain@gmail.com>

Pull-request: #12238 part 1/1
Attila Fülöp
Fix gcc 11 false positive diagnostic warnings

Signed-off-by: Attila Fülöp <attila@fueloep.org>
Closes #12130
Closes #12188

Pull-request: #12237 part 1/1
Rich Ercolani
Annotate dprintf as printf-like

To minimize the chance of incorrect usage, both past and future.

Signed-off-by: Rich Ercolani <rincebrain@gmail.com>

Pull-request: #12233 part 34/34
Rich Ercolani
Fix build with KASAN

The stock zstd code expects some helpers from ASAN if present.
This works fine in userland, but in kernel, KASAN also gets detected,
and lacks those helpers. So let's make some empty substitutes for
that case.

Signed-off-by: Rich Ercolani <rincebrain@gmail.com>

Pull-request: #12232 part 1/1
Rich Ercolani
Fix build with KASAN

The stock zstd code expects some helpers from ASAN if present.
This works fine in userland, but in kernel, KASAN also gets detected,
and lacks those helpers. So let's make some empty substitutes for
that case.

Signed-off-by: Rich Ercolani <rincebrain@gmail.com>

Pull-request: #12232 part 1/1
Rich Ercolani
Fix build with KASAN

The stock zstd code expects some helpers from ASAN if ADDRESS_SANITIZER
is defined. This works fine in userland, but in kernel, KASAN also
defines that but not those helpers. So let's make some empty
substitutes for that case.

Signed-off-by: Rich Ercolani <rincebrain@gmail.com>

Pull-request: #12232 part 1/1
наб
systemd: import: expand $ZPOOL_IMPORT_OPTS correctly

Turns out $ZPOOL_IMPORT_OPTS expands in a shell-like fashion,
yielding 'import' '-aN' '-o' 'cachefile=none' for an unset variable,
and 'import' '-aN' '-o' 'cachefile=none' 'word1' 'word2' for a
white-spaced one, but ${ZPOOL_IMPORT_OPTS} expands like "${Z_I_O}"
would in a shell, yielding 'import' '-aN' '-o' 'cachefile=none' ''
(empty) and 'import' '-aN' '-o' 'cachefile=none' 'word1 word2' (spaced)

Fixes eec5ba113e1d285d445333079a3e8184872ad00a "dracut: 90zfs: respect
zfs_force=1 on systemd systems"
Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>

Pull-request: #12231 part 1/1
Jeff Dike
cache_013_pos.ksh: various cleanups

Removed the dropcache.run runfile and added this test to linux.run.
This made is_linux test unnecessary.

Hard-coded sizes have been replaced by sizes scaled to the test
machine's memory.

Uses of set_tunable32 have been replaced by set_tunable64.

The test used to fail if there were any pools already in existence.
This was done to help the reproducability of the test.  Some people
pointed out that this made the test unrunnable on systems with root
pools.  I couldn't get this to fully succeed with other pools present,
so I made it use log_untested instead of log_fail.

Signed-off-by: Jeff Dike <jdike@akamai.com>

Pull-request: #12228 part 4/4
jdike
Merge branch 'openzfs:master' into master

Pull-request: #12228 part 3/4
Jeff Dike
Merge branch 'master' of https://github.com/zfsonlinux/zfs

Pull-request: #12228 part 2/4
Jeff Dike
Add dropcache test

This tests that ZFS reacts as expected to
    echo 3 > /proc/sys/vm/drop_caches
and drops the ARC size down to its minimum.

Signed-off-by: Jeff Dike <jdike@akamai.com>

Pull-request: #12228 part 1/4
Antonio Russo
Reinstate "Add zstd support to zfs"

This commit reverts 1777a1dff, transposed to account for the
un-consolidation into dbuf_alloc_arcbuf_from_arcbuf.

Pull-request: #12227 part 3/3
Antonio Russo
Revert "Consolidate arc_buf allocation checks"

This reverts commit 13fac09868b4e4e08cc3ef7b937ac277c1c407b1.

Pull-request: #12227 part 2/3
Antonio Russo
Partially revert "Add zstd support to zfs"

This commit reverts 10b3c7f5e4 within dbuf_alloc_arcbuf_from_arcbuf.

Pull-request: #12227 part 1/3
Matthew Ahrens
raidz expansion feature

This feature allows disks to be added one at a time to a RAID-Z group,
expanding its capacity incrementally.  This feature is especially useful
for small pools (typically with only one RAID-Z group), where there
isn't sufficient hardware to add capacity by adding a whole new RAID-Z
group (typically doubling the number of disks).

== Initiating expansion ==

A new device (disk) can be attached to an existing RAIDZ vdev, by
running `zpool attach POOL raidzP-N NEW_DEVICE`, e.g. `zpool attach tank
raidz2-0 sda`.  The new device will become part of the RAIDZ group.  A
"raidz expansion" will be initiated, and the new device will contribute
additional space to the RAIDZ group once the expansion completes.

The `feature@raidz_expansion` on-disk feature flag must be `enabled` to
initiate an expansion, and it remains `active` for the life of the pool.
In other words, pools with expanded RAIDZ vdevs can not be imported by
older releases of the ZFS software.

== During expansion ==

The expansion entails reading all allocated space from existing disks in
the RAIDZ group, and rewriting it to the new disks in the RAIDZ group
(including the newly added device).

The expansion progress can be monitored with `zpool status`.

Data redundancy is maintained during (and after) the expansion.  If a
disk fails while the expansion is in progress, the expansion pauses
until the health of the RAIDZ vdev is restored (e.g. by replacing the
failed disk and waiting for reconstruction to complete).

The pool remains accessible during expansion.  Following a reboot or
export/import, the expansion resumes where it left off.

== After expansion ==

When the expansion completes, the additional space is avalable for use,
and is reflected in the `available` zfs property (as seen in `zfs list`,
`df`, etc).

Expansion does not change the number of failures that can be tolerated
without data loss (e.g. a RAIDZ2 is still a RAIDZ2 even after
expansion).

A RAIDZ vdev can be expanded multiple times.

After the expansion completes, old blocks remain with their old
data-to-parity ratio (e.g. 5-wide RAIDZ2, has 3 data to 2 parity), but
distributed among the larger set of disks.  New blocks will be written
with the new data-to-parity ratio (e.g. a 5-wide RAIDZ2 which has been
expanded once to 6-wide, has 4 data to 2 parity).  However, the RAIDZ
vdev's "assumed parity ratio" does not change, so slightly less space
than is expected may be reported for newly-written blocks, according to
`zfs list`, `df`, `ls -s`, and similar tools.

Sponsored-by: The FreeBSD Foundation
Contributions-by: Fedor Uporov <fuporov.vstack@gmail.com>
Contributions-by: Stuart Maybee <stuart.maybee@comcast.net>
Contributions-by: Thorsten Behrens <tbehrens@outlook.com>
Contributions-by: Fmstrat <nospam@nowsci.com>

Pull-request: #12225 part 3/3
Matthew Ahrens
disable zstd mempool

Pull-request: #12225 part 2/3
Matthew Ahrens
fix #11459

Pull-request: #12225 part 1/3
Ryan Moeller
ZED: Match added disk by pool/vdev GUID if found

This enables ZED to auto-online vdevs that are not wholedisk managed by
ZFS.

Signed-off-by: Ryan Moeller <ryan@iXsystems.com>

Pull-request: #12217 part 1/1
Jonathan Ringer
Add git rev to version when building from git

Signed-off-by: Jonathan Ringer <jonringer117@gmail.com>

Pull-request: #12213 part 2/2
Jonathan Ringer
Use pre release suffix

The usage of the X.Y.99 tag to track the master branch
looks very similar to a stable release, and some package
repositories have packaged it as so.

https://repology.org/project/zfs/versions

The use of the `pre` suffix is to help distinguish master
branch as a tag which is not intended to be treated as
a stable release.

Signed-off-by: Jonathan Ringer <jonringer117@gmail.com>

Pull-request: #12213 part 1/2
Jonathan Ringer
Add git rev to version when building from git

Pull-request: #12213 part 2/2
Jonathan Ringer
Use pre release suffix

The usage of the X.Y.99 tag to track the master branch
looks very similar to a stable release, and some package
repositories have packaged it as so.

https://repology.org/project/zfs/versions

The use of the `pre` suffix is to help distinguish master
branch as a tag which is not intended to be treated as
a stable release.

Signed-off-by: Jonathan Ringer <jonringer117@gmail.com>

Pull-request: #12213 part 1/2
jxdking
Use deferred free mechanism for autotrim

Current autotrim has very high overhead:
1. Select a metaslab that needs to be trimmed, and disable it.
2. Push the issued zio_trim() into txg sync pipline by calling
txg_wait_synced(). Wait for the txg (tx_open_txg + 2) to be synced.
3. Enable the metaslab.

In this patch, I added ms_trimming, ms_trimmed,
ms_trimmed_defer[2] to metaslab to track autotrim process.
Here are the steps after the patch:
1. Select a metaslab that needs to be trimmed, only grab the ms_lock.
2. If the metaslab is loaded, move all the ms_trim ranges from
ms_allocatable to ms_trimming, so that these trimming ranges will not
be allocated. Then release ms_lock.
3. After issuing all the zio_trim(), move all the trimming ranges
from ms_trimming to ms_trimmed.
4. The trimmed ranges will go through ms_trimmed_defer[2], after that,
the trimmed ranges will be released back to ms_allocatable.

Benefits:
No metaslab_disable(), no txg_wait_synced().
txg_wait_synced() cause short-lived txgs, and fragmentation.

Signed-off-by: jxdking <lostking2008@hotmail.com>

Pull-request: #12205 part 1/1
jxdking
Use deferred free mechanism for autotrim

Current autotrim has very high overhead:
1. Select a metaslab that needs to be trimmed, and disable it.
2. Push the issued zio_trim() into txg sync pipline by calling
txg_wait_synced(). Wait for the txg (tx_open_txg + 2) to be synced.
3. Enable the metaslab.

In this patch, I added ms_trimming, ms_trimmed,
ms_trimmed_defer[2] to metaslab to track autotrim process.
Here are the steps after the patch:
1. Select a metaslab that needs to be trimmed, only grab the ms_lock.
2. If the metaslab is loaded, move all the ms_trim ranges from
ms_allocatable to ms_trimming, so that these trimming ranges will not
be allocated. Then release ms_lock.
3. After issuing all the zio_trim(), move all the trimming ranges
from ms_trimming to ms_trimmed.
4. The trimmed ranges will go through ms_trimmed_defer[2], after that,
the trimmed ranges will be released back to ms_allocatable.

Benefits:
No metaslab_disable(), no txg_wait_synced().
txg_wait_synced() cause short-lived txgs, and fragmentation.

Signed-off-by: jxdking <lostking2008@hotmail.com>

Pull-request: #12205 part 1/1
jxdking
Use deferred free mechanism for autotrim

Current autotrim has very high overhead:
1. Select a metaslab that needs to be trimmed, and disable it.
2. Push the issued zio_trim() into txg sync pipline by calling
txg_wait_synced(). Wait for the txg (tx_open_txg + 2) to be synced.
3. Enable the metaslab.

In this patch, I added ms_trimming, ms_trimmed,
ms_trimmed_defer[2] to metaslab to track autotrim process.
Here are the steps after the patch:
1. Select a metaslab that needs to be trimmed, only grab the ms_lock.
2. If the metaslab is loaded, move all the ms_trim ranges from
ms_allocatable to ms_trimming, so that these trimming ranges will not
be allocated. Then release ms_lock.
3. After issuing all the zio_trim(), move all the trimming ranges
from ms_trimming to ms_trimmed.
4. The trimmed ranges will go through ms_trimmed_defer[2], after that,
the trimmed ranges will be released back to ms_allocatable.

Benefits:
No metaslab_disable(), no txg_wait_synced().
txg_wait_synced() cause short-lived txgs, and fragmentation.

Signed-off-by: jxdking <lostking2008@hotmail.com>

Pull-request: #12205 part 1/1
jxdking
Use deferred free mechanism for autotrim

Current autotrim has very high overhead:
1. Select a metaslab that needs to be trimmed, and disable it.
2. Push the issued zio_trim() into txg sync pipline by calling
txg_wait_synced(). Wait for the txg (tx_open_txg + 2) to be synced.
3. Enable the metaslab.

In this patch, I added ms_trimming, ms_trimmed,
ms_trimmed_defer[2] to metaslab to track autotrim process.
Here are the steps after the patch:
1. Select a metaslab that needs to be trimmed, only grab the ms_lock.
2. If the metaslab is loaded, move all the ms_trim ranges from
ms_allocatable to ms_trimming, so that these trimming ranges will not
be allocated. Then release ms_lock.
3. After issuing all the zio_trim(), move all the trimming ranges
from ms_trimming to ms_trimmed.
4. The trimmed ranges will go through ms_trimmed_defer[2], after that,
the trimmed ranges will be released back to ms_allocatable.

Benefits:
No metaslab_disable(), no txg_wait_synced().
txg_wait_synced() cause short-lived txgs, and fragmentation.

Signed-off-by: jxdking <lostking2008@hotmail.com>

Pull-request: #12205 part 1/1
  • Debian 8 arm (BUILD): cloning zfs -  stdio
  • Kernel.org Built-in x86_64 (BUILD): cloning zfs -  stdio
jxdking
Use deferred free mechanism for autotrim

Current autotrim has very high overhead:
1. Select a metaslab that needs to be trimmed, and disable it.
2. Push the issued zio_trim() into txg sync pipline by calling
txg_wait_synced(). Wait for the txg (tx_open_txg + 2) to be synced.
3. Enable the metaslab.

In this patch, I added ms_trimming, ms_trimmed,
ms_trimmed_defer[2] to metaslab to track autotrim process.
Here are the steps after the patch:
1. Select a metaslab that needs to be trimmed, only grab the ms_lock.
2. If the metaslab is loaded, move all the ms_trim ranges from
ms_allocatable to ms_trimming, so that these trimming ranges will not
be allocated. Then release ms_lock.
3. After issuing all the zio_trim(), move all the trimming ranges
from ms_trimming to ms_trimmed.
4. The trimmed ranges will go through ms_trimmed_defer[2], after that,
the trimmed ranges will be released back to ms_allocatable.

Benefits:
No metaslab_disable(), no txg_wait_synced().
txg_wait_synced() cause short-lived txgs, and fragmentation.

Signed-off-by: jxdking <lostking2008@hotmail.com>

Pull-request: #12205 part 1/1
наб
Replace ARGSUSED with proper warnings

Passes (except for one zstd line) Linux on clang 13 and GCC 10.2.1-6
and FreeBSD 13 (clang 11) with
-Wall -Wextra -Wno-sign-compare -Wno-missing-field-initializers -Werror

Module sources with ARGSUSED also grew a -Werror=unused-parameter

Also, remove libefi's efi_type(): its only user is also rmformat,
what it returns is only remotely relevant on Solaris, it never had any
code, and its return value is just wrong

Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Closes #12167

Pull-request: #12201 part 5/5
наб
Remove NOTE(CONSTCOND) and note.h

These were mostly used to annotate do {} while(0)s

Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>

Pull-request: #12201 part 4/5
наб
Normalise /*FALLTHR{OUGH,U}*/

Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>

Pull-request: #12201 part 3/5
наб
Prune /*NOTREACHED*/

This includes a simplification of mkbusy and format correctness in zhack
and ztest

Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>

Pull-request: #12201 part 2/5
наб
Replace /*PRINTFLIKEn*/ with attribute(printf)

Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>

Pull-request: #12201 part 1/5
Georgy Yakovlev
zpool-scrub.8: add PERIODIC SCRUB section

Signed-off-by: Georgy Yakovlev <gyakovlev@gentoo.org>

Pull-request: #12193 part 2/2
Georgy Yakovlev
systemd: add weekly and monthly scrub timers

timers can be enabled as follows:

systemctl enable zfs-scrub-weekly@rpool.timer --now
systemctl enable zfs-scrub-monthly@datapool.timer --now

Each timer will pull in zfs-scrub@${poolname}.service, which is not
schedule-specific.

Signed-off-by: Georgy Yakovlev <gyakovlev@gentoo.org>

Pull-request: #12193 part 1/2
Tony Hutter
Tag zfs-2.0.5

META file and changelog updated.

TEST_ZIMPORT_SKIP="yes"

Signed-off-by: Tony Hutter <hutter2@llnl.gov>

Pull-request: #12182 part 92/92
Alexander Motin
Use wmsum for arc, abd, dbuf and zfetch statistics.

wmsum was designed exactly for cases like these with many updates
and rare reads.  It allows to completely avoid atomic operations on
congested global variables.

Signed-off-by: Alexander Motin <mav@FreeBSD.org>
Sponsored-By: iXsystems, Inc.

Pull-request: #12172 part 1/1
Tony Hutter
Rescan enclosure sysfs path on import

When you create a pool, zfs writes vd->vdev_enc_sysfs_path with the
enclosure sysfs path to the fault LEDs, like:

  vdev_enc_sysfs_path = /sys/class/enclosure/0:0:1:0/SLOT8

However, this enclosure path doesn't get updated on successive imports
even if enclosure path to the disk changes.  This patch fixes the issue.

The largest part of this patch is moving for_each_vdev_vdev() and
associated function from zpool_iter.c to libzutil.  This was needed
to make those functions visible to the cache import codepath for
sysfs path re-scan.

Signed-off-by: Tony Hutter <hutter2@llnl.gov>
Fixes: #11950

Pull-request: #12095 part 1/1
Jitendra Patidar
ZFS fix to make xattr=sa logging to ZIL on xattr create/remove/update.

As such, there are no specific synchronous semantics defined for
the xattrs. But for xattr=on, it does log to ZIL and zil_commit() is
done, if sync=always is set on dataset. This provides sync semantics
for xattr=on with sync=always set on dataset.
For the xattr=sa implementation, it doesn't log to ZIL, so, even with
sync=always, xattrs are not guaranteed to be synced before xattr call
returns to caller. so xattr can be lost if system crash happens, before
txg carrying xattr transaction is synced.

This change makes xattr=sa logging to ZIL on xattr create/remove/update
and xattrs are synced to ZIL (zil_commit() done) for sync=always.
This make xattr=sa behavior similar to xattr=on.

This could also provide basic framework to support implementing sync
semantics at file level for xattr=sa.

Signed-off-by: Jitendra Patidar <jitendra.patidar@nutanix.com>
Closes #8768

Pull-request: #9078 part 1/1
Jitendra Patidar
ZFS fix to make xattr=sa logging to ZIL on xattr create/remove/update.

As such, there are no specific synchronous semantics defined for
the xattrs. But for xattr=on, it does log to ZIL and zil_commit() is
done, if sync=always is set on dataset. This provides sync semantics
for xattr=on with sync=always set on dataset.
For the xattr=sa implementation, it doesn't log to ZIL, so, even with
sync=always, xattrs are not guaranteed to be synced before xattr call
returns to caller. so xattr can be lost if system crash happens, before
txg carrying xattr transaction is synced.

This change makes xattr=sa logging to ZIL on xattr create/remove/update
and xattrs are synced to ZIL (zil_commit() done) for sync=always.
This make xattr=sa behavior similar to xattr=on.

This could also provide basic framework to support implementing sync
semantics at file level for xattr=sa.

Signed-off-by: Jitendra Patidar <jitendra.patidar@nutanix.com>
Closes #8768

Pull-request: #9078 part 1/1
Jitendra Patidar
ZFS fix to make xattr=sa logging to ZIL on xattr create/remove/update.

As such, there are no specific synchronous semantics defined for
the xattrs. But for xattr=on, it does log to ZIL and zil_commit() is
done, if sync=always is set on dataset. This provides sync semantics
for xattr=on with sync=always set on dataset.
For the xattr=sa implementation, it doesn't log to ZIL, so, even with
sync=always, xattrs are not guaranteed to be synced before xattr call
returns to caller. so xattr can be lost if system crash happens, before
txg carrying xattr transaction is synced.

This change makes xattr=sa logging to ZIL on xattr create/remove/update
and xattrs are synced to ZIL (zil_commit() done) for sync=always.
This make xattr=sa behavior similar to xattr=on.

This could also provide basic framework to support implementing sync
semantics at file level for xattr=sa.

Signed-off-by: Jitendra Patidar <jitendra.patidar@nutanix.com>
Closes #8768

Pull-request: #9078 part 1/1