Skip to content

Release notes for Gluster 8.0

Release date: 09-July-2020

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 8 are, 7 and 8 (reference)

  2. Release 8 will receive maintenance updates around the 10th of every month for the first 3 months post release (i.e Aug'20, Sep'20, Oct'20). Post the initial 3 months, it will receive maintenance updates every 2 months till EOL.

Major changes and features

Highlights

  • Several stability fixes addressing
  • coverity, clang-scan, address sanitizer and valgrind reported issues
  • removal of unused and hence, deprecated code and features
  • Performance Improvements
  • CentOS 8 and RHEL 8 is supported

Features

  • Implemented seek file operation for open-behind
  • Now storage.reserve option will take size of disk as input instead of percentage
  • Added Functionality to enable log rotation for user serviceable snapshot's logs
  • Mandatory locks enhancements in replicate subvolumes
  • To validate other memory allocation implementations instead of libc's malloc added an option to build with tcmalloc library
  • Integrated Thin-arbiter with GD1
  • Client Handling of Elastic Clusters
  • The package glusterfs-libs is replaced by libgfchangelog0, libgfrpc0, libgfxdr0, and libglusterfs0; and additional libraries in libgfapi0, libglusterd0

Major issues

None

Bugs addressed

Bugs addressed since release-7 are listed below.

  • #789278: Issues reported by Coverity static analysis tool
  • #1158130: Not possible to disable fopen-keeo-cache when mounting
  • #1183054: rpmlint throws couple of errors for RPM spec file
  • #1193929: GlusterFS can be improved
  • #1387404: geo-rep: gsync-sync-gfid binary installed in /usr/share/...
  • #1410439: glusterfind pre output file is empty
  • #1423442: group files to set volume options should have comments
  • #1430623: pthread mutexes and condition variables are not destroyed
  • #1489610: glusterfind saves var data under $prefix instead of localstatedir
  • #1507896: glfs_init returns incorrect errno on faliure
  • #1514683: Removal of bricks in volume isn't prevented if remaining brick doesn't contain all the files
  • #1538900: Found a missing unref in rpc_clnt_reconnect
  • #1554286: Xattr not updated if increasing the retention of a WORM/Retained file
  • #1593542: ctime: Upgrade/Enabling ctime feature wrongly updates older files with latest {a|m|c}time
  • #1620580: Deleted a volume and created a new volume with similar but not the same name. The kubernetes pod still keeps on running and doesn't crash. Still possible to write to gluster mount
  • #1622665: clang-scan report: glusterfs issues
  • #1626543: dht/tests: Create a .t to test all possible combinations for file rename
  • #1635688: Keep only the valid (maintained/supported) components in the build
  • #1636297: Make it easy to build / host a project which just builds glusterfs translator
  • #1644322: flooding log with "glusterfs-fuse: read from /dev/fuse returned -1 (Operation not permitted)"
  • #1651445: [RFE] storage.reserve option should take size of disk as input instead of percentage
  • #1664335: [geo-rep]: Transport endpoint not connected with arbiter volumes
  • #1665358: allow regression to not run tests with nfs, if nfs is disabled.
  • #1668239: [man page] Gluster(8) - Missing disperse-data parameter Gluster Console Manager man page
  • #1668286: READDIRP incorrectly updates posix-acl inode ctx
  • #1676479: read-ahead and io-cache degrading performance on sequential read
  • #1688115: Data heal not checking for locks on source & sink(s) before healing
  • #1689097: gfapi: provide an option for changing statedump path in glfs-api.
  • #1690454: mount-shared-storage.sh does not implement mount options
  • #1693692: Increase code coverage from regression tests
  • #1694920: Inconsistent locking in presence of disconnects
  • #1697293: DHT: print hash and layout values in hexadecimal format in the logs
  • #1698042: quick-read cache invalidation feature has the same key of md-cache
  • #1707731: [Upgrade] Config files are not upgraded to new version
  • #1708603: [geo-rep]: Note section in document is required for ignore_deletes true config option where it might delete a file
  • #1708929: Add more test coverage for shd mux
  • #1716695: Fix memory leaks that are present even after an xlator fini [client side xlator]
  • #1716979: Multiple disconnect events being propagated for the same child
  • #1717754: Enable features.locks-notify-contention by default
  • #1717824: Fencing: Added the tcmu-runner ALUA feature support but after one of node is rebooted the glfs_file_lock() get stucked
  • #1717827: tests/geo-rep: Add test case to validate non-root geo-replication setup
  • #1719290: Glusterfs mount helper script not working with IPv6 because of regular expression or man is wrong
  • #1720463: [Thin-arbiter] : Wait for connection with TA node before sending lookup/create of ta-replica id file
  • #1720566: Can't rebalance GlusterFS volume because unix socket's path name is too long
  • #1721590: tests/bugs/posix/bug-1040275-brick-uid-reset-on-volume-restart.t is failing
  • #1721686: Remove usage of obsolete function usleep()
  • #1722507: Incorrect reporting of type/gfid mismatch
  • #1722541: stale shd process files leading to heal timing out and heal deamon not coming up for all volumes
  • #1722546: do not assert in inode_unref if the inode table cleanup has started
  • #1722598: dump the min and max latency of each xlator in statedump
  • #1722698: DHT: severe memory leak in dht rename
  • #1722740: [GSS] geo-replication sessions going faulty
  • #1722802: Incorrect power of two calculation in mem_pool_get_fn
  • #1722977: ESTALE change in fuse breaks get_real_filename implementation
  • #1723280: windows cannot access mountpoint exportd from a disperse volume
  • #1723402: Brick multiplexing is not working.
  • #1723455: volume set group description missing space leading to words being merged in help output
  • #1723658: [In-service] Post upgrade glusterd is crashing with a backtrace on the upgraded node while issuing gluster volume status from non-upgraded nodes
  • #1723761: [Ganesha]: truncate operation not updating the ctime
  • #1723890: Crash in glusterd when running test script bug-1699339.t
  • #1724024: use more secure mode for mkdir operations
  • #1724184: Thin-arbiter: SHD takes lock and inspects the state on TA during every index crawl
  • #1725034: gluster volume help showing multiple commands for top instead of one.
  • #1725211: User serviceable snapshots (USS) are not accessible after changing transport.socket.bind-address of glusterd
  • #1726205: Windows client fails to copy large file to GlusterFS volume share with fruit and streams_xattr VFS modules via Samba
  • #1726783: snapd crashes sometimes
  • #1726906: get-state does not show correct brick status
  • #1727068: Deadlock when generating statedumps
  • #1727081: Disperse volume : data corruption with ftruncate data in 4+2 config
  • #1727107: geo-replication/setup.py missing license details in setup()
  • #1727248: [GNFS] showmout -a cause gnfs crash
  • #1727256: Directory pending heal in heal info output
  • #1727329: glustershd dumped core with seg fault at afr_has_quorum
  • #1727852: gluster-block: improvements to volume group profile options list
  • #1728047: interrupts leak memory
  • #1728417: Cleanup references to Hadoop in code base
  • #1728554: Spelling errors
  • #1728683: [geo-rep] gluster-mountbroker missing a brief description of what the argument does in # gluster-mountbroker (add|remove|setup) --help
  • #1728766: Volume start failed when shd is down in one of the node in cluster
  • #1728770: Failures in remove-brick due to [Input/output error] errors
  • #1729085: [EC] shd crashed while heal failed due to out of memory error.
  • #1729107: Memory leak in glusterfsd process
  • #1729463: gluster v geo-rep status command timing out
  • #1729772: Disperse volume : Ganesha crash with IO in 4+2 config when one glusterfsd restart every 600s
  • #1729847: Fix spurious failure of tests/bugs/replicate/bug-1717819-metadata-split-brain-detection.t
  • #1730175: Seeing failure due to "getxattr err for dir [No data available]" in rebalance
  • #1730409: core file generated - when EC volume stop and start is executed for 10 loops on a EC+Brickmux setup
  • #1730715: An Input/Output error happens on a disperse volume when doing unaligned writes to a sparse file
  • #1730953: mount generates errors after umount
  • #1731920: [geo-rep]: gluster command not found while setting up a non-root session
  • #1732496: [Coverity] RETURN_LOCAL in __nlc_inode_ctx_get()
  • #1732717: fuse: Limit the number of inode invalidation requests in the queue
  • #1733042: cluster.rc Create separate logdirs for each host instance
  • #1733166: potential deadlock while processing callbacks in gfapi
  • #1733425: Setting volume option when one of the glusterd is stopped in the cluster, post glusterd restart seeing couldn't find vol info in glusterd logs and shd, brick process offline
  • #1733935: Open fd heal should filter O_APPEND/O_EXCL
  • #1734026: Cannot see the "trusted.glusterfs.mdata" xattr for directory on a new brick after rebalance
  • #1734252: Heal not completing after geo-rep session is stopped on EC volumes.
  • #1734299: ctime: When healing ctime xattr for legacy files, if multiple clients access and modify the same file, the ctime might be updated incorrectly.
  • #1734370: atime/mtime is not restored after healing for entry self heals
  • #1734738: Unable to create geo-rep session on a non-root setup.
  • #1736482: capture stat failure error while setting the gfid
  • #1737288: nfs client gets bad ctime for copied file which is on glusterfs disperse volume with ctime on
  • #1737291: features/locks: avoid use after freed of frame for blocked lock
  • #1737484: geo-rep syncing significantly behind and also only one of the directories are synced with tracebacks seen
  • #1737676: Upgrading a Gluster node fails when user edited glusterd.vol file exists
  • #1737778: ocf resource agent for volumes don't work in non-standard environment
  • #1738419: read() returns more than file size when using direct I/O
  • #1738763: [EC] : fix coverity issue
  • #1738786: ctime: If atime is updated via utimensat syscall ctime is not getting updated
  • #1739360: [GNFS] gluster crash with nfs.nlm off
  • #1740017: tests/bugs/replicate/bug-880898.t created a core file.
  • #1741734: gluster-smb:glusto-test access gluster by cifs test write report Device or resource busy
  • #1741779: Fix spelling errors
  • #1741890: geo-rep: Changelog archive file format is incorrect
  • #1743020: glusterd start is failed and throwing an error Address already in use
  • #1743069: bug-1482023-snpashot-issue-with-other-processes-accessing-mounted-path.t fails in brick mux regression spuriously
  • #1743094: glusterfs build fails on centos7
  • #1743200: ./tests/bugs/glusterd/bug-1595320.t is failing
  • #1743573: fuse client hung when issued a lookup "ls" on an ec volume
  • #1743652: CentOs 6 GlusterFS client creates files with time 01/01/1970
  • #1744519: log aio_error return codes in posix_fs_health_check
  • #1744548: Setting cluster.heal-timeout requires volume restart
  • #1745965: glusterd fails to start due to SIGABRT dumping core
  • #1745967: File size was not truncated for all files when tried with rebalance in progress.
  • #1746228: systemctl start glusterd is getting timed out on the scaled setup with 2000 volumes
  • #1746320: SHORT-WRITE error leads to crash
  • #1746810: markdown files containing 404 links
  • #1747746: The result (hostname) of getnameinfo for all bricks (ipv6 addresses) are the same, while they are not.
  • #1748448: syncop: Bail out if frame creation fails
  • #1748744: bug-1402841.t-mt-dir-scan-race.t fails spuriously
  • #1748836: Application should know when update size/version went bad
  • #1749322: glustershd can not decide heald_sinks, and skip repair, so some entries lingering in volume heal info
  • #1750387: Deprecated log rotate command still present in "# gluster v help"
  • #1750618: Cleanup of executable in tests/bugs/gfapi/bug-1447266/bug-1447266.t not done
  • #1751134: Spurious failure tests/bugs/replicate/bug-1734370-entry-heal-restore-time.t
  • #1751907: bricks gone down unexpectedly
  • #1752330: seeing error message in glustershd.log on volume start(or may be as part of shd graph regeneration) inet_pton failed with return code 0 [Invalid argument]
  • #1752331: Test tests/basic/volume-scale-shd-mux.t is failing on upstream CI
  • #1753569: git clone fails on gluster volumes exported via nfs-ganesha
  • #1753592: Segmentation fault occurs while truncate file
  • #1753843: [Disperse volume]: Regression in IO performance seen in sequential read for large file
  • #1753857: geo-rep: performance improvement while syncing heavy renames with existing destination
  • #1753859: Typos in glusterd log messages
  • #1753880: Set the default lru-limit in fuse to a smaller number
  • #1753928: geo-rep: non-root session going fault due improper sub-command
  • #1754448: Re-alignment of Structure attributes
  • #1754477: Thin-arbiter: Raise error in CLI if replica-count is not 2
  • #1755344: glustershd.log getting flooded with "W [inode.c:1017:inode_find] (-->/usr/lib64/glusterfs/6.0/xlator/cluster/disperse.so(+0xe3f9) [0x7fd09b0543f9] -->/usr/lib64/glusterfs/6.0/xlator/cluster/disperse.so(+0xe19c) [0x7fd09b05419 TABLE NOT FOUND"
  • #1755900: heketidbstorage bricks go down during PVC creation
  • #1756211: tests/bugs/shard/bug-1272986.t fails
  • #1756900: tests are failing in RHEL8 regression
  • #1756938: afr: support split-brain CLI for replica 3
  • #1757399: Rebalance is causing glusterfs crash on client node
  • #1758579: Rebalance causing IO Error - File descriptor in bad state
  • #1758878: # gluster v info --xml is always returning 3 for all Nx3 volumes
  • #1758984: Enable direct-io options in group virt
  • #1759002: Spurious failure tests/bugs/replicate/bug-1744548-heal-timeout.t
  • #1759081: Spurious failure of /tests/bugs/replicate/bug-1134691-afr-lookup-metadata-heal.t
  • #1760187: Implement seek fop
  • #1760189: Use replica aware seek fop
  • #1760467: rebalance start is succeeding when quorum is not met
  • #1761759: Failure in ./tests/basic/posix/shared-statfs.t
  • #1761769: On some distros bug-1272986.t takes more than 2 minutes to run
  • #1762220: [geo-rep] sync_method showing rsync instead of tarssh post in-service upgrade
  • #1762438: DHT- gluster rebalance status shows wrong data size after rebalance is completed successfully
  • #1763036: glusterfsd crashed with "'MemoryError' Cannot access memory at address"
  • #1763439: [GSS] geo-rep entering into faulty state with OSError: [Errno 13] Permission denied
  • #1764110: tests/bugs/shard/unlinks-and-renames.t fails on RHEL8
  • #1764119: gluster rebalance status doesn't show detailed information when a node is rebooted
  • #1764129: quota_fsck script KeyError: 'contri_size'
  • #1764208: cgroup control-cpu-load.sh script not working
  • #1764418: Add Mohit & Sanju as glusterd/cli maintainers
  • #1765017: gf_event doesn't work for glfsheal process
  • #1765155: replication shouldn't modify xattr-req coming from parent
  • #1765186: Problematic coding practices at logger
  • #1765421: DHT: Add comments to the code
  • #1765426: test: fix non-root geo-rep test case
  • #1765542: Add Sunny Kumar as co-maintainer of Geo-replication component
  • #1768407: glusterfsd memory leak observed after enable tls
  • #1768896: Long method in glusterfsd - set_fuse_mount_options(...)
  • #1769712: check if grapj is ready beforce process cli command
  • #1769754: dht_readdirp_cbk: Do not strip out entries with invalid stats
  • #1771365: libglusterfs/dict.c : memory leaks
  • #1771577: [RHEL 6] Geo-replication session not starting after creation
  • #1771895: geo-rep: Improve debugging in log_raise_exception
  • #1772006: NULL dict messages flooding fuse mount log
  • #1773530: ctime value is different from atime/mtime on a create of file
  • #1773856: Set volume option when one of the node is powered off, After powering the node brick processes are offline
  • #1774011: Heal Info is hung when I/O is in progress on a gluster block volume
  • #1774866: man page update needed for gluster volume top command
  • #1775612: Remove guest access by default for GlusterFS volume SMB shares added by hook scripts
  • #1776264: RFE: systemd should restart glusterd on crash
  • #1776757: DHT - Reduce methods scope
  • #1776784: glfsheal crash on unexpected volume name
  • #1776801: Bricks are not available when volume create fails
  • #1776892: [patch] .dirstamp should be in ignored
  • #1778457: Missing error logs(afr/self-heald )
  • #1779055: glusterfs process memory leak in ior test
  • #1779089: glusterfsd do not release posix lock when multiple glusterfs client do flock -xo to the same file paralleled
  • #1779742: tests/00-geo-rep/00-georep-verify-non-root-setup.t fail on freshly installed builder
  • #1779760: Improve logging in EC, client and lock xlator
  • #1780190: glfsheal should be installed and invoked as architecture-dependent binary helper
  • #1780260: v7 fails to build on Debian 9 [patch?]
  • #1781440: event_slot_alloc not able to return index after reach slot_used count to 1024
  • #1782200: glusterd restart failing to start.
  • #1782495: GlusterFS brick process crash
  • #1784375: 'gluster volume set disable.nfs' accidentally killed unexpected process, and forced a data brick offline.
  • #1785143: Multiple glusterfsd process spawn when glusterd restart during a volume start.
  • #1785208: glusterfs client process coredump
  • #1785611: glusterfsd cashes after a few seconds
  • #1785998: change the error message for heal statistics to reflect its supportability for disperse volume
  • #1786276: [geo-rep] Help for positional argument SLAVE in schedule_georep.py.in isn't clear.
  • #1786459: unable to enable brick-multiplex feature
  • #1786478: default option is disappeared in volume info after volume reset
  • #1786679: Duplicate entries in 'ls' output after a volume expansion
  • #1786722: Functionality to enable log rotation for user serviceable snapshot's logs.
  • #1787122: glusterd allowing to set server.statedump-path to file, non-existent file and non-existent paths
  • #1787274: heal not actually healing metadata of a regular file when only time stamps are changed(data heal not required)
  • #1787554: Unable to set/modify optimistic-change-log for replicate volumes
  • #1789439: Glusterfind pre command fails
  • #1789478: S57glusterfind-delete-post.py not python3 ready (does not decode bytestring)
  • #1790748: Remove extra argument
  • #1790870: Memory corruption when sending events to an IPv6 host
  • #1791682: fail to build on recent Fedora
  • #1792276: config ssh-port can accept negative and outside allowed port range value
  • #1792707: xlators/features/quota/src/quota.c:quota_log_usage
  • #1793378: dht_hash_compute() crashes when it receives a zero length name
  • #1793852: Mounts fails after reboot of 1/3 gluster nodes
  • #1793995: gluster crash when built without gNFS support
  • #1797869: bitrot: Number of signing process threads should be configurable.
  • #1797882: Segmentation fault occurs while truncate file
  • #1797934: Client should propagate ping event from brick
  • #1800583: Halo replication is not working
  • #1800956: Rebalance : Status lists failures on stopping rebalance while it is in progress
  • #1801623: spurious self-heald.t failure
  • #1801624: Heal pending on volume, even after all the bricks are up
  • #1801684: Memory corruption when glfs_init() is called after glfs_fini()
  • #1804786: mount.glusterfs strips off "/" from subdir-mounts
  • #1808421: WORM: If autocommit-period 0 file will be WORMed with 0 Byte during initial write
  • #1808875: [brickmux]: glustershd crashed when rebooting 1/3 nodes at regular intervals
  • #1810042: Changes to gluster peer probe in nightly build breaks ansible:gluster_volume call
  • #1810842: frequent heal observed when file opened during one brick is down
  • #1810934: Segfault in FUSE process, potential use after free
  • #1811631: brick crashed when creating and deleting volumes over time (with brick mux enabled only)
  • #1812144: Add a warning message during volume expansion or resize on volume with snapshots
  • #1812353: create-export-ganesha script: mention labelled nfs parameter
  • #154 Optimized CHANGELOG
  • #237 Validate other memory allocation implementations instead of l...
  • #475 Reduce the number or threads used in the brick process
  • #613 Mandatory locks enhancements in replicate subvolumes
  • #657 Structured logging format support
  • #663 Add Ganesha HA bits back to glusterfs code repo
  • #687 Thin-arbiter integration with GD1
  • #699 executable program will crash if linked libgfapi together wit...
  • #703 provide mechanism to test individual xlators
  • #721 Introduce quorum-count option in disperse volumes as well
  • #723 Provide scripts to reset xattrs of the entries which could be...
  • #725 Disperse: A way to read from specific bricks
  • #741 Client Handling of Elastic Clusters
  • #745 storage.reserve enhancement for posix_write
  • #748 Improve MAKE_HANDLE_GFID_PATH macro and posix_handle_gfid_path()
  • #753 Remove fetching items in gf_cli_replace_brick(), gf_cli_reset...
  • #755 [RFE] Geo-replication code improvements
  • #761 Improve MAKE_HANDLE_PATH macro
  • #763 thin-arbiter: Testing report
  • #765 nfs.rpc-auth-allow gluster7 + gnfs
  • #788 run-with-valgrind option causes gnfs and quota to fail to start
  • #824 Migrate bugzilla workflow to github issues workflow
  • #832 Permission Denied in logs
  • #884 [bug:1808688] Data corruption with asynchronous writes (pleas...
  • #891 [bug:1802451] Optimize posix code to improve file creation
  • #977 [bug:1811631] brick crashed when creating and deleting volume...
  • #999 [bug:1791285] Changing permissions on root directory(director...
  • #1000 [bug:1193929] GlusterFS can be improved
  • #1038 [bug:1787138] Crash on rpcsvc_drc_client_unref() - fails on G...
  • #1042 [bug:1806499] afr-lock-heal-basic.t and /afr-lock-heal-advanc...
  • #1044 [bug:1790730] Add a basic test file to glusterfind
  • #1052 [bug:1693692] Increase code coverage from regression tests
  • #1060 [bug:789278] Issues reported by Coverity static analysis tool
  • #1067 [bug:1661889] Metadata heal picks different brick each time a...
  • #1097 [bug:1635688] Keep only the valid (maintained/supported) comp...
  • #1102 dht: gf_defrag_process_dir is called even if gf_defrag_fix_la...
  • #1104 geo-replication: descriptive message when worker crashes due ...
  • #1105 [bug:1794263] Multiple imports from the same library in the ....
  • #1127 Mount crash during background shard cleanup
  • #1134 snap_scheduler.py init failing with "TypeError: Can't mix str...
  • #1140 getfattr returns ENOATTR for system.posix_acl_access on dispe...
  • #1141 Make SSL connection messages useful
  • #1142 log the ENOENT error in posix_pstat
  • #1144 [Disperse] Add test for reset-brick for disperse volume
  • #1146 gfapi/Upcall: Potential deadlock in synctask threads processi...
  • #1149 Add error logs to debug failures in ./tests/bugs/protocol/bug...
  • #1150 Avoid dict_del logs in posix_is_layout_stale while key is NULL
  • #1152 Spurious failure of tests/bugs/protocol/bug-1433815-auth-allow.t
  • #1153 Spurious failure of ./tests/bugs/snapshot/bug-1111041.t
  • #1154 failing test cases
  • #1156 Spurious failure of tests/features/worm.t
  • #1158 spurious failure of tests/bugs/glusterd/serialize-shd-manager...
  • #1160 sys_stat should be used instead of stat
  • #1161 tests: file offsets and sizes shouldn't be truncated to 32-bi...
  • #1162 spurious failure of test case tests/bugs/glusterd/removing-mu...
  • #1169 common-ha: cluster status shows "FAILOVER" even when all node...
  • #1180 (glusterfs-8.0) - GlusterFS 8.0 tracker
  • #1179 gnfs split brain when 1 server in 3x1 down (high load)
  • #1220 cluster/ec: return correct error code and log the message in case of BADFD
  • #1223 Failure of tests/basic/gfapi/gfapi-copy-file-range.t
  • #1116 [bug:1790736] gluster volume list returning wrong volume list / volume list time out
  • #990 [bug:1578405] EIO errors when updating and deleting entries co...
  • #1126 packaging: overhaul glusterfs.spec(.in) to align with SUSE and...
  • #1225 fuse causes glusterd to dump core
  • #1243 Modify and return iatt (especially size and block-count) in sh...
  • #1254 Prioritize ENOSPC over other lesser priority errors
  • #1303 Failures in rebalance due to [Input/output error]