# Release notes for Gluster 6.0 This is a major release that includes a range of code improvements and stability fixes along with a few features 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](#announcements) - [Major changes and features](#major-changes-and-features) - [Major issues](#major-issues) - [Bugs addressed in the release](#bugs-addressed) ## Announcements 1. Releases that receive maintenance updates post release 6 are, 4.1 and 5 ([reference](https://www.gluster.org/release-schedule/)) 2. Release 6 will receive maintenance updates around the 10th of every month for the first 3 months post release (i.e Apr'19, May'19, Jun'19). Post the initial 3 months, it will receive maintenance updates every 2 months till EOL. ([reference](https://lists.gluster.org/pipermail/announce/2018-July/000103.html)) 3. A series of features/xlators have been deprecated in release 6 as follows, for upgrade procedures from volumes that use these features to release 6 refer to the release 6 [upgrade guide](https://docs.gluster.org/en/latest/Upgrade-Guide/upgrade_to_6/). This deprecation was announced at the gluster-users list [here](https://lists.gluster.org/pipermail/gluster-users/2018-July/034400.html). Features deprecated: - Block device (bd) xlator - Decompounder feature - Crypt xlator - Symlink-cache xlator - Stripe feature - Tiering support (tier xlator and changetimerecorder) ## 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 - Client side inode garbage collection - This release addresses one of the major concerns regarding FUSE mount process memory footprint, by introducing client side inode garbage collection - See [standalone](#standalone) section for more details - Performance Improvements - `--auto-invalidation` on FUSE mounts to leverage kernel page cache more effectively Features are categorized into the following sections, - [Management](#management) - [Standalone](#standalone) - [Developer](#developer) ### Management **NOTE:** There have been several stability improvements around the brick multiplexing feature #### GlusterD2 GlusterD2 (or GD2, in short) was planned as the next generation management service for Gluster project. Currently, GD2s main focus is not replacing `glusterd`, but to serve as a thin management layer when using gluster with container orchestration systems. There is no specific update around GD2 provided as a part of this release. ### Standalone #### 1. client-side inode garbage collection via LRU list A FUSE mount's inode cache can now be limited to a maximum number, thus reducing the memory footprint of FUSE mount processes. See the lru-limit option in `man 8 mount.glusterfs` for details. NOTE: Setting this to a low value (say less than 4000), will evict inodes from FUSE and Gluster caches at a much faster rate, and can cause performance degrades. The setting has to be determined based on the available client memory and required performance. #### 2. Glusterfind tool enhanced with a filter option glusterfind tool has an added option "--type", to be used with the "--full" option. The option supports finding and listing files or directories only, and defaults to both if not specified. Example usage with the pre and query commands are given below, 1. Pre command ([reference](https://docs.gluster.org/en/latest/GlusterFS%20Tools/glusterfind/#pre-command)): - Lists both files and directories in OUTFILE: `glusterfind pre SESSION_NAME VOLUME_NAME OUTFILE` - Lists only files in OUTFILE: `glusterfind pre SESSION_NAME VOLUME_NAME OUTFILE --type f` - Lists only directories in OUTFILE: `glusterfind pre SESSION_NAME VOLUME_NAME OUTFILE --type d` 2. Query command: - Lists both files and directories in OUTFILE: `glusterfind query VOLUME_NAME --full OUTFILE` - Lists only files in OUTFILE: `glusterfind query VOLUME_NAME --full --type f OUTFILE` - Lists only directories in OUTFILE: `glusterfind query VOLUME_NAME --full --type d OUTFILE` #### 3. FUSE mounts are enhanced to handle interrupts to blocked lock requests FUSE mounts are enhanced to handle interrupts to blocked locks. For example, scripts using the flock (`man 1 flock`) utility without the -n(nonblock) option against files on a FUSE based gluster mount, can now be interrupted when the lock is not granted in time or using the -w option with the same utility. #### 4. Optimized/pass-through distribute functionality for 1-way distributed volumes **NOTE:** There are no user controllable changes with this feature The distribute xlator now skips unnecessary checks and operations when the distribute count is one for a volume, resulting in improved performance. #### 5. Options introduced to disable invalidations of kernel page cache For workloads, where multiple FUSE client mounts do not concurrently operate on any files in the volume, it is now possible to maintain a longer duration kernel page cache using the following options in conjunction, - Setting `--auto-invalidation` option to "no" on the glusterfs FUSE mount process - Disabling the volume option `performance.global-cache-invalidation` This enables better performance as the data is served from the kernel page cache where possible. #### 6. Changes to gluster based SMB share management Previously all GlusterFS volumes were being exported by default via smb.conf in a Samba-CTDB setup. This includes creating a share section for CTDB lock volume too which is not recommended. Along with few syntactical errors these scripts failed to execute in a non-Samba setup in the absence of necessary configuration and binary files. Hereafter newly created GlusterFS volumes are not exported as SMB share via Samba unless either of 'user.cifs' or 'user.smb' volume set options are enabled on the volume. The existing GlusterFS volume share sections in smb.conf will remain unchanged. ### Developer #### 1. Gluster code can be compiled and executed using [TSAN](https://clang.llvm.org/docs/ThreadSanitizer.html) While configuring the sources for a build use the extra option `--enable-tsan` to enable thread sanitizer based builds. #### 2. gfapi: A class of APIs have been enhanced to return pre/post gluster_stat information A set of [apis](https://github.com/gluster/glusterfs/blob/release-6/api/src/gfapi.map#L245) have been enhanced to return pre/post gluster_stat information. Applications using gfapi would need to adapt to the newer interfaces to compile against release-6 apis. Pre-compiled applications, or applications using the older API SDK will continue to work as before. ## Major issues **None** ## Bugs addressed Bugs addressed since release-5 are listed below.