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
-
Releases that receive maintenance updates post release 8 are, 7 and 8 (reference)
-
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 bylibgfchangelog0
,libgfrpc0
,libgfxdr0
, andlibglusterfs0
; and additional libraries inlibgfapi0
,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]