New Fuse Beta Release status

FUSEX code has been carved out of the Aquamarine GIT repo into:

https://gitlab.cern.ch/eos/eos-fusex/

It is now included into Citrine & Aquamarine as a sub-module.

[submodule "fusex"]
    path = fusex
    url = https://:@gitlab.cern.ch:8443/eos/eos-fusex.git
    branch = master

 

Joszef is adding it to the Citrine master build pipeline in GitLab, I am adding it to the Aquamarine build in Jenkins. Once build succeeds, create new RPM eos-fusex containing eosxd.

The server side implementation is currently only available in the Aquamarine code (initial testing will be on EOSUAT instance). Elvin can start the merging into Master when he is back [ it is slightly more complicated to do that because of namespace API changes]. First version containing server side support will be EOS Aquamarine 0.3.270. Both MGM and FST need to be updated for new functionality.

We are still fixing both builds.

New Fuse Development Status

Versioned Protocol

If a client mounts an instance with a different fusex protocol version, it receives an evict message (e.g. unmount).

Quota Interface

Quota Interface via mount point

[root@eos-aufs fuse]# getfattr --only-values -n eos.quota /eos/dev/fuse/
getfattr: Removing leading '/' from absolute path names
instance             uid     gid        vol-avail        ino-avail        max-fsize                         endpoint
dev                   99      99       7269240152           997505     549755813888             apeters.cern.ch:1094

 

The quota status on client side is not yet real-time enough. FUSE clients sees only changes of a quota node, where they currently has a CAP. There is a regular update done by listing or max. after 5 minutes. Need to add a server side quota node push if an authenticated ID runs out of quota.

Cache Consistency

A flush call from one FUSE client triggers a cache invalidation on all other clients having a file open. E.g. cache invalidation happens also while filedescriptors are already open.

O_SYNC

open(...O_SYNC) disables the local file start cache/journaling. For large file uploads this gives better throughput.

FSYNC

Synces everything from the local journal and it is guaranteed that clients see the updated contents in that moment. fsync calls internally the flush logic as explained above.

TODO

fusebind

After some back and forward Georgios has found a 'solution' to avoid the need of eosfusebind. He can explain best. When his work is finished he needs to register his new class in a single function:

class fusexrdlogin  {
public:
  static int loginurl ( XrdCl::URL& url, fuse_req_t req ,
                       fuse_ino_t ino,
                       bool root_squash = false,
                       int connectionid = 0);
};

 

master/slave failover

The async ZMQ connection does not fail-over automatically on master slave redirection.

fixing of known issues

 


Rollout: