GekkoFS 0.7.0 is now available, with enhancements to the filesystem configuration options, more detailed log output, and several bugfixes.
Added
- Added support for system calls
eventfd()
andeventfd2()
which were directly forwarded to the kernel in previous versions. - Internal file descriptors created by the
fcntl()
are now handled. - Internal file descriptors passed to processes using
CMSG_DATA
in system calls suchj asrecvmsg()
are now handled.
Changed
- The client interception library now relies on Mercury instead of Margo for network communication. The motivation behind this major change is to increase application compatibility, since the Argobots ULTs used by Margo to send and process RPCs clashed at times with applications using pthreads. This often caused strange behaviors and difficult to track bugs due to ULT stack corruptions.
- Environment variables have been renamed to better distinguish which
variables affect the client library and which variables affect the daemon.
More specifically, client environment variables will now use the
LIBGKFS_
prefix, while daemon environment variables will use theGKFS_DAEMON_
prefix. - The spdlog logging library used by the client interception library has been replaced with a bespoke logging infrastructure. The rationale behind this major change is that spdlog’s internal threads and exception management often had issues with the system call interception infrastructure. The current logging infrastructure is designed around the syscall interception mechanism, and is therefore more stable.
- Partly due to the new logging infrastructure and partly in an effort to
facilitate developer usage, there have been significant changes
to the environment variables controlling logging output. The desired log
module is now selected with
LIBGKFS_LOG
, while the desired output channel is controlled withLIBGKFS_LOG_OUTPUT
. Additional options such asLIBGKFS_LOG_OUTPUT_TRUNC
,LOG_SYSCALL_FILTER
andLOG_DEBUG_VERBOSITY
can be used to further control how and which messages are emitted. Run the client withLIBGKFS_LOG=help
for more details. - Improved dependency management in CMake.
Fixed
- The internal file descriptors of the client library have been relocated to a private range to avoid interfering with client application file descriptors.