Skip to content

zfs-2.2.8 patchset #17392

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 57 commits into from
Jun 12, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
5c51f8f
config: fix dequeue_signal check for kernels <4.20
robn Oct 19, 2024
ff7d051
Fix compile-time warnings caused by duplicate struct typedefs (#16880)
robn Dec 18, 2024
36225ba
linux/uio: remove "skip" offset for UIO_ITER
robn May 11, 2025
aa6ceb7
Linux 6.14: dops->d_revalidate now takes four args
robn Feb 5, 2025
8da379e
Linux 6.14: BLK_MQ_F_SHOULD_MERGE was removed
robn Feb 5, 2025
8ff37c6
linux: zvols: correctly detect flush requests
Fabian-Gruenbichler Mar 12, 2025
9631ecf
Linux: Fix zfs_prune panics v2
snajpa Mar 25, 2025
8d19d97
Use simple folio migration function
tstabrawa Nov 3, 2024
c88e5a3
Linux 6.0 compat: Check for migratepage VFS
tonyhutter Apr 11, 2025
20bf8c6
Linux: Stop using NR_FILE_PAGES for ARC scaling
amotin May 14, 2025
b144b16
Fix 2 bugs in non-raw send with encryption
gamanakis May 19, 2025
050517c
icp: Use explicit_memset() exclusively in gcm_clear_ctx()
ryao May 19, 2025
3f94332
Linux 6.15: mkdir now returns struct dentry *
robn Apr 4, 2025
3a84c63
Linux 6.2/6.15: del_timer_sync() renamed to timer_delete_sync()
robn Apr 8, 2025
827fd20
dmu_objset_hold_flags() should call dsl_dataset_rele_flags() on error
ryao May 20, 2025
be72364
ARC: Avoid overflows in arc_evict_adj() (#17255)
amotin May 6, 2025
e665098
CI: Automate some GitHub PR status labels manipulations
amotin Nov 5, 2024
5de9d00
CI: Add FreeBSD 14.2 RELEASE+STABLE builds
behlendorf Dec 17, 2024
e7876b0
CI: Fix FreeBSD 13.4 STABLE build
mcmilk Dec 19, 2024
6a91dd3
ZTS: add centos stream10 (#16904)
hanthor Jan 2, 2025
3587fc6
Add 'zfs-qemu-packages' workflow for RPM building
tonyhutter Mar 5, 2025
e6463a6
CI: Remove FreeBSD 13.3 and 14.1 tests (#17162)
amotin Mar 21, 2025
7a00807
runners: Fix zfs-release RPM creation (#17173)
tonyhutter Mar 26, 2025
bc01722
runners: Fix tarball build for zfs-qemu-packages workflow (#17158)
tonyhutter Mar 26, 2025
d122a9f
CI: Add Fedora 42 runner (#17249)
tonyhutter Apr 17, 2025
2281350
ZTS: Update FreeBSD version numbers
mcmilk Apr 23, 2025
254b6f3
ZTS: Use Ubuntu default url for cloud-image
mcmilk Apr 28, 2025
ebab942
ZTS: Optimize KSM on Linux and remove it for FreeBSD
mcmilk Apr 29, 2025
0b742a9
runners: Add option to install custom kernel on Fedora
tonyhutter May 13, 2025
b86e4bd
Add Quality Assurance to pull request template
ryao May 20, 2025
92ae463
fix: block incompatible kernel from being installed
tleydxdy Nov 20, 2024
f86e714
Support for cross-compiling kernel modules
n0-1 Jan 6, 2025
3b58dd5
RPM: Hold back incompatible kernel packages on Fedora
tonyhutter Apr 30, 2025
c4f7df8
ZTS: Remove non-standard awk hex numbers usage
amotin Dec 20, 2024
b800ad8
Fix zoneid when USER_NS is disabled
Wraithh Nov 29, 2023
3d087fd
Use <fcntl.h> instead of <sys/fcntl.h>
thesamesam Nov 7, 2024
79cbdb3
contrib/initramfs: use LVM autoactivation for activating VGs (#17125)
frwbr Apr 1, 2025
dcabac7
debian: Add libtirpc-dev dependency (#17220)
tonyhutter Apr 8, 2025
81c62bc
GCC 15: Fix unterminated-string-initialization (#17244)
tonyhutter Apr 16, 2025
0765d24
Linux 6.13 compat: META (#17098)
tonyhutter Feb 27, 2025
5b93750
Linux 6.14 compat: META (#17098) (#17172)
tonyhutter Mar 25, 2025
93af497
[zfs-2.2.8] GCC: Fix array subscript check
tonyhutter May 27, 2025
0002367
ZTS: Stop zpool_status tests from spamming stdout (#17292)
tonyhutter May 2, 2025
c81e37f
[zfs-2.2.8] Revert "vdev_disk: default to classic submission for 2.2.x"
tonyhutter May 29, 2025
d92827b
Linux 6.15 compat: META
tonyhutter May 28, 2025
c1848f7
Linux build: always use objtool
AttilaFueloep May 30, 2025
50a027f
CI: Retire Ubuntu 20.04 builder
behlendorf May 30, 2025
564b641
ZTS: Add AlmaLinux 10
mcmilk May 30, 2025
12f1508
ZTS: Enable io_uring support on el9/el10
mcmilk May 30, 2025
b7e24dc
CI: Retire Fedora 40 builder
behlendorf May 31, 2025
0a73e91
Block remap for cloned blocks on device removal
amotin Mar 26, 2025
4ee1368
cred: properly pass and test creds on other threads (#17273)
robn Apr 29, 2025
023a432
ZTS: testing for leaked key mappings in encrypted non-raw send
gamanakis May 24, 2025
d0ea4c6
linux/zvol_os: don't try to set disk ops if alloc fails
robn May 30, 2025
b608b95
Linux build: silence objtool warnings
AttilaFueloep Jun 5, 2025
21ad644
ZTS: Enable io_uring on CentOS Stream 9 and 10 also
mcmilk Jun 9, 2025
3e4a3e1
Tag zfs-2.2.8
tonyhutter May 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ https://openzfs.github.io/openzfs-docs/Developer%20Resources/Buildbot%20Options.
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Performance enhancement (non-breaking change which improves efficiency)
- [ ] Code cleanup (non-breaking change which makes code smaller or more readable)
- [ ] Quality assurance (non-breaking change which makes the code more robust against bugs)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)
- [ ] Library ABI change (libzfs, libzfs\_core, libnvpair, libuutil and libzfsbootenv)
- [ ] Documentation (a change to man pages or other documentation)
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/checkstyle.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
run: |
# for x in lxd core20 snapd; do sudo snap remove $x; done
sudo apt-get purge -y snapd google-chrome-stable firefox
ONLY_DEPS=1 .github/workflows/scripts/qemu-3-deps.sh ubuntu22
ONLY_DEPS=1 .github/workflows/scripts/qemu-3-deps-vm.sh ubuntu22
sudo apt-get install -y cppcheck devscripts mandoc pax-utils shellcheck
sudo python -m pipx install --quiet flake8
# confirm that the tools are installed
Expand Down
49 changes: 49 additions & 0 deletions .github/workflows/labels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: labels

on:
pull_request_target:
types: [ opened, synchronize, reopened, converted_to_draft, ready_for_review ]

permissions:
pull-requests: write

jobs:
open:
runs-on: ubuntu-latest
if: ${{ github.event.action == 'opened' && github.event.pull_request.draft }}
steps:
- env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ISSUE: ${{ github.event.pull_request.html_url }}
run: |
gh pr edit $ISSUE --add-label "Status: Work in Progress"

push:
runs-on: ubuntu-latest
if: ${{ github.event.action == 'synchronize' || github.event.action == 'reopened' }}
steps:
- env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ISSUE: ${{ github.event.pull_request.html_url }}
run: |
gh pr edit $ISSUE --remove-label "Status: Accepted,Status: Inactive,Status: Revision Needed,Status: Stale"

draft:
runs-on: ubuntu-latest
if: ${{ github.event.action == 'converted_to_draft' }}
steps:
- env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ISSUE: ${{ github.event.pull_request.html_url }}
run: |
gh pr edit $ISSUE --remove-label "Status: Accepted,Status: Code Review Needed,Status: Inactive,Status: Revision Needed,Status: Stale" --add-label "Status: Work in Progress"

rfr:
runs-on: ubuntu-latest
if: ${{ github.event.action == 'ready_for_review' }}
steps:
- env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ISSUE: ${{ github.event.pull_request.html_url }}
run: |
gh pr edit $ISSUE --remove-label "Status: Accepted,Status: Inactive,Status: Revision Needed,Status: Stale,Status: Work in Progress" --add-label "Status: Code Review Needed"
1 change: 1 addition & 0 deletions .github/workflows/scripts/generate-ci-type.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
Patterns of files that are considered to trigger full CI.
"""
FULL_RUN_REGEX = list(map(re.compile, [
r'\.github/workflows/scripts/.*',
r'cmd.*',
r'configs/.*',
r'META',
Expand Down
44 changes: 9 additions & 35 deletions .github/workflows/scripts/qemu-1-setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,36 +10,12 @@ set -eu
export DEBIAN_FRONTEND="noninteractive"
sudo apt-get -y update
sudo apt-get install -y axel cloud-image-utils daemonize guestfs-tools \
ksmtuned virt-manager linux-modules-extra-$(uname -r) zfsutils-linux
virt-manager linux-modules-extra-$(uname -r) zfsutils-linux

# generate ssh keys
rm -f ~/.ssh/id_ed25519
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -q -N ""

# we expect RAM shortage
cat << EOF | sudo tee /etc/ksmtuned.conf > /dev/null
# /etc/ksmtuned.conf - Configuration file for ksmtuned
# https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7/html/virtualization_tuning_and_optimization_guide/chap-ksm
KSM_MONITOR_INTERVAL=60

# Millisecond sleep between ksm scans for 16Gb server.
# Smaller servers sleep more, bigger sleep less.
KSM_SLEEP_MSEC=30

KSM_NPAGES_BOOST=0
KSM_NPAGES_DECAY=0
KSM_NPAGES_MIN=1000
KSM_NPAGES_MAX=25000

KSM_THRES_COEF=80
KSM_THRES_CONST=8192

LOGFILE=/var/log/ksmtuned.log
DEBUG=1
EOF
sudo systemctl restart ksm
sudo systemctl restart ksmtuned

# not needed
sudo systemctl stop docker.socket
sudo systemctl stop multipathd.socket
Expand All @@ -65,16 +41,14 @@ $DISK
sync
sleep 1

# swap with same size as RAM
# swap with same size as RAM (16GiB)
sudo mkswap $DISK-part1
sudo swapon $DISK-part1

# 60GB data disk
# JBOD 2xdisk for OpenZFS storage (test vm's)
SSD1="$DISK-part2"

# 10GB data disk on ext4
sudo fallocate -l 10G /test.ssd1
SSD2=$(sudo losetup -b 4096 -f /test.ssd1 --show)
sudo fallocate -l 12G /test.ssd2
SSD2=$(sudo losetup -b 4096 -f /test.ssd2 --show)

# adjust zfs module parameter and create pool
exec 1>/dev/null
Expand All @@ -83,11 +57,11 @@ ARC_MAX=$((1024*1024*512))
echo $ARC_MIN | sudo tee /sys/module/zfs/parameters/zfs_arc_min
echo $ARC_MAX | sudo tee /sys/module/zfs/parameters/zfs_arc_max
echo 1 | sudo tee /sys/module/zfs/parameters/zvol_use_blk_mq
sudo zpool create -f -o ashift=12 zpool $SSD1 $SSD2 \
-O relatime=off -O atime=off -O xattr=sa -O compression=lz4 \
-O mountpoint=/mnt/tests
sudo zpool create -f -o ashift=12 zpool $SSD1 $SSD2 -O relatime=off \
-O atime=off -O xattr=sa -O compression=lz4 -O sync=disabled \
-O redundant_metadata=none -O mountpoint=/mnt/tests

# no need for some scheduler
for i in /sys/block/s*/queue/scheduler; do
echo "none" | sudo tee $i > /dev/null
echo "none" | sudo tee $i
done
93 changes: 61 additions & 32 deletions .github/workflows/scripts/qemu-2-start.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ OSv=$OS

# compressed with .zst extension
REPO="https://github.com/mcmilk/openzfs-freebsd-images"
FREEBSD="$REPO/releases/download/v2024-10-05"
FREEBSD="$REPO/releases/download/v2025-04-13"
URLzs=""

# Ubuntu mirrors
#UBMIRROR="https://cloud-images.ubuntu.com"
UBMIRROR="https://cloud-images.ubuntu.com"
#UBMIRROR="https://mirrors.cloud.tencent.com/ubuntu-cloud-images"
UBMIRROR="https://mirror.citrahost.com/ubuntu-cloud-images"
#UBMIRROR="https://mirror.citrahost.com/ubuntu-cloud-images"

# default nic model for vm's
NIC="virtio"
Expand All @@ -34,11 +34,20 @@ case "$OS" in
OSNAME="AlmaLinux 9"
URL="https://repo.almalinux.org/almalinux/9/cloud/x86_64/images/AlmaLinux-9-GenericCloud-latest.x86_64.qcow2"
;;
almalinux10)
OSNAME="AlmaLinux 10"
OSv="almalinux9"
URL="https://repo.almalinux.org/almalinux/10/cloud/x86_64/images/AlmaLinux-10-GenericCloud-latest.x86_64.qcow2"
;;
archlinux)
OSNAME="Archlinux"
URL="https://geo.mirror.pkgbuild.com/images/latest/Arch-Linux-x86_64-cloudimg.qcow2"
# dns sometimes fails with that url :/
echo "89.187.191.12 geo.mirror.pkgbuild.com" | sudo tee /etc/hosts > /dev/null
;;
centos-stream10)
OSNAME="CentOS Stream 10"
# TODO: #16903 Overwrite OSv to stream9 for virt-install until it's added to osinfo
OSv="centos-stream9"
URL="https://cloud.centos.org/centos/10-stream/x86_64/images/CentOS-Stream-GenericCloud-10-latest.x86_64.qcow2"
;;
centos-stream9)
OSNAME="CentOS Stream 9"
Expand All @@ -52,22 +61,15 @@ case "$OS" in
OSNAME="Debian 12"
URL="https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2"
;;
fedora40)
OSNAME="Fedora 40"
OSv="fedora-unknown"
URL="https://download.fedoraproject.org/pub/fedora/linux/releases/40/Cloud/x86_64/images/Fedora-Cloud-Base-Generic.x86_64-40-1.14.qcow2"
;;
fedora41)
OSNAME="Fedora 41"
OSv="fedora-unknown"
URL="https://download.fedoraproject.org/pub/fedora/linux/releases/41/Cloud/x86_64/images/Fedora-Cloud-Base-Generic-41-1.4.x86_64.qcow2"
;;
freebsd13-3r)
OSNAME="FreeBSD 13.3-RELEASE"
OSv="freebsd13.0"
URLzs="$FREEBSD/amd64-freebsd-13.3-RELEASE.qcow2.zst"
BASH="/usr/local/bin/bash"
NIC="rtl8139"
fedora42)
OSNAME="Fedora 42"
OSv="fedora-unknown"
URL="https://download.fedoraproject.org/pub/fedora/linux/releases/42/Cloud/x86_64/images/Fedora-Cloud-Base-Generic-42-1.1.x86_64.qcow2"
;;
freebsd13-4r)
OSNAME="FreeBSD 13.4-RELEASE"
Expand All @@ -76,28 +78,36 @@ case "$OS" in
BASH="/usr/local/bin/bash"
NIC="rtl8139"
;;
freebsd14-0r)
OSNAME="FreeBSD 14.0-RELEASE"
OSv="freebsd14.0"
URLzs="$FREEBSD/amd64-freebsd-14.0-RELEASE.qcow2.zst"
freebsd13-5r)
OSNAME="FreeBSD 13.5-RELEASE"
OSv="freebsd13.0"
URLzs="$FREEBSD/amd64-freebsd-13.5-RELEASE.qcow2.zst"
BASH="/usr/local/bin/bash"
NIC="rtl8139"
;;
freebsd14-1r)
OSNAME="FreeBSD 14.1-RELEASE"
OSv="freebsd14.0"
URLzs="$FREEBSD/amd64-freebsd-14.1-RELEASE.qcow2.zst"
BASH="/usr/local/bin/bash"
;;
freebsd13-4s)
OSNAME="FreeBSD 13.4-STABLE"
freebsd14-2r)
OSNAME="FreeBSD 14.2-RELEASE"
OSv="freebsd14.0"
URLzs="$FREEBSD/amd64-freebsd-14.2-RELEASE.qcow2.zst"
BASH="/usr/local/bin/bash"
;;
freebsd13-5s)
OSNAME="FreeBSD 13.5-STABLE"
OSv="freebsd13.0"
URLzs="$FREEBSD/amd64-freebsd-13.4-STABLE.qcow2.zst"
URLzs="$FREEBSD/amd64-freebsd-13.5-STABLE.qcow2.zst"
BASH="/usr/local/bin/bash"
NIC="rtl8139"
;;
freebsd14-1s)
OSNAME="FreeBSD 14.1-STABLE"
freebsd14-2s)
OSNAME="FreeBSD 14.2-STABLE"
OSv="freebsd14.0"
URLzs="$FREEBSD/amd64-freebsd-14.1-STABLE.qcow2.zst"
URLzs="$FREEBSD/amd64-freebsd-14.2-STABLE.qcow2.zst"
BASH="/usr/local/bin/bash"
;;
freebsd15-0c)
Expand All @@ -112,11 +122,6 @@ case "$OS" in
MIRROR="http://opensuse-mirror-gce-us.susecloud.net"
URL="$MIRROR/tumbleweed/appliances/openSUSE-MicroOS.x86_64-OpenStack-Cloud.qcow2"
;;
ubuntu20)
OSNAME="Ubuntu 20.04"
OSv="ubuntu20.04"
URL="$UBMIRROR/focal/current/focal-server-cloudimg-amd64.img"
;;
ubuntu22)
OSNAME="Ubuntu 22.04"
OSv="ubuntu22.04"
Expand All @@ -140,7 +145,7 @@ echo "ENV=$ENV" >> $ENV
# result path
echo 'RESPATH="/var/tmp/test_results"' >> $ENV

# FreeBSD 13 has problems with: e1000+virtio
# FreeBSD 13 has problems with: e1000 and virtio
echo "NIC=$NIC" >> $ENV

# freebsd15 -> used in zfs-qemu.yml
Expand All @@ -152,6 +157,14 @@ echo "OSv=\"$OSv\"" >> $ENV
# FreeBSD 15 (Current) -> used for summary
echo "OSNAME=\"$OSNAME\"" >> $ENV

# default vm count for testings
VMs=2
echo "VMs=\"$VMs\"" >> $ENV

# default cpu count for testing vm's
CPU=2
echo "CPU=\"$CPU\"" >> $ENV

sudo mkdir -p "/mnt/tests"
sudo chown -R $(whoami) /mnt/tests

Expand Down Expand Up @@ -213,6 +226,22 @@ sudo virt-install \
--disk $DISK,bus=virtio,cache=none,format=$FORMAT,driver.discard=unmap \
--import --noautoconsole >/dev/null

# enable KSM on Linux
if [ ${OS:0:7} != "freebsd" ]; then
sudo virsh dommemstat --domain "openzfs" --period 5
sudo virsh node-memory-tune 100 50 1
echo 1 | sudo tee /sys/kernel/mm/ksm/run > /dev/null
fi

# Give the VMs hostnames so we don't have to refer to them with
# hardcoded IP addresses.
#
# vm0: Initial VM we install dependencies and build ZFS on.
# vm1..2 Testing VMs
for ((i=0; i<=VMs; i++)); do
echo "192.168.122.1$i vm$i" | sudo tee -a /etc/hosts
done

# in case the directory isn't there already
mkdir -p $HOME/.ssh

Expand Down
Loading
Loading