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_extendedfunction which can improvefindoperations. A corresponding example how to use this function can be found atexamples/gfind/gfind.cppwith a non-mpi version atexamples/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_interceptscenarios in non x86 architectures ().
- 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-formattool (!66). A new script is available inscripts/check_format.shfor easy of use. GKFS_METADATA_MODmacro 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_utilthat caused the compilation to fail was fixed (!115). - Fixed an issue where
lsfailed because newer kernels usefstatat()withEMPTY_PATH(!116). - Fixed an issue where
LOG_OUTPUT_TRUNCdid not work as expected (!118).