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
- Releases that receive maintenance updates post release 10 is 9 (reference)
- 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.