1. Feb 07, 2020
    • Marc Vef's avatar
      Code Maintenance: Configurations, definitions, adafs to gkfs · 053cd9a5
      Marc Vef authored
      Restructuring code w.r.t. configurations and definitions:
      - #defines have been mostly removed from configurations
      - a dedicated config file has been added for configurations with constexpr
      - past configure file is now only a cmake wrapper
      - wrapping global functions into namespaces
      
      Removed all adafs and ifs occurrences. Now called gkfs
      053cd9a5
  2. Sep 09, 2019
  3. Sep 06, 2019
  4. Jul 04, 2019
  5. Jun 28, 2019
  6. Apr 24, 2019
  7. Apr 10, 2019
  8. Apr 03, 2019
    • Tommaso Tocci's avatar
      Use getaddrinfo instead of parsing /etc/hosts · 98468c06
      Tommaso Tocci authored
      We now use getaddrinfo syscall instead of parsing /etc/hosts in order to
      resolve hostnames
      98468c06
    • Tommaso Tocci's avatar
      Add support for endpoint shared lookup file · a1b20dcc
      Tommaso Tocci authored
      For some comunication layers an out of band communication is required for putting in place the specific protocol handshake.
      
      In those case a shared lookup file could be used to distribute deamon's endpoints information to all the clients.
      
      This file need to resides on a shared filesystem and can be specified using the new CLI parameter `--lookup-file`.
      a1b20dcc
  9. Mar 06, 2019
    • Tommaso Tocci's avatar
      Drop access RPC · 60b1a186
      Tommaso Tocci authored
      The access RPC have been removed. The POSIX access functionality now is implemented through the stat RPC. This makes code easier to maintain and modify.
      
      There would be a little performance degradation on the POSIX access
      function because we are now retrieving also the metadata
      associated to the file.
      
      This change makes a lot easier to add symlink support
      60b1a186
  10. Mar 05, 2019
  11. Jan 31, 2019
    • Tommaso Tocci's avatar
      improved statfs and statvfs · 23c5faf1
      Tommaso Tocci authored
       - improved statfs system call
       - intercepted statvfs library call
      
      Both of the above function now report the aggregated real size
      of all the data-nodes.
      
      You can test this with `df "/tmp/gekkofs_mountpoint"` command
      23c5faf1
  12. Nov 26, 2018
  13. Nov 07, 2018
  14. Nov 03, 2018
  15. Oct 31, 2018
    • Tommaso Tocci's avatar
      Prevent random data on stat output · b3e2f834
      Tommaso Tocci authored
      Some of the variables of stat struct are not initialized, thus they will
      remains will unpredictable junks data from memory. This random values
      could induct strange behaviours on user applications.
      
      Even if we don't support some of the fields in the struct stat, it is
      necessary to set them to some default value.
      b3e2f834
    • Tommaso Tocci's avatar
      deprecated *stat64 functions family · 44e70e78
      Tommaso Tocci authored
      According to the glibc [1] the stat64 function family would be called only
      on 32-bit machine.
      
      To be sure we still intercept the function, but we now throw a NOTSUP
      error.
      
      In this way we can drop the adafs_stat64 function and implement just the
      logic to populate the `struct stat`.
      
      [1]: https://github.molgen.mpg.de/git-mirror/glibc/blob/20003c49884422da7ffbc459cdeee768a6fee07b/sysdeps/unix/sysv/linux/generic/xstat.c#L46
      44e70e78
    • Tommaso Tocci's avatar
      Implement (f)truncate · f60f2d19
      Tommaso Tocci authored
      Implemented all the logic to handle truncate operation.
      
      Test: added truncate test
      f60f2d19
    • Tommaso Tocci's avatar
      use mercury automatic SM routing · c40be81b
      Tommaso Tocci authored
      Mercury now support shared memory autorouting.
      
      A single margo instance can be initialized and it will handle both
      shared memory communication and remote ones.
      
      If the endpoint of the RPC is local mercury will automatically use
      shared memory.
      
      Since there is only one margo instance all the duplicated code for
      rpc/ipc have been unified and simplified considerably.
      
      ------
      
      The way in which client contact the server has changed.
      
       - Server initializes its own margo instance and generate the endpoint
      communication string using `HG_Addr_self`.
       - This endpoint description string is written on the pid file
       - When the client library loads it will fetch the server endpoint
      description from the pid file and will use that to contact the server.
      c40be81b
  16. Oct 29, 2018
  17. May 17, 2018
  18. May 10, 2018
  19. May 08, 2018
  20. Apr 05, 2018
    • Marc Vef's avatar
      Preload: RPC addresses of hosts are now obtained at startup · 815e76eb
      Marc Vef authored
      Previously, host rpc addresses have been looked up lazily when a request
      was done. This is not necessary as all hosts are looked up anyways
      while the file system is running.
      
      Now, all RPC addresses are looked up when the environment is initialized.
      After that, the rpc_address map is only accessed read-only and does not
      require a mutex anymore.
      815e76eb
  21. Apr 02, 2018
    • Marc Vef's avatar
      Daemon now creates a pid file with pid and mountdir info for clients · fe7e5ee3
      Marc Vef authored
      Previously, clients would look for the daemon by name which was not robust.
      If the daemon was started with valgrind for example, clients would not find
      the daemon.
      
      Similar to other applications a daemon now creates a pid file with
      information about its pid and its started mountdir.
      
      Proper errorhandling on server and client side was added.
      
      Multiple daemons per node are explicitly not allowed for now!
      fe7e5ee3
  22. Mar 19, 2018
  23. Mar 15, 2018
  24. Mar 09, 2018
    • Marc Vef's avatar
      Preload: Use dedicated thread pool to drive IO related RPCs · bbf31409
      Marc Vef authored
      Previously, an ES was created for each destination in each read or write.
      Creating and freeing these ES is costly. Also, these ESs had separate pools,
      which is bad practice. Multiple ESs work on a single pool. The ABT_sched
      decides which ULT or Tasklet is run by which ES at any time.
      
      This change does also reduce CPU load as library IO RPC calls used CPU time
      while waiting for the response.
      bbf31409
  25. Mar 07, 2018
  26. Mar 02, 2018