Skip to content

Releases: openzfs/zfs

OpenZFS 2.1.0-rc2

07 Apr 21:35
zfs-2.1.0-rc2
Compare
Choose a tag to compare
OpenZFS 2.1.0-rc2 Pre-release
Pre-release

Supported Platforms

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

Changes

  • fix misplaced quotes in kmod-preamble #11851
  • Obsolete earlier packages due to version bump #11844 #11847
  • i-t: don't brokenly set the scheduler for root pool vdev's disks #11838
  • i-t: fix root=zfs:AUTO #11278 #11838
  • zfs get -p only outputs 3 columns if "clones" property is empty #11837
  • zpool-features.5: remove "booting not possible with this feature"s #11842
  • man: fix wrong .Xr macros usages #11845
  • libzutil: zfs_isnumber(): return false if input empty #11841 #11843
  • ZTS: pool_checkpoint improvements #11832
  • Fix various typos #11774
  • bash_completion.d: always call zfs/zpool binaries directly #11828
  • Add RELEASES.md file #11821
  • ZTS: inheritance/inherit_001_pos is flaky #11830
  • FreeBSD: Fix stable/12 after AT_BENEATH removal #11827
  • Bump libzfs.so and libzpool.so versions #11817
  • Allow pool names that look like Solaris disk names #11781 #11813
  • Don't scale zfs_zevent_len_max by CPU count #11822
  • Atomically check and set dropped zevent count #11822
  • CI: Increase free space in workflow #11826
  • Fixing m4 iops rename check #11825
  • fsck.zfs: implement 4/8 exit codes as suggested in manpage #11806
  • Add compatibility file sets (ZoL 0.6.1, 0.6.4, OpenZFS 2.1) #11818

OpenZFS 2.1.0-rc1

30 Mar 00:23
zfs-2.1.0-rc1
Compare
Choose a tag to compare
OpenZFS 2.1.0-rc1 Pre-release
Pre-release

Supported Platforms

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

New Features

  • Distributed Spare (dRAID) Feature #10102
  • Added "compatibility" property for zpool feature sets #11468
  • Added zpool_influxdb command to collect zpool statistics #10786

OpenZFS 2.0.4

09 Mar 18:30
zfs-2.0.4
Compare
Choose a tag to compare

Supported Platforms

  • Linux: compatible with 3.10 - 5.11 kernels
  • FreeBSD: Release 12.2, stable/12, 13.0 (HEAD)

Changes

  • Clarify compressed zfs send/recv behavior #11690
  • Intentionally allow ZFS_READONLY in zfs_write #11693
  • Suppress cppcheck invalidSyntax warninigs #11700
  • Initialize ZIL buffers #11687
  • zpool: use tab to intend continuation from removal status #11674
  • Don't bomb out when using keylocation=file:// #11651
  • Add "zstd-fast" to help options for "compression" property #11670
  • Fix assert in FreeBSD-specific dmu_read_pages #11654
  • Linux 5.12 compat: replace bio_io_acct with disk_io_acct #11639
  • Linux 5.12 compat: bio->bi_disk member moved #11639
  • Linux: increase max nvlist_src size #6572 #11638
  • send_iterate_snap : doall send without fromsnap #11608
  • vdev_ops: don't try to call vdev_op_hold or vdev_op_rele when NULL #11623
  • libzpool: set_global_var: fix endianness handling (fixes zdb -o ) #11602
  • Restore FreeBSD resource usage accounting #11613
  • FreeBSD: disable the use of hardware crypto offload drivers for now #11612
  • Fix report_mount_progress never calling set_progress_header #11607
  • Support uClibc for the tests compilations #11600
  • Linux 5.11 compat: META #11586

OpenZFS 2.0.3

11 Feb 20:47
zfs-2.0.3
Compare
Choose a tag to compare

Supported Platforms

  • Linux: compatible with 3.10 - 5.11 kernels
  • FreeBSD: Release 12.2, stable/12, 13.0 (HEAD)

Changes

  • Set file mode during zfs_write #11474 #11576
  • zfs-import-{cache,scan}: change condition to FileNotEmpty #11568
  • dracut: Fix race condition between load-key and import #11500
  • zfs-list.8: clarify listing snapshots #11562 #11565
  • zts-report.py: ignore some skipped tests in Github CI #11554
  • CI: add ubuntu-* functional tests runner #11554
  • CI: rename zfs-tests workflow #11554

OpenZFS 2.0.2

01 Feb 19:11
zfs-2.0.2
Compare
Choose a tag to compare

Supported Platforms

  • Linux: compatible with 3.10 - 5.10 kernels
  • FreeBSD: Release 12.2, stable/12, 13.0 (HEAD)

Changes

  • Avoid updating the L2ARC device header unnecessarily #11522 #11537
  • Fix zrele race in zrele_async that can cause hang #11527 #11530
  • Fix a resource leak in uu_avl_pool_destroy #11528
  • Fix a man page link in zfs-program.8 #11529
  • zfsprops.8: fix mispluralisation in "Default values is" #11509
  • ZTS: Use swapctl to list swap devices on FreeBSD #11503
  • vdev_id: Add error message when $CONFIG is missing #11498
  • Fix two minor lint errors (cppcheck) #11507
  • Relax special_small_blocks assertion #11501
  • FreeBSD: upstream changes to VFS interface #11458
  • FreeBSD: fix HEAD build, conditionally remove FDSYNC defines #11458
  • dracut: Support /usr/bin as 'systemctl' path #11487
  • Install zgenhostid to sbindir #11485
  • Re-apply path sanitizer, as mount(8) still mangles it #11295 #11462
  • ZTS: avoid piping to special devices #11478
  • ZTS: avoid race to unmount in zfs_rollback_001 #11451
  • assertion failed in arc_wait_for_eviction() #11285 #11397
  • FreeBSD: minor_t needs to be signed so that -1 is recognized as such #11437
  • Linux 5.10 compat: restore custom uio_prefaultpages() #11463 #11484
  • ZTS: three small follow up fixes for #11167 #11311
  • zpool: Dryrun fails to list some devices #11122 #11167

OpenZFS 2.0.1

06 Jan 18:17
zfs-2.0.1
Compare
Choose a tag to compare

Supported Platforms

  • Linux: compatible with 3.10 - 5.10 kernels
  • FreeBSD: Release 12.2, stable/12, 13.0 (HEAD)

Changes

  • Autoconf 2.70 compatibility #11413 #11419
  • zfs_mount_all_mountpoints: cleanup_all should leave pool root mounted #11417
  • VZ 7 kernel compat: introduce ITER-enabled .direct_IO() via IOVECs #11410 #11411
  • Memory leak in zdb:import_checkpointed_state() #11396
  • Memory leak in ztest_dmu_objset_own() #11396
  • Memory leak in ztest_vdev_attach_detach() #11396
  • nvlist leaked in zpool_find_config() #11396
  • implicit conversion from 'boolean_t' to 'ds_hold_flags_t' #11406
  • Linux 5.11 compat: blk_{un}register_region() #11387 #11390
  • Linux 5.11 compat: revalidate_disk_size() #11387 #11390
  • Linux 5.11 compat: bdev_whole() #11387 #11390
  • Linux 5.11 compat: bio_start_io_acct() / bio_end_io_acct() #11387 #11390
  • Linux 5.11 compat: lookup_bdev() #11387 #11390
  • Linux 5.11 compat: conftest #11387 #11390
  • dbufstat: Fix warnings with Python 3.8 #11394
  • Linux 5.10 compat: META #11391
  • zfs-kmods: install to /lib/modules instead of /usr/lib/modules #11381
  • Dangling reference from dmu_objset_upgrade #11368
  • Linux 4.18.0-257.el8 compat: blk_alloc_queue() #11374
  • Linux 5.10 compat: also zvol_revalidate_disk() #11358
  • Fix maybe uninitialized variable warning #11373
  • Remove iov_iter_advance() from iter_read #11375 #11378
  • Linux 5.10 compat: use iov_iter in uio structure #11351
  • Remove incorrect assertion #11235
  • Reduce confusion in zfs_write #11191
  • Return EFAULT at the end of zfs_write() when set #11193
  • Simplify offset and length limit in zfs_write #11176
  • Const some unchanging variables in zfs_write #11176
  • Remove redundant oid parameter to update_pages #11176
  • Factor uid, gid, and projid out of loop in zfs_write #11176
  • Share zfs_fsync, zfs_read, zfs_write, et al between Linux and FreeBSD #11078
  • ZTS: Simplify zpool_initialize_verify_initialized #11365
  • special device removal space accounting fixes #11329
  • Use the correct return type for getopt #11359
  • DKMS: Disable weak modules #9891 #11128 #11242 #11335
  • lua: avoid gcc -Wreturn-local-addr bug #11337
  • spa: avoid type narrowing warning #11336
  • FreeBSD libzfs: gcc requires __thread after static #11331
  • Fix reporting of CKSUM errors in indirect vdevs #11277
  • arc_summary3: Handle overflowing value width #11270
  • FreeBSD: Implement sysctl for fletcher4 impl #11270
  • Fix kernel panic induced by redacted send #11297
  • FreeBSD: Fix format of vfs.zfs.arc_no_grow_shift #11318
  • FreeBSD: Update usage of py-sysctl #11318
  • Fix possibly uninitialized 'root_inode' variable warning #11306
  • CI: add zloop workflow
  • FreeBSD: Do zcommon_init sooner to avoid FPU panic #11302
  • mount_zfs: print strerror instead of errno for error reporting #11303
  • Drop path prefix workaround #11295
  • Delete rw_semaphore.wait_lock configure check #11309
  • Fix optional "force" arg handing in zfs_ioc_pool_sync() #11281 #11284
  • CI: add new zfs-tests-sanity workflow #11304
  • ZTS: zpool_trim tests throttle trim process #11296
  • Reduce fletcher4 and raidz benchmark times #11282
  • ZTS: adjust zpool_import_012_pos timeout #11286
  • ZTS: Update zfs_share_concurrent_shares.ksh #11283
  • Add sanity.run file #11271
  • Fix trivial typo in zfs-diff.8 #11268 #11272
  • Fix for "Reduce latency effects of non-interactive I/O" #11261
  • Reduce latency effects of non-interactive I/O #11166
  • Add compatibility for busybox mktemp #11269
  • FreeBSD: notify userspace when a vdev is removed #11260
  • Make zpool status "remove:" label print in bold #11255
  • CI: simplify checkstyle runner #11262
  • ZED/zfs-list-cacher.sh: don't exit on ignored event type #11164 #11247

zfs-0.8.6

14 Dec 21:11
zfs-0.8.6
Compare
Choose a tag to compare

This is a tiny release primarily intended to get zfs-0.8-release building again on Centos 8.3 (since we don't provide zfs-2.0.0 RPMs for Centos 8.3 in our main branch yet). It also includes all the patches that were in the zfs-0.8.6-staging branch.

Supported Kernels

  • Compatible with 2.6.32 - 5.9 Linux kernels

Changes

  • Restore ARC MFU/MRU pressure #10548 #10618
  • Linux 5.10 compat: check_disk_change() removed #11085
  • Linux 5.10 compat: frame.h renamed objtool.h #11085
  • blkg_tryget config test: initialize struct #10713 #11049
  • copy-builtin: make sure kernel Makefiles don't look in zfs source tree
  • copy-builtin: don't create sed backup files
  • copy-builtin: remove .gitignore from KERNEL_DIR/include/zfs
  • Increase Supported Linux Kernel to 5.9 (#11057)
  • Bump META Linux-Maximum to kernel 5.8 (#11019)

OpenZFS 2.0.0

30 Nov 21:41
zfs-2.0.0
Compare
Choose a tag to compare

Supported Platforms

  • Unified code base and documentation - The ZFS on Linux project has been renamed OpenZFS! Both Linux and FreeBSD are now supported from the same repository making all of the OpenZFS features available on both platforms. #8987

    • Linux: compatible with 3.10 - 5.9 kernels
    • FreeBSD: Release 12.2, stable/12, 13.0 (HEAD)

Major New Features

  • Sequential resilver - The sequential resilver feature can rebuild a failed mirror vdev in a fraction of the time it would take a traditional healing resilver. Full redundancy is restored as quickly as possible and then the pool is automatically scrubbed to verify all of the data checksums. #10349

  • Persistent L2ARC - This feature makes the L2ARC cache device persistent across reboots thereby eliminating the usual cache warmup time normally needed after importing your pool. #9582

  • ZStandard compression - ZStandard is a modern, high performance, general compression algorithm which provides similar or better compression levels to GZIP, but with much better performance. ZStandard provides a large selection of compression levels to allow a storage administrator to select the preferred performance/compression trade-off. #10278

  • Redacted zfs send/receive - Redacted streams allow users to send subsets of their data to a target system. This allows users to save space by not replicating unimportant data within a given dataset or to selectively exclude sensitive information. #7958

Changes to the zpool/zfs Commands

  • zpool replace|attach -s - Perform a sequential resilver when replacing or attaching a new vdev. #10349

  • zfs wait, zpool wait - Wait for long running background operations to complete (resilver, scrub, trim, etc). #9707 #9162

  • zfs redact, zfs send --redact - Generate a redacted send stream. #7958

  • zfs send --saved - Allows a user to send a partially received dataset. #9007

  • zfs jail, zfs unjail - Attaches and detaches ZFS filesystems from FreeBSD jails. #10658

  • zfs rename -u - Renames a filesystem without needing to remount. #10839

  • zfs umount -u - Unloads keys for an encrypted filesystem when it is unmounted. #8952

  • zfs bookmark fs#target fs#newbookmark - Copying an existing bookmark to a new name. #9571

Notable Changes

  • Added fallocate(mode-0/2) compatibility to preallocate space. #10408

  • Reorganized the zfs and zpool man pages by splitting out each subcommand in to its own page. #9559 #9564

  • Enabled the systemd zfs-mount-generator by default on Linux. #7329 #8848

  • More relevant and useful ZED syslog entries #10967 #10861

  • Provided pam module for automatically loading zfs encryption keys for home datasets. #9903

  • Support for inheriting and setting user properties in channel programs. #9738 #9950

  • Improved bootloader support. #10009 #8627 #10937

  • Optionally colorized zpool status output. #9340

Performance

Deprecated functionality

  • Deduplicated send streams have been deprecated. The zfs send -D command will now print a warning, ignore the -D flag, and generate a regular (non-deduplicated) send stream. A zfs receive of a deduplicated send stream will print an error message and fail. Legacy deduplicated send streams can be received by first converting them to a non-deduplicated stream with the zstream redup command. #10117 #10156

  • The dedupditto pool property has been deprecated. It may still be set with zpool set dedupditto but won't have any effect. OpenZFS is still compatible with existing pools that have the dedupditto property enabled and can understand dedupditto blocks and free them when appropriate. However, OpenZFS won't write any new dedupditto blocks. #8310

  • The zfs_vdev_scheduler module option can still be set but will have no effect. Linux users who require this functionality should update their systems to set the disk scheduler using a udev rule. #9609

Additional Information

  • Documentation - Updated OpenZFS documentation for Linux and FreeBSD.

  • Change log - Complete v0.8.0 - v2.0.0 change log

  • Module options - The default values for the module options were selected to yield good performance for the majority of workloads and configurations. They should not need to be tuned for most systems but are available for performance analysis and tuning. See the module parameters documentation for the complete list of the options and what they control.

Added/removed/renamed module options
  • Added:
    • l2arc_meta_percent - Percent of ARC size allowed for L2ARC-only headers
    • l2arc_mfuonly - Cache only MFU data from ARC into L2ARC
    • l2arc_rebuild_blocks_min_l2size - Min size in bytes to write rebuild log blocks in L2ARC
    • l2arc_rebuild_enabled - Rebuild the L2ARC when importing a pool
    • l2arc_trim_ahead - TRIM ahead L2ARC write size multiplier
    • metaslab_unload_delay - Delay in txgs after metaslab was last used before unloading
    • metaslab_unload_delay_ms - Delay in milliseconds after metaslab was last used before unloading
    • vdev_file_logical_ashift - Logical ashift for file-based devices
    • vdev_file_physical_ashift - Physical ashift for file-based devices
    • zfetch_max_idistance - Max bytes to prefetch indirects for per stream
    • zfs_allow_redacted_dataset_mount - Allow mounting of redacted datasets
    • zfs_arc_evict_batch_limit - The number of headers to evict per sublist before moving to the next
    • zfs_arc_eviction_pct - When full, ARC allocation waits for eviction of this % of alloc size
    • zfs_arc_shrinker_limit - Limit on number of pages that ARC shrinker can reclaim at once
    • zfs_fallocate_reserve_percent - Percentage of length to use for the available capacity check
    • zfs_history_output_max - Maximum size in bytes of ZFS ioctl output that will be logged
    • zfs_initialize_chunk_size - Size in bytes of writes by zpool initialize
    • zfs_keep_log_spacemaps_at_export - Prevent the log spacemaps from being flushed and destroyed during pool export/destroy
    • zfs_livelist_condense_new_alloc - Whether extra ALLOC blkptrs were added to a livelist entry while it was being condensed
    • zfs_livelist_condense_sync_cancel - Whether livelist condensing was canceled in the synctask
    • zfs_livelist_condense_sync_pause - Set the livelist condense synctask to pause
    • zfs_livelist_condense_zthr_cancel - Whether livelist condensing was canceled in the zthr function
    • zfs_livelist_condense_zthr_pause - Set the livelist condense zthr to pause
    • zfs_livelist_max_entries - Size to start the next sub-livelist in a livelist
    • zfs_livelist_min_percent_shared - Threshold at which livelist is disabled
    • zfs_max_async_dedup_frees - Max number of dedup blocks freed in one txg
    • zfs_max_log_walking - The number of past TXGs that the flushing algorithm of the log spacemap feature uses to estimate incoming log blocks
    • zfs_max_logsm_summary_length - Maximum number of rows allowed in the summary of the spacemap log
    • zfs_max_nvlist_src_size - Maximum size in bytes allowed for src nvlist passed with ZFS ioctls
    • zfs_metaslab_max_size_cache_sec - How long to trust the cached max chunk size of a metaslab
    • zfs_metaslab_mem_limit - Percentage of memory that can be used to store metaslab range trees
    • zfs_min_metaslabs_to_flush - Minimum number of metaslabs to flush per dirty TXG
    • zfs_rebuild_max_segment - Max segment size in bytes of rebuild reads
    • zfs_recv_queue_ff - Receive queue fill fraction
    • zfs_recv_write_batch_size - Maximum amount of writes to batch into one transaction
    • zfs_send_no_prefetch_queue_ff - Send queue fill fraction for non-prefetch queues
    • zfs_send_no_prefetch_queue_length - Maximum send queue length for non-prefetch queues
    • zfs_send_queue_ff - Send queue fill fraction
    • zfs_unflushed_log_block_max - Hard limit (upper-bound) in the size of the space map log in terms of blocks.
    • zfs_unflushed_log_block_min - Lower-bound limit for the maximum amount of blocks allowed in log spacemap (see zfs_unflushed_log_block_max)
    • zfs_unflushed_log_block_pct - Tunable used to determine the number of blocks that can be used for the spacemap log, expressed as a percentage of the total number of metaslabs in the pool (e.g. 400 means the number of log blocks is capped at 4 times the number of metaslabs)
    • zfs_unflushed_max_mem_amt - Specific hard-limit in memory that ZFS allows to be used for unf...
Read more

OpenZFS 2.0.0-rc7

25 Nov 18:32
zfs-2.0.0-rc7
Compare
Choose a tag to compare
OpenZFS 2.0.0-rc7 Pre-release
Pre-release

Supported Platforms:

  • Linux: compatible with 3.10 - 5.9 kernels
  • FreeBSD: Release 12.2, stable/12, 13.0 (HEAD)

Changes

  • Reduce latency effects of non-interactive I/O #11166
  • pam_zfs_key: accommodate different dataset naming scheme #11165
  • FreeBSD: decouple ZFS_DEBUG from kernel debug settings #11213
  • Obsolete earlier packages due to version bump #11230 #11233
  • libzfsbootenv: do not depend on libnvpair #11227
  • Include the ABI with dist tarball #11225
  • Correct missing zil_claim() DTL updates #11218
  • Track SONAME version bump in packaging #11219
  • Enable ABI checks for the checkstyle workflow #11215
  • Add ABI snapshot #11144
  • Library ABI tracking with abigail #11144
  • Fix problems in zvol_set_volmode_impl #11199
  • zpool: correctly align columns with -p #11202
  • zpool(8): fix pool-wi[sd]e typo #11202
  • Fix 'zfs userspace' for received datasets in encrypted root #9501 #9596
  • Fix ASSERT logic in l2arc_evict() #11205
  • config/dracut/90zfs: handle cases where hostid(1) returns all zeros #11174 #11189
  • zgenhostid: accept hostid arguments equal to zero. #11174 #11189
  • Linux: Fix ZFS_ENTER/ZFS_EXIT/ZFS_VERFY_ZP usage #11169 #11201
  • Assertion failure when logging large output of channel program #11194

OpenZFS 2.0.0-rc6

12 Nov 20:03
zfs-2.0.0-rc6
Compare
Choose a tag to compare
OpenZFS 2.0.0-rc6 Pre-release
Pre-release

Supported Platforms:

  • Linux: compatible with 3.10 - 5.9 kernels
  • FreeBSD 12.1, 12.2 (release), stable/12, and HEAD (13)

Changes

  • Channel program may spuriously fail with "memory limit exhausted" #11190
  • Linux: Fix mount/unmount when dataset name has a space #11182 #11187
  • Start snapdir_iterate traversals to begin wtih the value of zero #11039
  • G/C data_alloc_arena #11188
  • G/C struct znode -> z_moved #11186
  • Fix compiling on FreeBSD + gcc - don't assume illmnos bits #11068 #11069
  • Fix pointer-is-uint64_t-sized assumption in the ioctl path #11068 #11069
  • Fix memleak in cmd/mount_zfs.c #11098
  • zpoolprops.8: clarify vdev expansion rules #11158
  • initramfs: zfsunlock hook breaks /usr/bin #11162
  • FreeBSD: Simplify zvol_geom_open and zvol_cdev_open #11175
  • FreeBSD: Avoid spurious EINTR in zvol_cdev_open #11175
  • Fix dmu_tx_dirty_throttle after arc_c reduction #11178
  • Fix dnode refcount tracking #11184
  • ZTS: Add L1 corruption test #11141
  • ZTS: Output all block copies in list_file_blocks #11141
  • ZTS: Fix list_file_blocks for mirror vdevs, level > 0 #11141
  • FreeBSD: Prevent a NULL reference in zvol_cdev_open #11152
  • FreeBSD: Prevent NULL pointer dereference of resid #11149