1. 26 Feb, 2021 2 commits
    • Tigran Mkrtchyan's avatar
      nfsv3: simplify uid3, gid3 objects · 235e266d
      Tigran Mkrtchyan authored
      Motivation:
      uid3 and gid3 object are wraps around uint32, which is by itself wrap around
      int.
      
      Modification:
      simplify buid3 and gid3y wrapping directly int
      
      Result:
      less load on GC.
      
      Acked-by: Paul Millar
      Acked-by: Marina Sahakyan
      Target: master
      235e266d
    • Tigran Mkrtchyan's avatar
      nfsv3: simplify size3 object · 2056c670
      Tigran Mkrtchyan authored
      Motivation:
      size3 object is a wrap around uint64, which is by itself wrap around
      long.
      
      Modification:
      simplify size3 by wrapping directly long
      
      Result:
      less load on GC.
      
      Acked-by: Marina Sahakyan
      Acked-by: Paul Millar
      Target: master
      2056c670
  2. 22 Feb, 2021 3 commits
  3. 18 Feb, 2021 1 commit
    • Tigran Mkrtchyan's avatar
      nfsv41: remove unused Layouts class · 521abf66
      Tigran Mkrtchyan authored
      Not used as the functionality is handles by implementations of
      LayoutDriver interface.
      
      Acked-by: Lea Morschel
      Acked-by: Paul Millar
      Acked-by: Albert Rossi
      Target: master
      521abf66
  4. 29 Jan, 2021 1 commit
  5. 07 Jan, 2021 1 commit
    • Tigran Mkrtchyan's avatar
      nfs4: improve state handler concurrency · 44fa34cd
      Tigran Mkrtchyan authored
      Motivation:
      The state handler keeps track of NFSv4 clients. This duty is not
      symmetric - updates happen when a client is added or removed, but
      queried almost for any compound operation in a session. Thus on a
      busy system we can observe thread serialization.
      
      Modification:
      replace synchronized blocks with read/write locks.
      
      Result:
      a better concurrency in a multi-client environment.
      
      Acked-by: Paul Millar
      Acked-by: Albert Rossi
      Target: master
      44fa34cd
  6. 05 Jan, 2021 1 commit
    • Tigran Mkrtchyan's avatar
      nfs3: fix readdir entry size calculation · ea6f71a3
      Tigran Mkrtchyan authored
      Motivation:
      when estimating readdir reply size we should not forget about boolean
      flag that indicates the presence of a next entry.
      
      Modification:
      fix entry overhead size.
      
      Result:
      The returned xdr doesn't overflow expected reply size.
      
      Acked-by: Paul Millar
      Target: master, 0.22
      ea6f71a3
  7. 21 Dec, 2020 1 commit
  8. 13 Dec, 2020 1 commit
  9. 09 Dec, 2020 1 commit
    • Tigran Mkrtchyan's avatar
      nfsv4.1: resulting notification bitmap should match requests length · 8ede287c
      Tigran Mkrtchyan authored
      Motivation:
      Though bitmap can have an arbitrary length, the linux 5.10 client expects
      device notification bitmap to be size of one (1).
      
      Modification:
      Update OperationGETDEVICEINFO to initialize resulting notification bitmap
      with the length that matches requested notification bitmap.
      
      Result:
      Linux 5.10 client processes the result of getdeviceinfo operation as expected.
      
      Target: 0.22, master
      Acked-by: Paul Millar
      Acked-by: Albert Rossi
      8ede287c
  10. 08 Dec, 2020 1 commit
  11. 22 Oct, 2020 3 commits
    • Tigran Mkrtchyan's avatar
    • Tigran Mkrtchyan's avatar
      380d661d
    • Tigran Mkrtchyan's avatar
      pol: update to oncrpc4j-3.1.0 · ed9a5783
      Tigran Mkrtchyan authored
      Motivation:
      new major version update with improvements and breaking changes:
      
      - Drop dependency on dcache-auth , which had incompatible license
      - Experimental AUTH_TLS support
      - Various javadoc improvements
      - Improved code coverage
      - removed direct dependency on grizzly-framework-monitoring
      
      The result of removal of license incompatible dcache-auth in oncrpc4j is
      migration from org.dcache.auth.GidPrincipal and org.dcache.auth.UidPrincipal
      to com.sun.security.auth.UnixNumericGroupPrincipal and
      com.sun.security.auth.UnixNumericUserPrincipa. This breaking change have
      to be handled in nfs4j.
      
      Modification:
      Update pom to use oncrpc4j-3.1.0. Introduce UnixSubjects that provides
      alternative to org.dcache.auth.Subjects. Update code base to match API
      changes.
      
      Result:
      The nfs4j has no dependency with conflicting license. Support for
      nfs-over-tls.
      
      WARNING: this is a breaking change that requires changes in VirtualFileSystem
      implementations.
      
      Acked-by: Paul Millar
      Target: master
      ed9a5783
  12. 20 Oct, 2020 1 commit
    • Tigran Mkrtchyan's avatar
      nfs4: remove NfsLoginService interface · b1320d97
      Tigran Mkrtchyan authored
      Motivation:
      The NfsLoginService aimed to handle RPCSEC_GSS based session and
      map GSS context to appropriate Subject. However, this is always
      handled by RPC layer (after split of nfs and rpc modules into different
      projects). Thus NfsLoginService is simply a dead code.
      
      Modification:
      remove NfsLoginService interface
      
      Result:
      less dead code
      
      Acked-by: Paul Millar
      Acked-by: Lea Morschel
      Target: master
      b1320d97
  13. 16 Oct, 2020 2 commits
  14. 15 Oct, 2020 1 commit
    • Tigran Mkrtchyan's avatar
      flexfiles: make rsize/wsize configurable · 89b09abb
      Tigran Mkrtchyan authored
      Motivation:
      The read/write buffer size between a and the data server is offered by
      MDS. Currently, this value is hard coded to 64k, which is not optimal
      value for modern hardware.
      
      Modification:
      Allow mds to specify preferred IO size for DS. Though this value can be
      different for each data server, we use a single buffer size by assuming
      that in typical installation data servers have a similar IO
      capabilities.
      
      As Linux client uses single value for rsize and wsize, we use (for
      pragmatic reasons) a single value as well.
      
      Result:
      The IO size between clients and the server can be configured.
      
      Acked-by: Paul Millar
      Target: master
      89b09abb
  15. 13 Oct, 2020 2 commits
  16. 12 Oct, 2020 1 commit
    • Tigran Mkrtchyan's avatar
      exports: fix FsExport#toString output · a456ce2c
      Tigran Mkrtchyan authored
      fix
      
      /data: 10.1.0.1(RW,root_squash,noacl,sec=SYSsecure,,dcap,pnfs,anonuid=1001,anongid=65534):idx=2eefc9
                                                       ^^^^^^
      to
      
      /data: 10.1.0.1(RW,root_squash,noacl,sec=SYS,secure,dcap,pnfs,anonuid=1001,anongid=65534):idx=2eefc9
      
      Acked-by: Lea Morschel
      Target: master
      a456ce2c
  17. 07 Oct, 2020 1 commit
  18. 09 Sep, 2020 1 commit
  19. 08 Sep, 2020 1 commit
    • Tigran Mkrtchyan's avatar
      exports: add support for secure/insecure export options · 311f34fe
      Tigran Mkrtchyan authored
      Motivation:
      In some environments we might want to enforce clients to come from a
      privileged port (< 1024), e.g. to be sure that request is send by kernel
      process.
      
      Modification:
      Add secure/insecure export options (like in linux and solaris servers).
      Update PseudoFs to to check for privileged client port, if required.
      
      Result:
      nfs clients can be restricted to privileged (root) users.
      
      Acked-by: Lea Morschel
      Acked-by: Paul Millar
      Target: master
      311f34fe
  20. 07 Sep, 2020 1 commit
    • Tigran Mkrtchyan's avatar
      nfs-client: make client is pseudo-unique · c6ffcd94
      Tigran Mkrtchyan authored
      Motivation:
      The nfs spec requires, that after restart client presents the same
      client id. Though this is not that important for the test client,
      however, makes testing more reliable.
      
      Modification:
      generate client is string to be
      
      java class name + user + host name.
      
      for example: org.dcache.nfs.v4.client.Main: tigran on nairi
      
      Result:
      server friendly test client.
      
      Acked-by: Paul Millar
      Acked-by: Lea Morschel
      Target: master
      c6ffcd94
  21. 26 Aug, 2020 1 commit
    • Tigran Mkrtchyan's avatar
      nfs-client: add sendCompoundInSession · e3be4fb6
      Tigran Mkrtchyan authored
      Motivation:
      Some NFSv4.1 operations must be bound to a session, some are not. Thus
      for some compound requests the first operations must be SEQUENCE, that
      specifies the session id, slot to use and sequence.
      
      Modification:
      introduce sendCompoundInSession method that takes care about session
      bookkeeping.
      
      Result:
      Automatic session processing when the corresponding sendCompound is
      used.
      
      Acked-by: Paul Millar
      Target: master
      e3be4fb6
  22. 25 Aug, 2020 1 commit
    • Tigran Mkrtchyan's avatar
      nfs4: pull-out client session slot handling into a dedicated class · e977e574
      Tigran Mkrtchyan authored
      Motivation:
      client session slot handling is not only used by call-back but as well
      by a regular client and proxy-io client inside dCache. Thus, this functionality
      should be shared to reduce code duplication.
      
      Modification:
      introduce ClientSession class that does the session slot management.
      
      Result:
      client side session slot management can be shared with other classes.
      
      Acked-by: Paul Millar
      Acked-by: Lea Morschel
      Target: master
      e977e574
  23. 24 Aug, 2020 1 commit
  24. 21 Aug, 2020 2 commits
  25. 22 Jul, 2020 1 commit
    • Tigran Mkrtchyan's avatar
      nfsv41: fix race condition during multiple callbacks · c131ddde
      Tigran Mkrtchyan authored
      Motivation:
      The NFSv4.1 server might decide to send multiple callback to a client.
      The parallelism is defined by number of callback slots specified by the
      client. As each slot maintain it's own sequence, a new request can be
      sent only when the slot is not in use.
      
      Modification:
      Introduce a ClientCB$SesionSlot class that represents session slot and
      associated sequence. Introduce a blocking queue, that represents
      available session slots. When slot is used, then it removed from the
      queue and putted back, after callback is complete.
      
      Result:
      Multiple callbacks can be issued to the client in parallel without
      misordering the requests.
      
      Acked-by: Paul Millar
      Target: master
      c131ddde
  26. 21 Jul, 2020 1 commit
    • Tigran Mkrtchyan's avatar
      nfs4: minor version used by callback must by in sync with client · 5f38d46b
      Tigran Mkrtchyan authored
      Motivation:
      When server performs callback to a client it must use the same nfsv4
      minor version as client uses.
      
      Modification:
      store client's minor version information with call-back object.
      
      Result:
      fixes compatibility with nfsv4.2 clients.
      
      Acked-by: Albert Rossi
      Acked-by: Lea Morschel
      Acked-by: Paul Millar
      Target: master, 0.21
      5f38d46b
  27. 17 Jul, 2020 2 commits
  28. 16 Jul, 2020 1 commit
  29. 14 Jul, 2020 1 commit
  30. 13 Jul, 2020 2 commits