1. Jun 20, 2023
  2. Jun 19, 2023
    • Marc Vef's avatar
      Merge branch 'rnou/arm_master' into 'master' · ba81942d
      Marc Vef authored
      Arm Support
      
      This adds ARM support.
      
      It adds a new profile to download the syscall_intercept that supports ARM (fork).
      The modifications doesn't use ARM define, as it is not needed, we only need to check if a syscall exists or not.
      
      Closes #244 
      We can close !127 also, I think that this merge updates and solves some issues.
      
      Closes #244
      
      See merge request !160
      ba81942d
    • Ramon Nou's avatar
      Missing one syscall · 52650a44
      Ramon Nou authored and Marc Vef's avatar Marc Vef committed
      52650a44
    • Ramon Nou's avatar
      indef -> ifdef · 6bd2977f
      Ramon Nou authored and Marc Vef's avatar Marc Vef committed
      6bd2977f
    • Ramon Nou's avatar
      Ifdef missing syscalls · d361f607
      Ramon Nou authored and Marc Vef's avatar Marc Vef committed
      d361f607
    • Marc Vef's avatar
      Review: Consistency in terminology · 90bb2014
      Marc Vef authored
      90bb2014
    • Marc Vef's avatar
      Reformat code for clang-format-15 · 91b3185f
      Marc Vef authored
      91b3185f
    • Marc Vef's avatar
      Changelog fix and added ARM support · 99a48ef1
      Marc Vef authored
      99a48ef1
    • Ramon Nou's avatar
      added extern cmd syscall patch · 20d45fdf
      Ramon Nou authored and Marc Vef's avatar Marc Vef committed
      20d45fdf
    • Ramon Nou's avatar
      Added arm profile · 4f27316d
      Ramon Nou authored and Marc Vef's avatar Marc Vef committed
      4f27316d
    • Ramon Nou's avatar
      ARM sys defines · 339ae3bd
      Ramon Nou authored and Marc Vef's avatar Marc Vef committed
      339ae3bd
    • Marc Vef's avatar
      Merge branch 'marc/254-support-for-parallel-append-operations' into 'master' · 8930cfc7
      Marc Vef authored
      Resolve "Support for (parallel) append operations"
      
      This MR adds (parallel) append support for write operations. There was already some append code available that was run for each `pwrite` when the file size was updated. As a result, parts of strings were serialized and deserialized within RocksDB's merge operation even if not needed. Previously, `open()` was returning `ENOTSUP` when `O_APPEND` was used. When removing this statement, append was not functional due to how size updates and the append case worked. Overall, `gkfs_pwrite()` which first updates the file size and then writes the file was quite messy with unused return values and arguments. Further, the server calculated the updated size without regard on what occurred in the KV store. Therefore, as part of this MR, the entire update size process within `pwrite()` was refactored. 
      
      Parallel appends are achieved by hooking into RocksDB's `Merge Operator` which is triggered at some point (e.g., during `Get()`). Without append being used, the offset is known to the client already and therefore the file size is updated to `offset + count` set in `gkfs_pwrite()`. There is no further coordination required since overlapping offsets are the user's responsibility. The code path for non-append operations was slightly optimized but largely remains the same. 
      
      Append operations are treated differently because it is not clear during a write operation where a process calling `write()` should start writing. Using the EOF information that is loaded during open may be outdated when multiple processes try to append at the same time -> causing a race condition. Since the size update on the daemon is atomic, a process (updating the size before performing a write) can be reserved a corresponding byte interval `[EOF, EOF + count]`. Now, calling `Merge()` on RocksDB does not trigger a Merge operation since multiple Merges are batched before the operation is run. For append, the Merge operation is forced by running `Get()` on RocksDB. The corresponding Merge operation then responds the starting write offset to the updating size process. Therefore, appends are more expensive than non-appends.
      
      Lastly, some missing documentation was added.
      
      As reported, this MR adds support for the DASI application, used in IO-SEA.
      
      Note: This MR does not consider failing writes which would require us to collapse a reserved interval and tie up the hole in the file. 
      
      Closes #254
      Closes #12
      
      Closes #12 and #254
      
      See merge request !164
      8930cfc7
    • Marc Vef's avatar
      Added documentation on the merge id · 6c264285
      Marc Vef authored
      6c264285
    • Marc Vef's avatar
      Added changelog entry · b59ecbb9
      Marc Vef authored
      b59ecbb9
    • Marc Vef's avatar
      Adding append tests · 32efe80d
      Marc Vef authored
      32efe80d
    • Marc Vef's avatar
      Cleanup and adding documentation · e290d905
      Marc Vef authored
      e290d905
    • Marc Vef's avatar
      Support append for Parallax · bfece2ab
      Marc Vef authored
      bfece2ab
    • Marc Vef's avatar
      Daemon: Adding append support · 8d17b247
      Marc Vef authored
      8d17b247
    • Marc Vef's avatar
      Client: Adding append support · d3d9f170
      Marc Vef authored
      d3d9f170
  3. Jun 12, 2023
  4. Mar 24, 2023
    • Marc Vef's avatar
      Merge branch 'amiranda/improve-cmake-dependency-management' into 'master' · a27f518b
      Marc Vef authored
      Improve cmake
      
      This MR improves the current CMake scripts in the following manner:
      
      - Dependency management is now handled more consistently: system dependencies are found using `find_package()`, whereas source-only dependencies are found using `include_from_source()`. This new function integrates a dependency provided its source code is available. If it's not, it will try to download it from its git repository if it was defined.
      - All external dependencies are now searched for in the top-level `CMakeLists.txt`.
      - More consistent use of targets (we are closer to 100% modern CMake).
      - Adds the `gkfs_feature_summary()` to allow printing a summary of all GekkoFS configuration options and their values.
      - Moves all option definitions to `CMake/gfks-options.cmake`, so that the top-level `CMakeLists.txt` is cleaner. It also defines the `gkfs_define_option()` and `gkfs_define_variable()` functions to integrate the definition of options/variables with the automated reporting provided by `gkfs_feature_summary()`.
      
      It also fixes #249.
      
      Closes #211
      
      Closes #211 and #249
      
      See merge request !143
      a27f518b
    • Alberto Miranda's avatar
      eaed52ff
    • Alberto Miranda's avatar
      Update CHANGELOG.md · b5090ccd
      Alberto Miranda authored
      b5090ccd
    • Alberto Miranda's avatar
      CMake: Better handling of external submodules · d57e6c09
      Alberto Miranda authored
      The function include_from_source() now checks if the source directory
      for a external dependency is empty. If so, it will provide instructions
      for the user to solve the issue (such as properly initializing
      submodules).
      d57e6c09
  5. Mar 17, 2023