Skip to content

Release notes for Gluster 10.0

Release date: 16-Nov-2021

This is a major release that includes a range of features, code improvements and stability fixes as noted below.

A selection of the key features and changes are documented in this page. A full list of bugs that have been addressed is included further below.

Announcements

  1. Releases that receive maintenance updates post release 10 is 9 (reference)
  2. Release 10 will receive maintenance updates around the 15th of every alternative month, and the release 9 will recieve maintainance updates around 15th every three months.

Builds are available at -

https://download.gluster.org/pub/gluster/glusterfs/10/10.0/

Highlights

  • Major performance improvement of ~20% w.r.t small files as well as large files testing in controlled lab environments #2771

NOTE: The above improvement requires tcmalloc library to be enabled for building. We have tested and verified tcmalloc in X86_64 platforms and is enabled only for x86_64 builds in current release.

  • Randomized port selection for bricks, improves startup time #786
  • Performance improvement with use of readdir instead of readdirp in fix-layout #2241
  • Heal time improvement with bigger window size #2067

Bugs addressed

Bugs addressed since release-10 are listed below.

  • #504 AFR: remove memcpy() + ntoh32() pattern
  • #705 gf_backtrace_save inefficiencies
  • #782 Do not explicitly call strerror(errnum) when logging
  • #786 glusterd-pmap binds to 10K ports on startup (using IPv4)
  • #904 [bug:1649037] Translators allocate too much memory in their xlator_
  • #1000 [bug:1193929] GlusterFS can be improved
  • #1002 [bug:1679998] GlusterFS can be improved
  • #1052 [bug:1693692] Increase code coverage from regression tests
  • #1060 [bug:789278] Issues reported by Coverity static analysis tool
  • #1096 [bug:1622665] clang-scan report: glusterfs issues
  • #1101 [bug:1813029] volume brick fails to come online because other proce
  • #1251 performance: improve __afr_fd_ctx_get() function
  • #1339 Rebalance status is not shown correctly after node reboot
  • #1358 features/shard: wrong "inode->ref" leading to ASSERT in inode_unref
  • #1359 Cleanup --disable-mempool
  • #1380 fd_unref() optimization - do an atomic decrement outside the lock a
  • #1384 mount glusterfs volume, files larger than 64Mb only show 64Mb
  • #1406 shared storage volume fails to mount in ipv6 environment
  • #1415 Removing problematic language in geo-replication
  • #1423 shard_make_block_abspath() should be called with a string of of the
  • #1536 Improve dict_reset() efficiency
  • #1545 fuse_invalidate_entry() - too many repetitive calls to uuid_utoa()
  • #1583 Rework stats structure (xl->stats.total.metrics[fop_idx] and friend
  • #1584 MAINTAINERS file needs to be revisited and updated
  • #1596 'this' NULL check relies on 'THIS' not being NULL
  • #1600 Save and re-use MYUUID
  • #1678 Improve gf_error_to_errno() and gf_errno_to_error() positive flow
  • #1695 Rebalance has a redundant lookup operation
  • #1702 Move GF_CLIENT_PID_GSYNCD check to start of the function.
  • #1703 Remove trivial check for GF_XATTR_SHARD_FILE_SIZE before calling sh
  • #1707 PL_LOCAL_GET_REQUESTS access the dictionary twice for the same info
  • #1717 glusterd: sequence of rebalance and replace/reset-brick presents re
  • #1723 DHT: further investigation for treating an ongoing mknod's linkto file
  • #1749 brick-process: call 'notify()' and 'fini()' of brick xlators in a p
  • #1755 Reduce calls to 'THIS' in fd_destroy() and others, where 'THIS' is
  • #1761 CONTRIBUTING.md regression can only be run by maintainers
  • #1764 Slow write on ZFS bricks after healing millions of files due to add
  • #1772 build: add LTO as a configure option
  • #1773 DHT/Rebalance - Remove unused variable dht_migrate_file
  • #1779 Add-brick command should check hostnames with bricks present in vol
  • #1825 Latency in io-stats should be in nanoseconds resolution, not micros
  • #1872 Question: How to check heal info without glusterd management layer
  • #1885 __posix_writev() - reduce memory copies and unneeded zeroing
  • #1888 GD_OP_VERSION needs to be updated for release-10
  • #1898 schedule_georep.py resulting in failure when used with python3
  • #1909 core: Avoid several dict OR key is NULL message in brick logs
  • #1925 dht_pt_getxattr does not seem to handle virtual xattrs.
  • #1935 logging to syslog instead of any glusterfs logs
  • #1943 glusterd-volgen: Add functionality to accept any custom xlator
  • #1952 posix-aio: implement GF_FOP_FSYNC
  • #1959 Broken links in the 2 replicas split-brain-issue - [Bug]Enhancemen
  • #1960 Add missing LOCK_DESTROY() calls
  • #1966 Can't print trace details due to memory allocation issues
  • #1977 Inconsistent locking in presence of disconnects
  • #1978 test case ./tests/bugs/core/bug-1432542-mpx-restart-crash.t is gett
  • #1981 Reduce posix_fdstat() calls in IO paths
  • #1991 mdcache: bug causes getxattr() to report ENODATA when fetching samb
  • #1992 dht: var decommission_subvols_cnt becomes invalid when config is up
  • #1996 Analyze if spinlocks have any benefit and remove them if not
  • #2001 Error handling in /usr/sbin/gluster-eventsapi produces AttributeErr
  • #2005 ./tests/bugs/replicate/bug-921231.t is continuously failing
  • #2013 dict_t hash-calculation can be removed when hash_size=1
  • #2024 Remove gfs_id variable or at least set to appropriate value
  • #2025 list_del() should not set prev and next
  • #2033 tests/bugs/nfs/bug-1053579.t fails on CentOS 8
  • #2038 shard_unlink() fails due to no space to create marker file
  • #2039 Do not allow POSIX IO backend switch when the volume is running
  • #2042 mount ipv6 gluster volume with serveral backup-volfile-servers,use
  • #2052 Revert the commit 50e953e2450b5183988c12e87bdfbc997e0ad8a8
  • #2054 cleanup call_stub_t from unused variables
  • #2063 Provide autoconf option to enable/disable storage.linux-io_uring du
  • #2067 Change self-heal-window-size to 1MB by default
  • #2075 Annotate synctasks with valgrind API if --enable-valgrind[=memcheck
  • #2080 Glustereventsd default port
  • #2083 GD_MSG_DICT_GET_FAILED should not include 'errno' but 'ret'
  • #2086 Move tests/00-geo-rep/00-georep-verify-non-root-setup.t to tests/00
  • #2096 iobuf_arena structure doesn't need passive and active iobufs, but l
  • #2099 'force' option does not work in the replicated volume snapshot crea
  • #2101 Move 00-georep-verify-non-root-setup.t back to tests/00-geo-rep/
  • #2107 mount crashes when setfattr -n distribute.fix.layout -v "yes" is ex
  • #2116 enable quota for multiple volumes take more time
  • #2117 Concurrent quota enable causes glusterd deadlock
  • #2123 Implement an I/O framework
  • #2129 CID 1445996 Null pointer dereferences (FORWARD_NULL) /xlators/mgmt/
  • #2130 stack.h/c: remove unused variable and reorder struct
  • #2133 Changelog History Crawl failed after resuming stopped geo-replicati
  • #2134 Fix spurious failures caused by change in profile info duration to
  • #2138 glfs_write() dumps a core file file when buffer size is 1GB
  • #2154 "Operation not supported" doing a chmod on a symlink
  • #2159 Remove unused component tests
  • #2161 Crash caused by memory corruption
  • #2169 Stack overflow when parallel-readdir is enabled
  • #2180 CID 1446716: Memory - illegal accesses (USE_AFTER_FREE) /xlators/mg
  • #2187 [Input/output error] IO failure while performing shrink operation w
  • #2190 Move a test case tests/basic/glusterd-restart-shd-mux.t to flaky
  • #2192 4+1 arbiter setup is broken
  • #2198 There are blocked inodelks for a long time
  • #2216 Fix coverity issues
  • #2232 "Invalid argument" when reading a directory with gfapi
  • #2234 Segmentation fault in directory quota daemon for replicated volume
  • #2239 rebalance crashes in dht on master
  • #2241 Using readdir instead of readdirp for fix-layout increases performa
  • #2253 Disable lookup-optimize by default in the virt group
  • #2258 Provide option to disable fsync in data migration
  • #2260 failed to list quota info after setting limit-usage
  • #2268 dht_layout_unref() only uses 'this' to check that 'this->private' i
  • #2278 nfs-ganesha does not start due to shared storage not ready, but ret
  • #2287 runner infrastructure fails to provide platfrom independent error c
  • #2294 dict.c: remove some strlen() calls if using DICT_LIST_IMP
  • #2308 Developer sessions for glusterfs
  • #2313 Long setting names mess up the columns and break parsing
  • #2317 Rebalance doesn't migrate some sparse files
  • #2328 "gluster volume set group samba" needs to include write-b
  • #2330 gf_msg can cause relock deadlock
  • #2334 posix_handle_soft() is doing an unnecessary stat
  • #2337 memory leak observed in lock fop
  • #2348 Gluster's test suite on RHEL 8 runs slower than on RHEL 7
  • #2351 glusterd: After upgrade on release 9.1 glusterd protocol is broken
  • #2353 Permission issue after upgrading to Gluster v9.1
  • #2360 extras: postscript fails on logrotation of snapd logs
  • #2364 After the service is restarted, a large number of handles are not r
  • #2370 glusterd: Issues with custom xlator changes
  • #2378 Remove sys_fstatat() from posix_handle_unset_gfid() function - not
  • #2380 Remove sys_lstat() from posix_acl_xattr_set() - not needed
  • #2388 Geo-replication gets delayed when there are many renames on primary
  • #2394 Spurious failure in tests/basic/fencing/afr-lock-heal-basic.t
  • #2398 Bitrot and scrub process showed like unknown in the gluster volume
  • #2404 Spurious failure of tests/bugs/ec/bug-1236065.t
  • #2407 configure glitch with CC=clang
  • #2410 dict_xxx_sizen variant compilation should fail on passing a variabl
  • #2414 Prefer mallinfo2() to mallinfo() if available
  • #2421 rsync should not try to sync internal xattrs.
  • #2429 Use file timestamps with nanosecond precision
  • #2431 Drop --disable-syslog configuration option
  • #2440 Geo-replication not working on Ubuntu 21.04
  • #2443 Core dumps on Gluster 9 - 3 replicas
  • #2446 client_add_lock_for_recovery() - new_client_lock() should be called
  • #2467 failed to open /proc/0/status: No such file or directory
  • #2470 sharding: [inode.c:1255:__inode_unlink] 0-inode: dentry not found
  • #2480 Brick going offline on another host as well as the host which reboo
  • #2502 xlator/features/locks/src/common.c has code duplication
  • #2507 Use appropriate msgid in gf_msg()
  • #2515 Unable to mount the gluster volume using fuse unless iptables is fl
  • #2522 ganesha_ha (extras/ganesha/ocf): ganesha_grace RA fails in start()
  • #2540 delay-gen doesn't work correctly for delays longer than 2 seconds
  • #2551 Sometimes the lock notification feature doesn't work
  • #2581 With strict-locks enabled clients which are holding posix locks sti
  • #2590 trusted.io-stats-dump extended attribute usage description error
  • #2611 Granular entry self-heal is taking more time than full entry self h
  • #2617 High CPU utilization of thread glfs_fusenoti and huge delays in som
  • #2620 Granular entry heal purging of index name trigger two lookups in th
  • #2625 auth.allow value is corrupted after add-brick operation
  • #2626 entry self-heal does xattrops unnecessarily in many cases
  • #2649 glustershd failed in bind with error "Address already in use"
  • #2652 Removal of deadcode: Pump
  • #2659 tests/basic/afr/afr-anon-inode.t crashed
  • #2664 Test suite produce uncompressed logs
  • #2693 dht: dht_local_wipe is crashed while running rename operation
  • #2771 Smallfile improvement in glusterfs
  • #2782 Glustereventsd does not listen on IPv4 when IPv6 is not available
  • #2789 An improper locking bug(e.g., deadlock) on the lock up_inode_ctx->c
  • #2798 FUSE mount option for localtime-logging is not exposed
  • #2816 Glusterfsd memory leak when subdir_mounting a volume
  • #2835 dht: found anomalies in dht_layout after commit c4cbdbcb3d02fb56a62
  • #2857 variable twice initialization.