Skip to content

Releases: openzfs/zfs

zfs-2.3.0-rc2

14 Oct 23:57
zfs-2.3.0-rc2
Compare
Choose a tag to compare
zfs-2.3.0-rc2 Pre-release
Pre-release

We are excited to announce the second release candidate (RC2) of OpenZFS 2.3.0.

Key Features in OpenZFS 2.3.0 RC2:

  • RAIDZ Expansion (#15022): Add new devices to an existing RAIDZ pool, increasing storage capacity without downtime.
  • Fast Dedup (#15896): A major performance upgrade to the original OpenZFS deduplication functionality.
  • Direct IO (#10018): Allows bypassing the ARC for reads/writes, improving performance in scenarios like NVMe devices where caching may hinder efficiency.
  • Long names (#15921): Support for file and directory names up to 1023 characters.
  • Bug Fixes: A series of critical bug fixes addressing issues reported in previous versions.
  • Supported Platforms:
    • Linux kernels 4.18 - 6.11,
    • FreeBSD releases 13.3, 14.0, and 14.1.

Changes (zfs-2.2.0-rc1...zfs-2.3.0-rc2)

  • ZTS: Make use of optimal CPU pinning #16641
  • ZTS: Optimize Kernel Same-page Merging (KSM) #16641
  • Fallback to strerror() when strerror_l() isn't available #16636 #16640
  • ZTS: Increase zpool_import_parallel_pos import margin #16638
  • ZTS: Slightly increase dedup_quota limit #16637
  • CI: Stick with ubuntu-22.04 for CodeQL analysis #16639
  • zdb: fix printf format in dump_zap() #16635
  • zpool/zfs: allow --json wherever -j is allowed #16632
  • Always validate checksums for Direct I/O reads #16598
  • FreeBSD: ignore some includes when not building kernel #16616
  • ztest: Fix scrub check in ztest_raidz_expand_check() #16627
  • vdev_id: multi-lun disks & slot num zero pad #16603
  • ZTS: resilver_restart_001.ksh restore defaults #16618
  • Only serialize native-deb* targets #16622
  • zpool/zfs: restore -V & --version options #16615 #16617
  • Return boolean_t in inline functions of lib/libspl/include/sys/uio.h #16613
  • Bump SONAME of libzfs and libzpool #16609
  • contrib/debian: add new manpages to installation list #16609
  • Fix generation of kernel uevents for snapshot rename on linux #14223 #16600
  • ZTS: Fix summary page creation again - second try #16611
  • ZTS: Remove FreeBSD 13.4-STABLE #16610

How to Participate:

We encourage users and developers to test this release candidate and provide feedback. Your input is invaluable in ensuring the final release meets our community's needs. Please report any issues you encounter in our GitHub repository.

zfs-2.3.0-rc1

04 Oct 21:02
zfs-2.3.0-rc1
Compare
Choose a tag to compare
zfs-2.3.0-rc1 Pre-release
Pre-release

We are excited to announce the first release candidate (RC1) of OpenZFS 2.3.0! This milestone marks a significant step forward in our continuous efforts to enhance the performance, reliability, and features of the OpenZFS file system.

Key Features in OpenZFS 2.3.0 RC1:

  • RAIDZ Expansion (#15022): Add new devices to an existing RAIDZ pool, increasing storage capacity without downtime.
  • Fast Dedup (#15896): A major performance upgrade to the original OpenZFS deduplication functionality.
  • Direct IO (#10018): Allows bypassing the ARC for reads/writes, improving performance in scenarios like NVMe devices where caching may hinder efficiency.
  • Long names (#15921): Support for file and directory names up to 1023 characters.
  • Bug Fixes: A series of critical bug fixes addressing issues reported in previous versions.
  • Supported Platforms:
    • Linux kernels 4.18 - 6.11,
    • FreeBSD releases 13.3, 14.0, and 14.1.

How to Participate:

We encourage users and developers to test this release candidate and provide feedback. Your input is invaluable in ensuring the final release meets our community's needs. Please report any issues you encounter in our GitHub repository.

Full Changelog: zfs-2.2.0-rc1...zfs-2.3.0-rc1

zfs-2.2.6

04 Sep 22:44
zfs-2.2.6
Compare
Choose a tag to compare

Supported Platforms

  • Linux: compatible with 4.18 - 6.10 kernels
  • FreeBSD: compatible with releases starting from 12.2-RELEASE

Changes

  • Enable L2 cache of all (MRU+MFU) metadata but MFU data only #16343 #16402
  • linux/zvol_os: fix zvol queue limits initialization #16454
  • linux/zvol_os: tidy and document queue limit/config setup #16400
  • ZTS: fix zfs_copies_006_pos test on Ubuntu 20.04 (#16409)
  • ZTS: fix history_007_pos test on Ubuntu 24.04 (#16410)
  • contrib: link zpool to zfs in bash-completion (#16376)
  • module/icp/asm-arm/sha2: enable non-SIMD asm kernels on armv5/6 #15623
  • module/icp/asm-arm/sha2: auto detect __ARM_ARCH #15557
  • Linux 6.10 compat: META #16466
  • linux/zvol_os.c: cleanup limits for non-blk mq case #16462
  • linux/zvol_os.c: Fix max_discard_sectors limit for 6.8+ kernel #16462
  • Fix null ptr deref when renaming a zvol with snaps and snapdev=visible (#16316)
  • Linux 6.10 compat: Fix zvol NULL pointer deference #16453
  • Linux 6.10 compat: fix rpm-kmod and builtin #16439 #16450
  • ZTS: Use /dev/urandom instead of /dev/random #16442
  • Linux 6.11: avoid passing "end" sentinel to register_sysctl() #16400
  • Linux 6.11: add compat macro for page_mapping() #16400
  • Linux 6.11: add more queue_limit fields with removed setters #16400
  • Linux 6.11: IO stats is now a queue feature flag #16400
  • Linux 6.11: first arg to proc_handler is now const #16400
  • Linux 6.11: get backing_dev_info through queue gendisk #16400
  • Linux 6.11: enable queue flush through queue limits #16400
  • ZTS: Add a test to verify that copy_file_range obeys RLIMIT_FSIZE
  • FreeBSD: Fix RLIMIT_FSIZE handling for block cloning
  • zfs: add bounds checking to zil_parse (#16308)
  • linux/zvol_os: fix SET_ERROR with negative return codes #16364
  • ZTS: fix io_uring test on RHEL 9 variants (#16411)

zfs-2.2.5

06 Aug 22:25
zfs-2.2.5
Compare
Choose a tag to compare

Supported Platforms

  • Linux: compatible with 4.18 - 6.9 kernels
  • FreeBSD: compatible with releases starting from 12.2-RELEASE

Changes

  • [2.2.5-only] Make 'rmmod zfs' work after zfs-2.2.4 (#16406)
  • ZTS: Make do_vol_test() more deterministic (#16379)
  • Linux 6.9: Fix UBSAN errors in sa.c (#16380) #16278 #16330
  • Fix long_free_dirty accounting for small files (#16264)
  • AUTHORS: refresh with recent new contributors (#16362)
  • FreeBSD: Use a statement expression to implement SET_ERROR() (#16284)
  • zdb: dump ZAP_FLAG_UINT64_KEY ZAPs properly (#16334)
  • vdev_open: clear async fault flag after reopen
  • zts: test single-disk pool resumes properly after disk pull
  • disable automatic dependency tracking for dkms builds #16221 #16241
  • Some improvements to metaslabs eviction #16214
  • Destroy ARC buffer in case of fill error #15665 #15802 #16216
  • Use memset to zero stack allocations containing unions #16135 #16206
  • zdb: bring crash handling over from ztest #16181
  • libspl_assert: always link -lpthread on FreeBSD #16168
  • Unbreak FreeBSD cross-build on MacOS broken in 051460b #16167
  • libspl/assert: use libunwind for backtrace when available #16140
  • libspl/assert: dump backtrace in assert #16140
  • libspl/assert: add lock around assertion output #16140
  • libspl/assert: show process/task details in assert output #16140
  • Only provide execvpe(3) when needed #15609
  • find_system_library: fix var cleanup when library not found #16140
  • abd_iter_page: rework to handle multipage scatterlists #16108
  • zts: add a debug option to get full test output #16096
  • zts: allow running a single test by name only #16088
  • Fix missing semicolon in trace_dbuf.h (#16281)
  • one-word manpage correction: snapshot->rollback (#16294)
  • Linux 6.9 compat: META (#16358)
  • ZTS: handle FreeBSD version numbers correctly (#16340)
  • ZTS: Fix redacted_send failures on FreeBSD #16224
  • Linux 5.16: use bdev_nr_bytes() to get device capacity
  • Linux 6.10: work harder to avoid kmem_cache_alloc reuse
  • Linux 6.10: rework queue limits setup
  • Linux 6.9: Fix UBSAN errors in zap_micro.c #16278 #16330
  • Linux 6.9: Call add_disk() from workqueue to fix zfs_allow_010_pos (#16282)
  • Linux 6.7 compat: detect if kernel defines intptr_t #16201
  • head_errlog: fix use-after-free #16272 #16273
  • Fix assertion in Persistent L2ARC #16202 #16207
  • FreeBSD: Add zfs_link_create() error handling #13215 #16138
  • ZAP: Fix leaf references on zap_expand_leaf() errors #12366 #16159
  • Fix ZIL clone records for legacy holes #16165
  • Fix scn_queue races on very old pools #16162
  • Slightly improve dnode hash #16131
  • Make more taskq parameters writable #16118
  • L2ARC: Cleanup buffer re-compression #16038
  • Refactor dbuf_read() for safer decryption #16104
  • Replace P2ALIGN with P2ALIGN_TYPED and delete P2ALIGN. #15940

zfs-2.2.4

02 May 22:55
zfs-2.2.4
Compare
Choose a tag to compare

Supported Platforms

  • Linux: compatible with 3.10 - 6.8 kernels
  • FreeBSD: compatible with releases starting from 12.2-RELEASE

Changes

  • Fix updating the zvol_htable when renaming a zvol #16127 #16128
  • Add prefetch property #15237 #15436
  • vdev probe to slow disk can stall mmp write checker #15839
  • Extend import_progress kstat with a notes field #15539
  • Add ashift validation when adding devices to a pool #15509
  • Fix arcstats for FreeBSD after zfetch support #16141
  • Add zfetch stats in arcstats #16094
  • Use ASSERT0P() to check that a pointer is NULL. #15225
  • GCC: Fixes for gcc 14 on Fedora 40 #16124 #16125
  • Python 3.12 deprecated python3-distutils #16126 #16129
  • zfs-kmod: fix empty rpm requires/conflicts #16121
  • ZTS: user_namespace_004.ksh avoid error in cleanup if unsupported #16114
  • Add newline to two zpool messages #16113
  • Do no use .cfi_negate_ra_state within the assembly on Arm64 #14965 #15784
  • Add the BTI elf note to the AArch64 SHA2 assembly #16086
  • AUTHORS: refresh with recent new contributors #16079
  • return NULL at end of send_progress_thread #16074
  • Fix locale-specific time #15878 #15879
  • Fix panics when truncating/deleting files #15983
  • vdev props comment and manpage should include zfsd and FreeBSD mentions #15968
  • Add slow disk diagnosis to ZED #15469
  • [2.2.4-only] Stub RAIDZ enums to prevent conflicts
  • zap_leaf: make l_hash[] variable length to silence UBSAN #15964
  • Give a better message from 'zpool get' with invalid pool name #15942
  • xdr: header cleanup #16047 #16051
  • Fix buffer underflow if sysfs file is empty #16028 #16035
  • ZTS: fix flakiness in cp_files_002_pos #16029
  • Fix option string, adding -e and fixing order #16008
  • freebsd: fix missing headers in distribution tarball #15963
  • Check for minimum partition size #15898
  • Add VERIFY0P() and ASSERT0P() macros. #15225
  • Clean up existing VERIFY*() macros. #15225
  • etc/init.d: decide which variant to use at build time. #15977
  • config/Substfiles.am: restrict to the dedicated list. #15980
  • man: move zfs_prepare_disk.8 to nodist_man_MANS #15979
  • Add support for zfs mount -R #16015
  • Linux 6.9 compat: blk_alloc_disk() now takes two args #16027 #16033
  • Linux 6.9 compat: bdev handles are now struct file #16027 #16033
  • vdev_disk: clean up spa/bdev mode conversion #15995
  • Linux 5.18+ compat: Detect filemap_range_has_page #16034
  • udev: correctly handle partition #16 and later #15904 #15970
  • zvols: prevent overflow of minor device numbers #16006
  • Linux 6.8 compat: META (#16099)
  • bdev_discard_supported: understand discard_granularity=0
  • L2ARC: Relax locking during write #16040
  • Small fix to prefetch ranges aggregation #16072
  • Remove db_state DB_NOFILL checks from syncing context #16057
  • Speculative prefetch for reordered requests #16022
  • Fix read errors race after block cloning #16052
  • Improve dbuf_read() error reporting #16042
  • BRT: Check pool clone stats in more tests #16007
  • BRT: Fix tests to work on non-empty pools #16007
  • BRT: Fix holes cloning. #15994 #16007
  • BRT: Skip getting length in brt_entry_lookup() #15950
  • BRT: Make BRT block sizes configurable #15967
  • BRT: Relax brt_pending_apply() locking #15955
  • ZAP: Massively switch to _by_dnode() interfaces #15951
  • BRT: Skip duplicate BRT prefetches #15941
  • ZAP: Some cleanups/micro-optimizations #15976
  • BRT: Change brt_pending_tree sorting order #15954
  • Update resume token at object receive. #15927
  • Linux: Cleanup taskq threads spawn/exit #15873
  • Refactor dmu_prefetch(). #15076
  • ZIL: Update Linux tracing after #15635 #15730
  • ZIL: Improve next log block size prediction #15635
  • ZIO: Optimize zio_flush() #15515
  • ZIL: Detect single-threaded workloads #15381
  • zvol_os: fix compile with blk-mq on Linux 4.x #16069
  • zvol_os: fix build on Linux <3.13 #16062
  • zvol: use multiple taskq #15992
  • vdev_disk: fix alignment check when buffer has non-zero starting offset
  • vdev_disk: ensure trim errors are returned immediately
  • vdev_disk: don't touch vbio after its handed off to the kernel
  • Fix corruption caused by mmap flushing problems #15933 #16019
  • vdev_disk: default to classic submission for 2.2.x
  • abd_iter_page: don't use compound heads on Linux <4.5 #15533 #15588
  • vdev_disk: use bio_chain() to submit multiple BIOs #15533 #15588
  • vdev_disk: add module parameter to select BIO submission method #15533 #15588
  • vdev_disk: rewrite BIO filling machinery to avoid split pages #15533 #15588
  • vdev_disk: make read/write IO function configurable #15533 #15588
  • vdev_disk: reorganise vdev_disk_io_start #15533 #15588
  • vdev_disk: rename existing functions to vdev_classic_* #15533 #15588
  • abd: add page iterator #15533 #15588
  • linux 5.4 compat: page_size() #15533 #15588
  • Linux 6.8 compat: use splice_copy_file_range() for fallback #15930 #15931

zfs-2.1.15

26 Feb 23:58
zfs-2.1.15
Compare
Choose a tag to compare

Supported Platforms

  • Linux: compatible with 3.10 - 6.7 kernels
  • FreeBSD: compatible with releases starting from 12.2-RELEASE

Changes

  • Avoid calling rw_destroy() on uninitialized rwlock #13976
  • Fix GCC 12 compilation errors #14150
  • libzfs_sendrecv: Style pass on send_print_verbose #12967
  • Linux 6.7 compat: META #15833
  • Linux 6.6 compat: META #15520
  • ZTS: Debug zfs_share_concurrent_shares failure #15379
  • tests: zfs_share_concurrent_shares: don't use log_musts in subprocesses #13259
  • Fix the FreeBSD userspace build (#15716)
  • [zfs-2.1.15] Update ABI files
  • ZTS: Fix zfs_load-key failures on F39 #15534 #15550
  • LUA: Backport CVE-2020-24370's patch #15847
  • Add 'zpool status -e' flag to see unhealthy vdevs #15769
  • zpool: Add slot power control, print power status #15662
  • zed: fix typo in variable ZED_POWER_OFF_ENCLOUSRE_SLOT_ON_FAULT #15651
  • ZTS: Add dirty dnode stress test #15608
  • ZTS: Fix 'could not unmount datasets' on Alma 9 (#15542)
  • zed: misc vdev_enc_sysfs_path fixes #15462
  • Add zfs_prepare_disk script for disk firmware install #15243
  • Linux 6.8 compat: replace MAX_ORDER define #15805
  • Linux 6.8 compat: implement strlcpy fallback #15805
  • Linux 6.8 compat: update for new bdev access functions #15805
  • Linux 6.8 compat: make test functions static #15805
  • Linux 6.7 compat: zfs_setattr fix atime update #15762 #15773
  • Linux 6.5 compat: check BLK_OPEN_EXCL is defined #15692
  • linux 6.7 compat: rework shrinker setup for heap allocations
  • linux 6.7 compat: handle superblock shrinker member change
  • linux 6.7 compat: use inode atime/mtime accessors
  • linux 6.7 compat: simplify current_time() check
  • Linux 6.6 compat: fix configure error with clang (#15558)
  • Linux 6.6 compat: fsync_bdev() has been removed in favor of sync_blockdev() #15263
  • Linux 6.6 compat: generic_fillattr has a new u32 request_mask added at arg2 #15263
  • Linux 6.6 compat: use inode_get/set_ctime*(...) #15263 #15257
  • Workaround UBSAN errors for variable arrays #15510
  • FreeBSD: catch up to __FreeBSD_version 1400093 #15036
  • spa: Let spa_taskq_param_get()'s addition of a newline be optional #15719
  • spa: Fix FreeBSD sysctl handlers #15719
  • freebsd: fix compile for spa_taskq_read/spa_taskq_write params
  • [2.1] compat: add check for kernel_neon_* availability
  • spa: make read/write queues configurable
  • libshare: nfs: pass through ipv6 addresses in bracket notation #11939
  • ZTS: Disable io_uring test on CentOS 9 #15636
  • Report ashift of L2ARC devices in zdb #15331
  • zfs-dkms: fix shell-init error message #15576
  • Fix dkms installation of deb packages created with Alien. #15415

zfs-2.2.3

22 Feb 20:30
zfs-2.2.3
Compare
Choose a tag to compare

Supported Platforms

  • Linux: compatible with 3.10 - 6.7 kernels
  • FreeBSD: compatible with releases starting from 12.2-RELEASE

Changes

  • ZTS: Skip cross-fs bclone tests if FreeBSD < 14.0 #15901
  • [zfs-2.2.3] ZTS: Use correct bclone module param name on FreeBSD
  • zdb: Fix false leak report for BRT objects #15882
  • Add Ntfy notification support to ZED #15584
  • BRT: Fix slop space calculation with block cloning #15874
  • zfs list: add '-t fs' and '-t vol' options (#15883) #15864
  • [zfs-2.2.3] Enable zfs_bclone_enabled on cp_files tests
  • LUA: Backport CVE-2020-24370's patch #15847
  • Add 'zpool status -e' flag to see unhealthy vdevs #15769
  • zed: fix typo in variable ZED_POWER_OFF_ENCLOUSRE_SLOT_ON_FAULT #15651
  • Improve performance for zpool trim on linux #15843
  • BRT: Fix FICLONE/FICLONERANGE shortened copy #15728 #15842
  • Fix the FreeBSD userspace build (#15716)
  • zpool: Add slot power control, print power status #15662
  • zed: misc vdev_enc_sysfs_path fixes #15462
  • ZTS: Add dirty dnode stress test #15608
  • Linux 6.8 compat: handle mnt_idmap user_namespace change #15805
  • Linux 6.8 compat: fix inode permission tests #15805
  • Linux 6.8 compat: replace MAX_ORDER define #15805
  • Linux 6.8 compat: implement strlcpy fallback #15805
  • Linux 6.8 compat: update for new bdev access functions #15805
  • Linux 6.8 compat: make test functions static #15805
  • Linux 6.7 compat: META #15833
  • Don't assert mg_initialized due to device addition race #15818
  • Update man pages to time(1) from time(2) #15823
  • ZTS: Allow longer run time for zdb_args_pos #15826
  • Move nodes into correct subgraphs #15828
  • zpool wait: print timestamp before the header #15825
  • Update vdev devid and physpath if changed between imports #15816
  • ZTS: Update deprecated Github Action version numbers #15820
  • Switch to CodeQL to detect prohibited function use #15819 #14134
  • ZTS: Apply small changes for speeding up the tests #15811
  • FreeBSD: Fix bootstrapping tools under Linux/musl #15780
  • linux spl: fix typo in top comment of spl-condvar.c #15782
  • Make sure all necessary RPM path macros are defined #15756
  • Make spl_kmem_cache size check consistent #15757
  • Add path handling for aux vdevs in label_path #15737
  • Extend aux label to add path information #15737
  • fix: Uber block label not always found for aux vdevs #15737
  • Fix "out of memory" error #15747
  • fix: preserve linux kmod signature in zfs-kmod rpm spec #15744
  • fix(mount): do not truncate shares not zfs mount #15607 #15660
  • Fix a potential use-after-free in zfs_setsecattr() #15752
  • Linux: Defer loading the object set in zfs_setattr() #15752
  • Make zdb -R scale less poorly #15726
  • Stop wasting time on malloc in snprintf_zstd_header #15721
  • Fix file descriptor leak on pool import. #15630
  • ZTS: Apply zfs_bclone_enabled to bclone tests #15796
  • fix: variable type with zfs-tests/cmd/clonefile.c #15783
  • Fix cloning into mmaped and cached file. #15772
  • ZTS: Test for clone, mmap and write for block cloning #15717
  • Enable block_cloning tests on FreeBSD #15749
  • Block cloning tests. #15631
  • Test LWB buffer overflow for block cloning #15672
  • ZTS: Add test cases for block cloning replay #15614
  • ZTS: block_cloning: Use numeric sort for get_same_blocks #15614
  • Autotrim High Load Average Fix #15781
  • Linux 6.7 compat: zfs_setattr fix atime update #15762 #15773
  • compact: workaround for GPL-only symbols on riscv from Linux 6.2 #14974 #15627
  • spa: Let spa_taskq_param_get()'s addition of a newline be optional #15719
  • spa: Fix FreeBSD sysctl handlers #15719
  • freebsd: fix compile for spa_taskq_read/spa_taskq_write params
  • Fix livelist assertions for dedup and cloning #15732
  • Improve block sizes checks during cloning #15724 #15735
  • Linux 6.2 compat: add check for kernel_neon_* availability #15711 #14555
  • Don't panic on unencrypted block in encrypted dataset #15677
  • dbuf: Set dr_data when unoverriding after clone #15654 #15656
  • dbuf: Handle arcbuf assignment after block cloning #15653
  • DMU: Fix lock leak on dbuf_hold() error #15644
  • BRT: Limit brt_vdev_dump() to only one vdev #15625
  • ZIL: Remove 128K into 2x68K LWB split optimization #15634
  • zdb: Dump encrypted write and clone ZIL records #15629
  • Allow block cloning across encrypted datasets #15544
  • ZIL: Do not clone blocks from the future #15617
  • ZIL: Remove TX_CLONE_RANGE replay for ZVOLs. #15612
  • ZIO: Add overflow checks for linear buffers #15553
  • ZIL: Assert record sizes in different places #15517
  • L2ARC: Restrict write size to 1/4 of the device #15519
  • Linux: Reclaim unused spl_kmem_cache_reclaim #15507
  • FreeBSD: Optimize large kstat outputs #15495
  • Update the kstat dataset_name when renaming a zvol #15482 #15486
  • ABD: Be more assertive in iterators #15428
  • spa: make read/write queues configurable
  • Linux 6.5 compat: check BLK_OPEN_EXCL is defined #15692
  • ZTS: Disable io_uring test on CentOS 9 #15636
  • linux 6.7 compat: rework shrinker setup for heap allocations
  • linux 6.7 compat: handle superblock shrinker member change
  • linux 6.7 compat: use inode atime/mtime accessors
  • linux 6.7 compat: simplify current_time() check

zfs-2.2.2

01 Dec 02:52
zfs-2.2.2
Compare
Choose a tag to compare

Supported Platforms

  • Linux: compatible with 3.10 - 6.6 kernels
  • FreeBSD: compatible with releases starting from 12.2-RELEASE

Changes

Note: This release contains an important fix for a data corruption bug. Full details are in the issue (#15526) and bug fix (#15571). There's also a developer's bug summary that gives a good overview. We recommend everyone either upgrade to 2.2.2 or 2.1.14 to get the fix. The bug can cause data corruption due to an incorrect dirty dnode check. This bug is very hard to hit, and really only came to light due to changes in cp in coreutils 9.x. It's extremely unlikely that the bug was ever hit on EL7 or EL8, when running cp since they all use coreutils 8.x which performs file copies differently.

Updated (12/1/23):
EL9 was previously vulnerable since it uses coreutils 8.32 with the SEEK_DATA/SEEK_HOLE patches backported from coreutils 9.x.

  • FreeBSD: Fix ZFS so that snapshots under .zfs/snapshot are NFS visible #15563
  • ZIL: Call brt_pending_add() replaying TX_CLONE_RANGE #15603
  • zdb: fix printf() length for uint64_t devid #15606
  • Linux 6.6 compat: fix configure error with clang (#15558)
  • zfs-dkms: fix shell-init error message #15576
  • FreeBSD: Fix the build on FreeBSD 12 #15551
  • dmu_buf_will_clone: fix race in transition back to NOFILL #15566 #15526
  • zdb: Fix zdb '-O|-r' options with -e/exported zpool #15532
  • zdb: show BRT statistics and dump its contents #15541
  • brt: lift internal definitions into _impl header #15541
  • ZTS: Fix zfs_load-key failures on F39 #15534 #15550
  • ZIL: Do not encrypt block pointers in lr_clone_range_t #15543 #15513
  • dnode_is_dirty: check dnode and its data for dirtiness #15571 #15526
  • Revert "Tune zio buffer caches and their alignments"

zfs-2.1.14

01 Dec 02:49
zfs-2.1.14
Compare
Choose a tag to compare

Supported Platforms

  • Linux: compatible with 3.10 - 6.5 kernels
  • FreeBSD: compatible with releases starting from 12.2-RELEASE

Changes

Note: This release contains an important fix for a data corruption bug. Full details are in the issue (#15526) and bug fix (#15571). There's also a developer's bug summary that gives a good overview. We recommend everyone either upgrade to 2.2.2 or 2.1.14 to get the fix. The bug can cause data corruption due to an incorrect dirty dnode check. This bug is very hard to hit, and really only came to light due to changes in cp in coreutils 9.x. It's extremely unlikely that the bug was ever hit on EL7 or EL8 when running cp since they all use coreutils 8.x which performs file copies differently.

Updated (12/1/23):
EL9 was previously vulnerable since it uses coreutils 8.32 with the SEEK_DATA/SEEK_HOLE patches backported from coreutils 9.x.

  • copy-builtin: add hooks with sed/>> #13316
  • Zpool can start allocating from metaslab before TRIMs have completed #15395
  • dnode_is_dirty: check dnode and its data for dirtiness #15571 #15526

zfs-2.2.1

22 Nov 01:02
zfs-2.2.1
Compare
Choose a tag to compare

Supported Platforms

  • Linux: compatible with 3.10 - 6.6 kernels
  • FreeBSD: compatible with releases starting from 12.2-RELEASE

Changes

Note: We recommend that anyone running zfs-2.2.0 to please update to this release. Gentoo users have identified a block cloning bug (#15526) that can result in data corruption in zfs-2.2.0. To workaround this, zfs-2.2.1 disables block cloning by default (see #15529 and 479dca5). Users running the 2.1.x branch or older are unaffected, as block cloning is a 2.2.x-only feature.

  • ZTS: Fix 'could not unmount datasets' on Alma 9 (#15542)
  • zfs-2.2.1: Disable block cloning by default (479dca5)
  • Add a tunable to disable BRT support. #15529
  • Packaging: Auto-generate changelog during configure (#15528)
  • Linux 6.6 compat: META #15520
  • Workaround UBSAN errors for variable arrays #15510
  • ZTS: Test for all known zpool feature sets #15505
  • Update zpool-features.7 for grub2 compatibility list updates #15505
  • Workaround to allow openzfs-zfs-dkms install on Ubuntu #15503
  • Linux: reject read/write mapping to immutable file only on VM_SHARED #15344
  • Fix accounting error for pending sync IO ops in zpool iostat #15478
  • Linux 6.6 compat: fix implicit conversion error with debug build #15489
  • Remove obsolete_counts from grub2 compatibility list #15499
  • Fix dkms installation of deb packages created with Alien. #15415
  • Add all read-only compatible zpool features to grub2 compatibility #15459
  • Unify arc_prune_async() code #15456
  • Tune zio buffer caches and their alignments #15452
  • DMU: Do not pre-read holes during write #15371
  • Linux 6.6 compat: fsync_bdev() has been removed in favor of sync_blockdev() #15263
  • Linux 6.6 compat: generic_fillattr has a new u32 request_mask added at arg2 #15263
  • Linux 6.6 compat: use inode_get/set_ctime*(...) #15263 #15257
  • Read prefetched buffers from L2ARC #15451
  • Add mutex_enter_interruptible() for interruptible sleeping IOCTLs #15360
  • Revert "zvol: Temporally disable blk-mq" #15439
  • zvol: Remove broken blk-mq optimization #15351
  • "ARC prefetch metadata accesses:" appears twice in the output. #15427
  • Trust ARC_BUF_SHARED() more #15397
  • Remove lock from dsl_pool_need_dirty_delay() #15390
  • run-zts test procfs/pool_state failed with uncorrectable I/O failure #15364
  • Properly pad struct tx_cpu to cache line #15402
  • Fix typo in tests/zfs-tests/tests/functional/cli_user/misc/misc.cfg #15417
  • FreeBSD: taskq: Remove unused declaration #15416
  • Set spa_ccw_fail_time=0 when expanding a vdev. #15405
  • Fix ZED auto-replace for VDEVs using by-id paths #15363
  • Add zfs_prepare_disk script for disk firmware install #15243
  • Large sync writes perform worse with slog #14378
  • FreeBSD: Improve taskq wrapper #15356
  • Fix block cloning between unencrypted and encrypted datasets #15464 #15465