Commit 471a7739 authored by Marc Vef's avatar Marc Vef
Browse files

Merge branch 'rnou/ExAPI' into 'master'

GekkoFS user library creation.

Build over `replication/gekkofwd` changes. This MR aims to create a standalone library to use inside a client application without `LD_PRELOAD` and `syscall interception`.

The user library needs some changes as some `syscall_no_intercept` calls are scattered through the logging and the general code of the client.
Also we need to do not link `syscall_intercept` and to remove (or avoid) the `gekkofs` client constructor. 

There is an example of `write` - `read` on the example directory.

The user needs to link gkfs_user_lib.so and use user_functions.hpp (installed on include/gkfs directory)

See merge request !171
parents 5c3777f6 92c904a2
Loading
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -6,15 +6,17 @@ 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
- Adding user library `gkfs_user_lib` that can be used to directly link to an application ([!171](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_request/171)).
- FMT10 and date removal, several dependencies updated. ([!172](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_request/172)).
- Fused GekkoFWD and GekkoFS. GekkoFWD is enabled with the `--enable-following` in the server configuration and the ENV variable
    `LIBGKFS_FORWARDING_MAP_FILE` in the clients. ([!170](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_request/170)).
- Replication without using the server. NUM_REPL (0 < NUM_REPL < num_servers) env variable defines the number of 
replicas ([!166](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_requests/141)).
  - Modified write and reads to use a bitset instead of the traditional hash per chunk in the server.
  - Added reattemp support in get_fs_config to other servers, when the initial server fails.
- Fused GekkoFWD and GekkoFS. GekkoFWD is enabled with the `--enable-following` in the server configuration and the ENV variable
`LIBGKFS_FORWARDING_MAP_FILE` in the clients. ([!170](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_request/170)).
- FMT10 and date removal, several dependencies updated. ([!172](https://storage.bsc.es/gitlab/hpc/gekkofs/-/merge_request/172)).

### New

### Changed
### Removed
### Fixed
+1 −1
Original line number Diff line number Diff line
@@ -177,7 +177,7 @@ endmacro()

include(SelectLibraryConfigurations)

set(_mercury_components na mercury_util mercury_hl)
set(_mercury_components na mercury_util)

# prevent repeating work if the main CMakeLists.txt already called
# find_package(PkgConfig)
+2 −1
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ cmake_minimum_required(VERSION 3.13)
project(
    GekkoFS
    VERSION 0.9.2
    LANGUAGES ASM CXX C
)

enable_testing()
@@ -305,6 +306,7 @@ include_directories(

add_subdirectory(src)
add_subdirectory(include)
add_subdirectory(examples)

### Mark any CMake variables imported from {fmt} and spdlog as advanced, so
### that they don't appear in cmake-gui or ccmake. Similarly for FETCHCONTENT
@@ -345,7 +347,6 @@ if (GKFS_BUILD_TESTS)
    message(STATUS "[gekkofs] Guided distributor tests: ${GKFS_TESTS_GUIDED_DISTRIBUTION}")

    add_subdirectory(tests)
    add_subdirectory(examples/gfind)
else()
    unset(GKFS_TESTS_INTERFACE CACHE)
endif()
+30 −0
Original line number Diff line number Diff line
################################################################################
# Copyright 2018-2024, Barcelona Supercomputing Center (BSC), Spain            #
# Copyright 2015-2024, Johannes Gutenberg Universitaet Mainz, Germany          #
#                                                                              #
# This software was partially supported by the                                 #
# EC H2020 funded project NEXTGenIO (Project ID: 671951, www.nextgenio.eu).    #
#                                                                              #
# This software was partially supported by the                                 #
# ADA-FS project under the SPPEXA project funded by the DFG.                   #
#                                                                              #
# This file is part of GekkoFS.                                                #
#                                                                              #
# GekkoFS is free software: you can redistribute it and/or modify              #
# it under the terms of the GNU General Public License as published by         #
# the Free Software Foundation, either version 3 of the License, or            #
# (at your option) any later version.                                          #
#                                                                              #
# GekkoFS is distributed in the hope that it will be useful,                   #
# but WITHOUT ANY WARRANTY; without even the implied warranty of               #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                #
# GNU General Public License for more details.                                 #
#                                                                              #
# You should have received a copy of the GNU General Public License            #
# along with GekkoFS.  If not, see <https://www.gnu.org/licenses/>.            #
#                                                                              #
# SPDX-License-Identifier: GPL-3.0-or-later                                    #
################################################################################

add_subdirectory(gfind)
add_subdirectory(user_library)
 No newline at end of file
+3 −3
Original line number Diff line number Diff line
################################################################################
# Copyright 2018-2021, Barcelona Supercomputing Center (BSC), Spain            #
# Copyright 2015-2021, Johannes Gutenberg Universitaet Mainz, Germany          #
# Copyright 2018-2024, Barcelona Supercomputing Center (BSC), Spain            #
# Copyright 2015-2024, Johannes Gutenberg Universitaet Mainz, Germany          #
#                                                                              #
# This software was partially supported by the                                 #
# EC H2020 funded project NEXTGenIO (Project ID: 671951, www.nextgenio.eu).    #
@@ -26,7 +26,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later                                    #
################################################################################

set (CMAKE_CXX_STANDARD 14)
set (CMAKE_CXX_STANDARD 17)
add_executable(sfind sfind.cpp)

if(GKFS_INSTALL_TESTS)
Loading