This release features many additions, improvements, bug fixes, and stability updates to the code base. Among others, this release includes considerable overhauls of dependency scripts, testing facilities, and documentation as well as optimized metadata operations and a new distribution mode (the guided distributor) which allows defining a specific distribution of data on a per directory or file basis. Moreover, GekkoFS is now using C++17 and supports the most recent dependencies. Finally, GekkoFS is now published under the GNU General Public License version 3. Please refer to the change log for more detailed information.

New

  • GekkoFS now uses C++17 (!74).
  • Added a new dirents_extended function which can improve find operations. A corresponding example how to use this function can be found at examples/gfind/gfind.cpp with a non-mpi version at examples/gfind/sfind.cpp (!73).
  • Code coverage reports for the source code are now generated and tracked (!77).
  • Considerable overhaul and new features of the GekkoFS testing facilities (!120, !121).
  • Namespace have been added to the complete GekkoFS codebase (!82).
  • The system call socketcall() is now supported (!91).
  • System call error codes are now checked in syscall_no_intercept scenarios in non x86 architectures (!92).
  • GekkoFS documentation is now automatically generated and published here (!95, !109, !125).
  • Added a guided distributor mode which allows defining a specific distribution of data on a per directory or file basis (!39).
  • For developers:
    • A convenience library has been added for unit testing (!94).
    • Code format is now enforced with the clang-format tool (!66). A new script is available in scripts/check_format.sh for easy of use.
    • GKFS_METADATA_MOD macro has been added allowing the MetadataModule to be logged, among others (!98).
    • A convenience library has been added for path operations: path_util (!102).

Changed

  • GekkoFS license has been changed to GNU General Public License version 3 (!88)
  • Create, stat, and remove operation have been refactored and improved, reducing the number of required RPCs per operation (!60).
  • Syscall_intercept now supports glibc version 2.3 or newer (!72).
  • All arithmetic operations based on block sizes, and therefore chunk computations, are now constexpr (!75).
  • The CI pipeline has been significantly optimized (!103).
  • The GekkoFS dependency download and compile scripts have been severely refactored and improved (!111).
  • GekkoFS now supports the latest dependency versions (!112).

Removed

  • Boost is no longer used for the client and daemon (!90, !122, !123). Note that tests still require Boost_preprocessor.
  • Unneeded sources in CMake have been removed (!101).

Fixed

  • Building tests no longer proceeds if virtualenv creation fails (!68).
  • An error where unit tests could not be found has been fixed (!79).
  • The daemon can now be restarted without losing its namespace (!85).
  • An issue has been resolved that required AGIOS even if it wasn’t been used (!104).
  • Several issues that caused docker images to fail has been resolved (!105, !106, !107, !114).
  • An CMake issue in path_util that caused the compilation to fail was fixed (!115).
  • Fixed an issue where ls failed because newer kernels use fstatat() with EMPTY_PATH (!116).
  • Fixed an issue where LOG_OUTPUT_TRUNC did not work as expected (!118).

Updated: