Skip to content

Release notes for Gluster 9.0

Release date: 05-Feb-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 9 is 8 (reference)

  2. Release 9 will receive maintenance updates around the 30th of every month for the first 3 months post release (i.e Mar'21, Apr'21, May'21). Post the initial 3 months, it will receive maintenance updates every 2 months till EOL.

Major changes and features

Highlights

Added support for:

  • io_uring in Gluster (io_uring support in kernel required along with the presence of liburing library and headers)
  • support running with up to 5000 volumes (Testing done on: 5k volumes on 3 nodes, brick_mux was enabled with default configuration)

Features

  • Added io_uring support for Gluster #1398
  • Added Support for 5K volumes #1613
  • Enabled granular-entry-heal by default #1483
  • Optimizations for rename dir heal #1211
  • Added support for monitoring the epoll/rpc layer #1466
  • Brick mux: Added support to spawn a thread per process basis instead of spawning a per brick #1482
  • Improve rebalance of sparse files #1222
  • LTO/GCC10 - Gluster is now compiled with LTO enabled by default #1772

Major issues

None

Bugs addressed

Bugs addressed since release-8 are listed below.

  • #718 _store_global_opts(), _storeslaves() , _storeopts() should no...
  • #280 Use internal error codes instead of UNIX errnos
  • #1855 Makefile: failed to compile without git repository
  • #1849 geo-rep: The newly setup geo-rep session goes faulty with syn...
  • #1836 posix: Update ret value in posix_get_gfid2path if GF_MALLOC f...
  • #1810 Implement option to generate core dump at will without killin...
  • #1796 afr: call afr_is_lock_mode_mandatory only while xdata is valid
  • #1794 posix: A brick process is getting crashed at the time of grap...
  • #1782 Rebalance is reporting status twice upon stopping, resulting ...
  • #1778 volume set: failed: ganesha.enable is already 'off'.
  • #1775 core: lru_size showing -1 with zero inodes in the list in the...
  • #1772 build: add LTO as a configure option
  • #1743 Modify format to contain more information while raising glust...
  • #1739 test case ./tests/basic/afr/entry-self-heal-anon-dir-off.t is...
  • #1738 [cli] Improper error message on command timeout
  • #1733 api: conscious language changes
  • #1713 Conscious language changes in various xlators
  • #1699 One brick offline with signal received: 11
  • #1692 Test tests/basic/0symbol-check.t should exclude more contrib/...
  • #1663 test case ./tests/bugs/core/bug-1650403.t is getting timed out
  • #1661 test case ./tests/bugs/bug-1064147.t is continuously failing
  • #1659 wrong comparison in glusterd_brick_start() function
  • #1654 Rebalance/migration per directory/file
  • #1653 io-cache xlators lock/unlock are always accompanied by gf_msg...
  • #1627 Stopping rebalance results in a failure
  • #1613 glusterd[brick_mux]: Optimize friend handshake code to avoid ...
  • #1594 ./tests/00-geo-rep/00-georep-verify-non-root-setup.t fails on...
  • #1587 geo-rep: Enable rsync verbose logging to help debug rsync errors
  • #1584 MAINTAINERS file needs to be revisited and updated
  • #1582 ./rfc.sh doesn't pick upstream correctly
  • #1577 cli-rpc: Call to global quota rpc init even though operation ...
  • #1569 Introduce a compile time --enable-brickmux option to run bric...
  • #1565 Implement pass-through option for write-behind
  • #1550 MAINTAINERS list of DHT needs to be updated
  • #154 Optimized CHANGELOG
  • #1546 Wrong permissions syned to remote brick when using halo repli...
  • #1545 fuse_invalidate_entry() - too many repetitive calls to uuid_u...
  • #1544 file tree memory layout optimization
  • #1543 trash: Create inode_table only while feature is enabled
  • #1542 io-stats: Configure ios_sample_buf_size based on sample_inter...
  • #1541 Geo-rep: some files(hardlinks) are missing in slave after mas...
  • #1540 [RFE] Rebalance: suppurt migration to files with hardlinks (n...
  • #1539 fuse mount crashes on graph-switch when reader-thread-count i...
  • #1538 Need to configure optimum inode table hash_size for shd
  • #1529 Fix regression in on demand migration feature
  • #1526 Brick status is 'stopped' if socket file is absent but brick ...
  • #1518 glusterfs: write operations fail when the size is equal or gr...
  • #1516 Use of strchr glusterd_replace_slash_with_hyphen
  • #1511 Crash due to memory allocation
  • #1508 Add-brick with Increasing replica count fails with bad brick ...
  • #1507 Time-to-completion mechansim in rebalance is broken
  • #1506 tests/000-flaky/bugs_nfs_bug-1116503.t is crashed in in gf_me...
  • #1499 why not use JumpConsistentHash to replace SuperFastHash to ch...
  • #1497 Removing strlen and using the already existing len of data_t
  • #1487 Quota accounting check script fails with UnicodeDecodeError
  • #1483 Enable granular-entry-heal by default
  • #1482 [Brick-mux] Attach several posix threads with glusterfs_ctx
  • #1480 First letter in mount path of bricks are getting truncated fo...
  • #1477 nfs server crashes in acl3svc_init
  • #1476 Changes required at Snaphot as gluster-shared-storage mount p...
  • #1475 gluster_shared_storage failed to automount on node reboot on ...
  • #1472 Readdir-ahead leads to inconsistent ls results
  • #1466 RPC handling latencies should be printed in statedump
  • #1464 Avoid dict OR key (link-count) is NULL [Invalid argument] mes...
  • #1459 gluster_shared_storage failed to automount on node reboot on ...
  • #1453 Disperse shd heal activity should be observable
  • #1442 Remove Glusterfs SELinux module from Distribution's selinux-p...
  • #1440 glusterfs 7.7 fuse client memory leak
  • #1438 syncdaemon/syncdutils.py: SyntaxWarning: "is" with a literal....
  • #1434 Inform failures while fop failed in disperse volume due to so...
  • #1428 Redundant check in dict_get_with_refn()
  • #1427 Bricks failed to restart after a power failure
  • #1425 optimization over shard lookup in case of prealloc
  • #1422 Rebalance - new volume option to turn on/off optimization in ...
  • #1418 GlusterFS 8.0: Intermittent error:1408F10B:SSL routines:SSL3_...
  • #1416 Dependencies of performance.parallel-readdir should be automa...
  • #1410 01-georep-glusterd-tests.t times out on centos7 builders
  • #1407 glusterd keep crashing when upgrading from 6.5 to 7.7
  • #1406 shared storage volume fails to mount in ipv6 environment
  • #1404 Client side split-brain resolution using favourite-child-poli...
  • #1403 Tests failure on C8: ./tests/features/ssl-ciphers.t
  • #1401 quota_fsck.py throws TypeError
  • #1400 Annotate synctasks with tsan API if --enable-tsan is requested
  • #1399 Add xlator identifiers in statedumps for mem-pools
  • #1398 io_uring support in glusterfs main branch
  • #1397 glusterd_check_brick_order() is needlessly fetching volname, ...
  • #1396 [bug-1851989] smallfile performance drops after commit the pa...
  • #1395 optimize dict_serialized_length_lk function
  • #1391 allow add-brick from nodes which are not part of auth.allow list
  • #1385 High CPU utilization by self-heal on disperse volumes when an...
  • #1383 Remove contrib/sunrpc/xdr_sizeof.c
  • #1381 Optional FUSE notitications
  • #1379 Fix NULL pointer
  • #1378 Use better terminology and wording in the code
  • #1377 Glustereventsd to accept not only IPv4 but IPv6 packets too.
  • #1376 Runtime & Build Fixes for FreeBSD
  • #1375 cluster: mount.glusterfs is stuck when trying to mount unknow...
  • #1374 fuse interrupt issues identified in code review
  • #1371 [RHEL 8.1] [Input/output error] observed in remove-brick oper...
  • #1366 geo-replication session fails to start with IPV6
  • #1361 Screen .attribute directories on NetBSD
  • #1359 Cleanup --disable-mempool
  • #1357 options should display not only current values but also defau...
  • #1356 cli: type mismatch global_quotad_rpc in cli-quotad-client.c
  • #1355 Heal info desn't show split-brain info if halo is enabled
  • #1354 High CPU utilization by self-heal on disperse volumes with no...
  • #1353 errors seen with gluster v get all all
  • #1352 api: libgfapi symbol versions break LTO in Fedora rawhide/f33
  • #1351 issue with gf_fill_iatt_for_dirent()
  • #1350 Simplify directory scanning
  • #1348 Fuse mount crashes in shard translator when truncating a *rea...
  • #1347 NetBSD build fixes
  • #1339 Rebalance status is not shown correctly after node reboot
  • #1332 Unable to Upgrade to Gluster 7 from Earlier Version
  • #1329 Move platform-dependent filesystem sync to a library function
  • #1328 Linux kernel untar failed with errors immediate after add-brick
  • #1327 Missing directory is not healed in dht
  • #1324 Inconsistent custom xattr on backend directories after bringi...
  • #1320 Unified support for building with sanitizers
  • #1311 Data race when handling connection status
  • #1310 tests/features/flock_interrupt.t leads to error logs
  • #1306 add-brick command is failing
  • #1303 Failures in rebalance due to [Input/output error]
  • #1302 always print errno (and use English locale for strerror() out...
  • #1291 Free volume info lock and mutex
  • #1290 Test case brick-mux-validation-in-cluster.t is failing on RHEL-8
  • #1289 glustereventsd log file isn't reopened after rotation
  • #1285 Use-after-destroy mutex error
  • #1283 Undefined behavior in __builtin_ctz
  • #1282 New file created with xattr "trusted.glusterfs.dht"
  • #1281 Unlinking the file with open fd, returns ENOENT or stale file...
  • #1279 Fix several signed integer overflows
  • #1278 Fix memory leak in afr_priv_destroy()
  • #1275 Make glusterfs compile on all recent and supported versions o...
  • #1272 tests/bugs/glusterd/mgmt-handshake-and-volume-sync-post-glust...
  • #1269 common-ha: ganesha-ha.sh bad test for {rhel,centos} for pcs o...
  • #1263 Fix memory leak in glusterd_store_retrieve_bricks()
  • #1260 Implement minimal proper synchronization for gf_attach
  • #1259 Fix memory leak in gf_cli_gsync_status_output()
  • #1258 dht: Add null check
  • #1255 Improve snapshot clone error message
  • #1254 Prioritize ENOSPC over other lesser priority errors
  • #1253 On Ovirt setup glusterfs performs poorly
  • #1250 geo-rep: Fix corner case in rename on mkdir during hybrid crawl
  • #1249 Drop 'const' type qualifier on return type
  • #1248 Fix thread naming and related convention
  • #1245 Spurious failures in ./tests/basic/ec/ec-quorum-count.t
  • #1243 Modify and return iatt (especially size and block-count) in s...
  • #1242 Rebalance - Improve Crawl time in rebalance
  • #1240 tests/basic/afr/gfid-mismatch-resolution-with-fav-child-polic...
  • #1236 glusterfs-geo-replication requires policycoreutils-python-uti...
  • #1234 Fix ./tests/basic/fencing/afr-lock-heal-basic.t failure
  • #1230 core dumped executing tests/line-coverage/errorgen-coverage.t
  • #1228 seek functionalty is broken
  • #1226 Gluster webhook update throws error
  • #1225 fuse causes glusterd to dump core
  • #1223 Failure of tests/basic/gfapi/gfapi-copy-file-range.t
  • #1222 [RFE] Improve rebalance of sparse files
  • #1221 features/bit-rot: invalid snprintf() buffer size
  • #1220 cluster/ec: return correct error code and log the message in ...
  • #1218 dht: Do opendir selectively in gf_defrag_process_dir
  • #1217 Modify group "virt" to add rpc/network related changes
  • #1214 Running tests/basic/afr/inodelk.t on my VM crashes in dht
  • #1211 AFR: Rename dir heal shouldn't delete the directory at oldloc...
  • #1209 tests: georep-upgrade.t test failure
  • #1208 warning: initializer overrides prior initialization of this s...
  • #1207 warning: passing an object that undergoes default argument pr...
  • #1204 GD_OP_VERSION needs to be updated
  • #1202 Issues reported by Coverity static analysis tool
  • #1200 Handle setxattr and rm race for directory in rebalance
  • #1197 Geo-replication tests are spuriously failing in CI
  • #1196 glusterfsd is having a leak while only mgmt SSL is enabled
  • #1193 Scheduling of snapshot for a volume is failing to create snap...
  • #1190 spurious failure of tests/basic/quick-read-with-upcall.t
  • #1187 Failures in rebalance due to [No space left on device] error ...
  • #1182 geo-rep requires relevant selinux permission for rsync
  • #1179 gnfs split brain when 1 server in 3x1 down (high load)
  • #1172 core, cli, quota: cleanup malloc debugging and stats
  • #1169 common-ha: cluster status shows "FAILOVER" even when all node...
  • #1164 migrate remove-brick operation to mgmt v3 frameowrk
  • #1154 failing test cases
  • #1135 Fix @sysconfdir@ expansion in extras/systemd/glusterd.service...
  • #1126 packaging: overhaul glusterfs.spec(.in) to align with SUSE an...
  • #1116 [bug:1790736] gluster volume list returning wrong volume list...
  • #1101 [bug:1813029] volume brick fails to come online because other...
  • #1097 [bug:1635688] Keep only the valid (maintained/supported) comp...
  • #1096 [bug:1622665] clang-scan report: glusterfs issues
  • #1075 [bug:1299203] resolve-gids is not needed for Linux kernels v3...
  • #1072 [bug:1251614] gf_defrag_fix_layout recursively fails, distrac...
  • #1060 [bug:789278] Issues reported by Coverity static analysis tool
  • #1052 [bug:1693692] Increase code coverage from regression tests
  • #1050 [bug:1787325] TLS/SSL access of GlusterFS mounts is slower th...
  • #1047 [bug:1774379] check for same hostnames(bricks from same host/...
  • #1043 [bug:1793490] snapshot clone volume is not exported via NFS-G...
  • #1009 [bug:1756900] tests are failing in RHEL8 regression
  • #1002 [bug:1679998] GlusterFS can be improved
  • #1000 [bug:1193929] GlusterFS can be improved
  • #990 [bug:1578405] EIO errors when updating and deleting entries c...
  • #952 [bug:1589705] quick-read: separate performance.cache-size tun...
  • #876 [bug:1797099] After upgrade from gluster 7.0 to 7.2 posix-acl...
  • #874 [bug:1793390] Pre-validation failure does not provide any hin...
  • #837 Indicate timezone offset in formatted timestamps
  • #829 gfapi: Using ssl and glfs_set_volfile together does not work
  • #827 undefined symbol: xlator_api
  • #824 Migrate bugzilla workflow to github issues workflow
  • #816 RFE: Data/MetaData separator Translator
  • #790 infinite loop in common-utils.c - gf_rev_dns_lookup_cache() ?
  • #763 thin-arbiter: Testing report