Merge branch 'marc/240-syscall_intercept-compilation-fails-if-clone3-syscall-does-not-exist' into 'master'
Resolve "Syscall_intercept: compilation fails if clone3 syscall does not exist"
Closes #240
See merge request !157
@@ -6,29 +6,43 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### New
- Additional tests to increase code coverage ([!141](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/141)).
- GKFS_ENABLE_UNUSED_FUNCTIONS added to disable code to increase code coverage.
### Changed
- Support parallelism for path resolution tests ([!145](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/145)).
- Support parallelism for path resolution tests ([!145](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/145))
.
- Support parallelism for symlink tests ([!147](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/147)).
### Removed
### Fixed
- Using `unlink` now fails if it is a directory unless the `AT_REMOVEDIR` flag is used (POSIX compliance) ([!139](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/139)).
- Support glibc-2.34 or newer with syscall_intercept [!146](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/146)).
- Additional `#ifdef` to remove unused code ([!141](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/141))
- An CMake issue in `path_util` that caused the compilation to fail was fixed ([!115](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/115)).
- An CMake issue in `path_util` that caused the compilation to fail was
- Both client library and daemon have been extended to support the ofi+verbs
protocol.
- A new Python testing harness has been implemented to support integration
@@ -168,13 +204,17 @@ Note that tests still require `Boost_preprocessor`.
daemons, the requests are scheduled using the AGIOS scheduling library before
they are dispatched to the shared backend parallel file system.
- The `fsync()` system call is now fully supported.
### Improved
- Argobots tasks in the daemon are now wrapped in a dedicated class,
effectively removing the dependency. This lays ground work for future
non-Argobots I/O implementations.
- The `readdir()` implementation has been refactored and improved.
- Improvements on how to the installation scripts manage dependencies.
### Fixed
- The server sometimes crashed due to uncaught system errors in the storage
backend. This has now been fixed.
- Fixed a bug that broke `ls` on some architectures.
@@ -182,9 +222,13 @@ Note that tests still require `Boost_preprocessor`.
client applications via `errno` propagation.
## [0.7.0] - 2020-02-05
### Added
- Added support for `eventfd()`and `eventfd2()` system calls.
### Changed
- Replaced Margo with Mercury in the client library in order to increase
application compatibility: the Argobots ULTs used by Margo to send and
process RPCs clashed at times with applications using pthreads.
@@ -204,7 +248,9 @@ Note that tests still require `Boost_preprocessor`.
can be used to further control messages. Run the client with
`LIBGKFS_LOG=help` for more details.
- Improved dependency management in CMake.
### Fixed
- Relocate internal file descriptors to a private range to avoid interfering
with client application file descriptors.
- Handle internal file descriptors created by `fcntl()`.
@@ -212,60 +258,89 @@ Note that tests still require `Boost_preprocessor`.
`recvmsg()`.
## [0.6.2] - 2019-10-07
### Added
- Paths inside kernel pseudo filesystems (`/sys`, `/proc`) are forwarded directly to the kernel and internal path resolution will be skipped. Be aware that also paths like `/sys/../tmp/gkfs_mountpoint/asd` will be forwarded to the kernel
- Added new Cmake flag `CREATE_CHECK_PARENTS` to controls if the existance of the parent node needs to be checked during the creation of a child node.
- Paths inside kernel pseudo filesystems (`/sys`, `/proc`) are forwarded directly to the kernel and internal path
resolution will be skipped. Be aware that also paths like `/sys/../tmp/gkfs_mountpoint/asd` will be forwarded to the
kernel
- Added new Cmake flag `CREATE_CHECK_PARENTS` to controls if the existance of the parent node needs to be checked during
the creation of a child node.
### Changed
- Daemon logs for RPC handlers have been polished
- Updated Margo, Mercury and Libfabric dependencies
### Fixed
- mk_node RPC wasn't propagating errors correctly from daemons
- README has been improoved and got some minor fixes
- fix wrong path in log call for mk_symlink function
## [0.6.1] - 2019-09-17
### Added
- Added new Cmake flag `LOG_SYSCALLS` to enable/disable syscall logging.
- Intercept the 64 bit version of `getdents`.
- Added debian-based docker image.
### Changed
- Disable syscalls logging by default
- Update Mercury, RocksDB and Libfabric dependencies
### Fixed
- Fix read at the end of file.
- Don't create log file when using `--version`/`--help` cli flags.
- On some systems LD_PRELOAD used on /bin/bash binary was not working.
- Missing definition of `loff_t` on new version of GCC.
## [0.6.0] - 2019-07-26
### Added
- Add compile time option to disable shared memory communication `-DUSE_SHM:BOOL=OFF`
### Changed
- Deamons does not store anymore information about the others deamons.
- Improoved error handling on deamon initialization
- Decreased RPC timeout 3min -> 3sec
- Update 3rd party dependencies
### Removed
- PID file is not used anymore, we use only the new `hosts file` for out of bound communication
- Dropped CCI plugin support
- Dropped hostname-suffix cli option
- Dropped port cli option (use `--listen` instead)
- It is not needed anymore to pass hosts information to deamons, thus the `--hosts` cli have been removed
### Fixed
- Errors on get_dirents RPC are now reported back to clients
- Write errors happenig on deamons are now reported back to clients
- number overflow on lseek didn't allow to use seek on huge files
## [0.5.0] - 2019-04-29
### Changed
- Intercept I/O syscalls instead of GlibC function using [syscall intercept library](https://github.com/pmem/syscall_intercept)
- Intercept I/O syscalls instead of GlibC function
using [syscall intercept library](https://github.com/pmem/syscall_intercept)
## [0.4.0] - 2019-04-18
First GekkoFS public release
This version provides a client library that uses GLibC I/O function interception.