Skip to content

Releases: openzfs/zfs

v0.6.5.6

23 Mar 16:02
Compare
Choose a tag to compare

Supported Kernels

  • Compatible with 2.6.32 - 4.5 Linux kernels.

Bug Fixes

  • Remove artificial architecture restrictions in packaging
  • Add support for s390[x] #4425
  • Handle negative dentries in case insensitive filesystem #4243
  • Fix casesensitivity=insensitive deadlock #4136
  • Correctly parse zdb -R flag arguments #4304
  • Fix lock order inversion with zvol_open() #3681
  • Add support for asynchronous zvol minor operations #2217
  • Make zvol minor functionality more robust #4344
  • Prevent zpool_find_vdev() from truncating vdev path #4312
  • Add -gLP to zpool subcommands for alt vdev names #4341
  • Fix zpool list -v output for spares and log devices #4313
  • Fix ZFS send fails to transmit some holes

v0.6.5.5

09 Mar 23:26
Compare
Choose a tag to compare

Supported Kernels

  • Compatible with 2.6.32 - 4.5 Linux kernels.

Bug Fixes

  • Linux 4.5 compatibility #4228
  • Create working debuginfo packages on Red Hat #4224
  • Make arc_summary.py and dbufstat.py compatible with python3
  • musl libc compatibility for mount.zfs option parsing #4222
  • Prevent arc_c collapse and possible panic #3904
  • Prevent duplicated xattr between SA and dir #4153
  • Fix zsb->z_hold_mtx deadlock #4106
  • Prevent SA header corruption #4150
  • Allow SPL's copy-builtin to run multiple times openzfs/spl#526
  • Use safer flags for in-kernel memory allocations openzfs/spl#523
  • Fix potential deadlock in cv_wait() #4106
  • Fix livelock in shrinker #3936

v0.6.5.4

09 Jan 00:19
Compare
Choose a tag to compare

Supported Kernels

  • Compatible with 2.6.32 - 4.4 Linux kernels.

Bug Fixes

  • Linux 4.4 compatibility
  • Assorted stability fixes
  • Better support and stability for NFS-exported snapshots
  • Fix kernel warning in unlock_new_inode() and deadlock
  • Fix overflow in P2ROUNDUP_TYPED macro
  • Fix write performance issue due to bad zfs_dirty_data_max calculation
  • Fix builtin kernel builds
  • Fix deadlock during direct memory reclaim
  • Fix taskq dynamic spawning deadlock
  • Build fixes for SPARC

v0.6.5.3

14 Oct 18:06
Compare
Choose a tag to compare

Supported Kernels

  • Compatible with 2.6.32 - 4.3 Linux kernels.

Bug Fixes

  • Fix CPU hotplug openzfs/spl#482
  • Disable dynamic taskqs by default to avoid deadlock openzfs/spl#484
  • Don't import all visible pools in zfs-import init script #3777
  • Fix use-after-free in vdev_disk_physio_completion #3920
  • Fix avl_is_empty(&dn->dn_dbufs) assertion #3865

v0.6.5.2

30 Sep 16:42
Compare
Choose a tag to compare

Supported Kernels

  • Compatible with 2.6.32 - 4.3 Linux kernels.

Bug Fixes

  • Init script fixes #3816
  • Fix uioskip crash when skip to end #3806 #3850
  • Userspace can trigger an assertion #3792
  • Fix quota userused underflow bug #3789
  • Fix performance regression from unwanted synchronous I/O #3780
  • Fix deadlock during ARC reclaim #3808 #3834
  • Fix deadlock with zfs receive and clamscan #3719
  • Allow NFS activity to defer snapshot unmounts #3794
  • Linux 4.3 compatibility #3799
  • Zed reload fixes #3773
  • Fix PAX Patch/Grsec SLAB_USERCOPY panic #3796
  • Always remove during dkms uninstall/update openzfs/spl#476

v0.6.5.1

19 Sep 21:31
Compare
Choose a tag to compare

Supported Kernels

  • Compatible with 2.6.32 - 4.2 Linux kernels.

Bug Fixes

  • Fix zvol corruption with TRIM/discard #3798
  • Fix NULL as mount(2) syscall data parameter #3804
  • Fix xattr=sa dataset property not honored #3787

v0.6.5

11 Sep 20:25
zfs-0.6.5
Compare
Choose a tag to compare

Supported Kernels

  • Compatible with 2.6.32 - 4.2 Linux kernels.

New Functionality

  • Support for temporary mount options.
  • Support for accessing the .zfs/snapshot over NFS.
  • Support for estimating send stream size when source is a bookmark.
  • Administrative commands are allowed to use reserved space improving robustness.
  • New notify ZEDLETs support email and pushbullet notifications.
  • New keyword 'slot' for vdev_id.conf to control what is use for the slot number.
  • New zpool export -a option unmounts and exports all imported pools.
  • New zpool iostat -y omits the first report with statistics since boot.
  • New zdb can now open the root dataset.
  • New zdb can print the numbers of ganged blocks.
  • New zdb -ddddd can print details of block pointer objects.
  • New zdb -b performance improved.
  • New zstreamdump -d prints contents of blocks.

New Feature Flags

  • large_blocks - This feature allows the record size on a dataset to be set larger than 128KB. We currently support block sizes from 512 bytes to 16MB. The benefits of larger blocks, and thus larger IO, need to be weighed against the cost of COWing a giant block to modify one byte. Additionally, very large blocks can have an impact on I/O latency, and also potentially on the memory allocator. Therefore, we do not allow the record size to be set larger than zfs_max_recordsize (default 1MB). Larger blocks can be created by changing this tuning, pools with larger blocks can always be imported and used, regardless of this setting.
  • filesystem_limits - This feature enables filesystem and snapshot limits. These limits can be used to control how many filesystems and/or snapshots can be created at the point in the tree on which the limits are set.

Performance

  • Improved zvol performance on all kernels (>50% higher throughput, >20% lower latency)
  • Improved zil performance on Linux 2.6.39 and earlier kernels (10x lower latency)
  • Improved allocation behavior on mostly full SSD/file pools (5% to 10% improvement on 90% full pools)
  • Improved performance when removing large files.
  • Caching improvements (ARC):
    • Better cached read performance due to reduced lock contention.
    • Smarter heuristics for managing the total size of the cache and the distribution of data/metadata.
    • Faster release of cached buffers due to unexpected memory pressure.

Changes in Behavior

  • Default reserved space was increased from 1.6% to 3.2% of total pool capacity. This default percentage can be controlled through the new spa_slop_shift module option, setting it to 6 will restore the previous percentage.
  • Loading of the ZFS module stack is now handled by systemd or the sysv init scripts. Invoking the zfs/zpool commands will not cause the modules to be automatically loaded. The previous behavior can be restored by setting the ZFS_MODULE_LOADING=yes environment variable but this functionality will be removed in a future release.
  • Unified SYSV and Gentoo OpenRC initialization scripts. The previous functionality has been split in to zfs-import, zfs-mount, zfs-share, and zfs-zed scripts. This allows for independent control of the services and is consistent with the unit files provided for a systemd based system. Complete details of the functionality provided by the updated scripts can be found here.
  • Task queues are now dynamic and worker threads will be created and destroyed as needed. This allows the system to automatically tune itself to ensure the optimal number of threads are used for the active workload which can result in a performance improvement.
  • Task queue thread priorities were correctly aligned with the default Linux file system thread priorities. This allows ZFS to compete fairly with other active Linux file systems when the system is under heavy load.
  • When compression=on the default compression algorithm will be lz4 as long as the feature is enabled. Otherwise the default remains lzjb. Similarly lz4 is now the preferred method for compressing meta data when available.
  • The use of mkdir/rmdir/mv in the .zfs/snapshot directory has been disabled by default both locally and via NFS clients. The zfs_admin_snapshot module option can be used to re-enable this functionality.
  • LBA weighting is automatically disabled on files and SSDs ensuring the entire device is used fairly.
  • iostat accounting on zvols running on kernels older than Linux 3.19 is no longer supported.
  • The known issues preventing swap on zvols for Linux 3.9 and newer kernels have been resolved. However, deadlocks are still possible for older kernels.

Module Options

  • Changed zfs_arc_c_min default from 4M to 32M to accommodate large blocks.
  • Added metaslab_aliquot to control how many bytes are written to a top-level vdev before moving on to the next one. Increasing this may be helpful when using blocks larger than 1M.
  • Added spa_slop_shift, see 'reserved space' comment in the 'changes to behavior' section.
  • Added zfs_admin_snapshot, enable/disable the use of mkdir/rmdir/mv in .zfs/snapshot directory.
  • Added zfs_arc_lotsfree_percent, throttle I/O when free system memory drops below this percentage.
  • Added zfs_arc_num_sublists_per_state, used to allow more fine-grained locking.
  • Added zfs_arc_p_min_shift, used to set a floor on arc_p.
  • Added zfs_arc_sys_free, the target number of bytes the ARC should leave as free.
  • Added zfs_dbgmsg_enable, used to enable the 'dbgmsg' kstat.
  • Added zfs_dbgmsg_maxsize, sets the maximum size of the dbgmsg buffer.
  • Added zfs_max_recordsize, used to control the maximum allowed record size.
  • Added zfs_arc_meta_strategy, used to select the preferred ARC reclaim strategy.
  • Removed metaslab_min_alloc_size, it was unused internally due to prior changes.
  • Removed zfs_arc_memory_throttle_disable, replaced by zfs_arc_lotsfree_percent.
  • Removed zvol_threads, zvols no longer require a dedicated task queue.
  • See zfs-module-parameters(5) for complete details on available module options.

Bug Fixes

  • Improved documentation with many updates, corrections, and additions.
  • Improved sysv, systemd, initramfs, and dracut support.
  • Improved block pointer validation before issuing IO.
  • Improved scrub pause heuristics.
  • Improved test coverage.
  • Improved heuristics for automatic repair when zfs_recover=1 module option is set.
  • Improved debugging infrastructure via 'dbgmsg' kstat.
  • Improved zpool import performance.
  • Fixed deadlocks in direct memory reclaim.
  • Fixed deadlock on db_mtx and dn_holds.
  • Fixed deadlock in dmu_objset_find_dp().
  • Fixed deadlock during zfs rollback.
  • Fixed kernel panic due to tsd_exit() in ZFS_EXIT.
  • Fixed kernel panic when adding a duplicate dbuf to dn_dbufs.
  • Fixed kernel panic due to security / ACL creation failure.
  • Fixed kernel panic on unmount due to iput taskq.
  • Fixed panic due to corrupt nvlist when running utilities.
  • Fixed panic on unmount due to not waiting for all znodes to be released.
  • Fixed panic with zfs clone from different source and target pools.
  • Fixed NULL pointer dereference in dsl_prop_get_ds().
  • Fixed NULL pointer dereference in dsl_prop_notify_all_cb().
  • Fixed NULL pointer dereference in zfsdev_getminor().
  • Fixed I/Os are now aggregated across ZIO priority classes.
  • Fixed .zfs/snapshot auto-mounting for all supported kernels.
  • Fixed 3-digit octal escapes by changing to 4-digit which disambiguate the output.
  • Fixed hard lockup due to infinite loop in zfs_zget().
  • Fixed misreported 'alloc' value for cache devices.
  • Fixed spurious hung task watchdog stack traces.
  • Fixed direct memory reclaim deadlocks.
  • Fixed module loading in zfs import systemd service.
  • Fixed intermittent libzfs_init() failure to open /dev/zfs.
  • Fixed hot-disk sparing for disk vdevs
  • Fixed system spinning during ARC reclaim.
  • Fixed formatting errors in zfs(8)
  • Fixed zio pipeline stall by having callers invoke next stage.
  • Fixed assertion failed in zrl_tryenter().
  • Fixed memory leak in make_root_vdev().
  • Fixed memory leak in zpool_in_use().
  • Fixed memory leak in libzfs when doing rollback.
  • Fixed hold leak in dmu_recv_end_check().
  • Fixed refcount leak in bpobj_iterate_impl().
  • Fixed misuse of input argument in traverse_visitbp().
  • Fixed missing missing mutex_destroy() calls.
  • Fixed integer overflows in dmu_read/dmu_write.
  • Fixed verify() failure in zio_done().
  • Fixed zio_checksum_error() to only include info for ECKSUM errors.
  • Fixed -ESTALE to force lookup on missing NFS file handles.
  • Fixed spurious failures from dsl_dataset_hold_obj().
  • Fixed zfs {ref}compressratio when using with 4k sector size.
  • Fixed spurious watchdog warnings in prefetch thread.
  • Fixed unfair disk space allocation when vdevs are of unequal size.
  • Fixed ashift accounting error writing to cache devices.
  • Fixed zdb -d has false positive warning when feature@large_blocks=disabled.
  • Fixed zdb -h | -i seg fault.
  • Fixed force-received full stream into a dataset if it has a snapshot.
  • Fixed snapshot error handling.
  • Fixed 'hangs' while deleting large files.
  • Fixed lock contention (rrw_exit) while running a read only load.
  • Fixed error message when creating a pool to include all problematic devices.
  • Fixed Xen virtual block device detection, partitions are now created.
  • Fixed missing E2BIG error handling in zfs_setprop_error().
  • Fixed zpool import assertion in libzfs_import.c.
  • Fixed zfs send -nv output to stderr.
  • Fixed idle pool potentially running itself out of space.
  • Fixed narrow race which allowed read(2) to access beyond fstat(2)'s reported end-of-file.
  • Fixed support for VPATH builds.
  • Fixed double counting of HDR_L2ONLY_SIZE in ARC.
  • Fixed 'BUG: Bad page state' warning from kernel due to writeback flag.
  • Fixed arc_available_memory() to c...
Read more

v0.6.4.2

26 Jun 21:39
Compare
Choose a tag to compare

Supported Kernels

  • Compatible with 2.6.32 - 4.1 Linux kernels.

Bug Fixes

  • Fix panic due to corrupt nvlist when running utilities #3335
  • Fix hard lockup due to infinite loop in zfs_zget() #3349
  • Fix panic on unmount due to iput taskq #3281
  • Improve metadata shrinker performance on pre-3.1 kernels #3501
  • Linux 4.1 compat: use read_iter() / write_iter()
  • Linux 3.12 compat: NUMA-aware per-superblock shrinker
  • Fix spurious hung task watchdog stack traces #3402
  • Fix module loading in zfs import systemd service #3440
  • Fix intermittent libzfs_init() failure to open /dev/zfs #2556

v0.6.4.1

24 Apr 16:25
zfs-0.6.4.1
Compare
Choose a tag to compare

Supported Kernels

  • Compatible with 2.6.32 - 4.0 Linux kernels.

Bug Fixes

  • Fixed io-spare.sh script for ZED.
  • Fixed multiple deadlocks which might occur when reclaiming memory.
  • Fixed excessive CPU usage for meta data heavy workloads when reclaiming the ARC.

v0.6.4

09 Apr 18:06
zfs-0.6.4
Compare
Choose a tag to compare

Supported Kernels

  • Compatible with 2.6.32 - 4.0 Linux kernels.

New Functionality

  • New feature flags (additional details below):
    • spacemap_histogram
    • extensible_dataset
    • bookmarks
    • enabled_txg
    • hole_birth
    • embedded_data
  • New asynchronous I/O (AIO) support.
  • New fallocate() FALLOC_FL_PUNCH_HOLE support.
  • New fragmentation metric in 'zpool list'.
  • New LZ4 compression of meta data.
  • New "redundant_metadata" property controls desired redundancy level.
  • New "overlay" property controls behavior for non-empty mount points.
  • New 'zpool list -v' shows individual disk capacity.
  • New 'zpool get -H' (scripted mode) support.
  • New 'zpool create -t' creates a pool with a temporary name.
  • New arc_summary.py script from FreeNAS.
  • New bash completion support.
  • New DTRACE_PROBES integrated with Linux tracepoints.
  • New compressed block histograms with zdb.
  • New verbatim pool imports with zdb.

New Feature Flags

  • spacemap_histogram

    This features allows ZFS to maintain more information about how free space is organized within the pool. If this feature is enabled, ZFS will set this feature to active when a new space map object is created or an existing space map is upgraded to the new format.

  • extensible_dataset

    This feature allows more flexible use of internal ZFS data structures, and exists for other features to depend on. This feature will be active when the first dependent feature uses it.

  • bookmarks

    This feature enables use of the zfs bookmark subcommand. Bookmarks mark the point in time when a snapshot was created, they can be used as the incremental source for a zfs send command. All bookmarks in the pool can be listed by running zfs list -t bookmark -r poolname.

  • enabled_txg

    Once this feature is enabled ZFS records the transaction group number in which new features are enabled. This has no user-visible impact, but other features may depend on this feature.

  • hole_birth

    This feature improves performance of incremental sends ("zfs send -i") and receives for objects with many holes. The most common case of hole-filled objects is zvols.

  • embedded_data

    This feature improves the performance and compression ratio of highly-compressible blocks. Blocks whose contents can compress to 112 bytes or smaller can take advantage of this feature.

Bug Fixes

  • Fixed I/O error on fs/vol delete corrupting space map.
  • Fixed corruption during spacemap reallocation.
  • Fixed corruption due to faulty logic when undirtying spill block.
  • Fixed stale bonus buffer in recycled dnode_t data corruption.
  • Fixed SA header size accounting.
  • Fixed O_APPEND flag for open(2).
  • Fixed deadlocks caused by direct reclaim by setting PF_FSTRANS.
  • Fixed deadlocks on suspended pools.
  • Fixed deadlock in zio pipeline caused by mutex_exit() race.
  • Fixed deadlock between 'zpool export' and 'zfs list'.
  • Fixed deadlock related to 'zfs rename'.
  • Fixed deadlock related to z_teardown_inactive_lock.
  • Fixed deadlock related to zfs_putpage().
  • Fixed deadlock for meta data intensive workloads.
  • Fixed panic when removing log device.
  • Fixed panic in metaslab init when space_map_open returned ENXIO.
  • Fixed panic due to dirtying inodes in a snapshot.
  • Fixed panic in dbufstat.py.
  • Fixed panic when performing ACL-to-mode translation on empty ACL.
  • Fixed SEEK_HOLE misreporting hole at end of file.
  • Fixed discrepancies in futimens() timestamps.
  • Fixed pool free space leak.
  • Fixed L2ARC compressed buffer leak.
  • Fixed 'zpool history -i' hang.
  • Fixed 'zpool import -t' it should not update the cache file.
  • Fixed multiple 'zfs send/recv' failure modes.
  • Fixed dracut to export ZFS root pool on shutdown.
  • Fixed restore_object now performed in a single transaction.
  • Fixed zvol symbolic link handling.
  • Fixed per-filesystem memory reclaim.
  • Fixed removal of SA in sa_modify_attrs().
  • Fixed readdir for .zfs/snapshot directory.
  • Fixed maximum zvol transfer size.
  • Fixed dmu_sync'ed holes should retain birth time.
  • Fixed ctor/dtor called on each alloc/free not once per slab.
  • Fixed ZED io-spare.sh script.
  • Fixed spurious timeouts when create large pools.
  • Improved 'zpool add' dry-run mode.
  • Improved 'zfs send -p' to only send properties for sent snapshots.
  • Improved 'zpool import' hostid behavior.
  • Improved 'zpool import -XF' behavior.
  • Improved 'zpool import' when multiple duplicate labels are found.
  • Improved 'zfs receive' performance by increasing pipe buffer size.
  • Improved 'zfs send' for small blocks by increasing prefetch.
  • Improved SPL kmem implementation.
  • Improved zvol_get_stats() performance.
  • Improved ashift auto-detect and management.
  • Improved documentation in man pages.
  • Improved handling of damaged block pointers.
  • Improved ZED logging
  • Rate limited debug backtraces to avoid impacting performance.
  • Assorted performance improvements.
  • Substantial changes to realign code base with illumos.
  • Over 200 additional bug fixes.