1. 17 Jul, 2019 2 commits
  2. 15 Jul, 2019 1 commit
  3. 10 Jul, 2019 3 commits
  4. 09 Jul, 2019 3 commits
  5. 08 Jul, 2019 4 commits
    • Tigran Mkrtchyan's avatar
      test: add OperationLAYOUTCOMMITTest · c37b7168
      Tigran Mkrtchyan authored
      Motivation:
      improve test coverage
      
      Modification:
      Add OperationLAYOUTCOMMITTest to test leyout commit with read-only open
      state.
      
      Result:
      better code coverage.
      
      Acked-by: Paul Millar
      Target: master
      c37b7168
    • Tigran Mkrtchyan's avatar
      nfs-client: send layoutcommit if required · 9d9a9300
      Tigran Mkrtchyan authored
      Acked-by: Paul Millar
      Target: master
      9d9a9300
    • Tigran Mkrtchyan's avatar
      nfs41: introduce NFSv41DeviceManager#layoutCommit method · 1a383866
      Tigran Mkrtchyan authored
      Motivation:
      Current implementation of layout commit operation assumes that
      only action that have to be done is updating file size. However,
      the back-end system may perform other actions as well if required.
      
      Modification:
      Introduce NFSv41DeviceManager#layoutCommit method. The driver
      implementation should take care to update file size, if required. The
      sanity check of a valid state it is sill performed as a part of genetic
      request processing.
      
      Result:
      The layout driver gets possibility to handle commit operation.
      
      Acked-by: Albert Rossi
      Acked-by: Paul Millar
      Target: master
      1a383866
    • Tigran Mkrtchyan's avatar
      pom: enable spotbugs plugin · 5df7ed9a
      Tigran Mkrtchyan authored
      Motivation:
      as findbugs is dead move to the successor
      
      https://mailman.cs.umd.edu/pipermail/findbugs-discuss/2017-September/004383.html
      
      Modification:
      enable spotbugs plugin that can be activated by:
      ```
      mvn spotbugs:spotbugs
      ```
      
      Result:
      use up-to-date static code analysis tool
      
      Target: master
      Acked-By: Paul Millar
      5df7ed9a
  6. 05 Jul, 2019 3 commits
  7. 01 Jul, 2019 1 commit
    • Tigran Mkrtchyan's avatar
      nfs4: introduce AbstractRequestExecutor · 096b49fe
      Tigran Mkrtchyan authored
      Motivation:
      The NFSv4OperationFactory interface provides only a method to retrieve
      nfs operation for a given request. The request execution is done by nfs
      server itself. Though a different factories can be provided, the way
      how requests are executed can't be changed. The example of such desired
      change can be execution metrics, fault injection, notifications.
      
      Modification:
      Introduce OperationExecutor interface. Introduce AbstractOperationExecutor
      that provides a generic implementation of request execution, but sill
      allows subclasses to control which requests are supported. Removed
      RequestExecutionTimeGauges and OperationFactoryMXBeanImpl as they can be
      added by subclassing/wrapping an instance of OperationExecutor.
      
      Though this is a breaking change, code migration should be easy:
      
      MDSOperationFactory -> MDSOperationExecutor
      
              NFSServerV41 nfs4 = new NFSServerV41.Builder()
                      .withExportTable(exportFile)
                      .withVfs(vfs)
                      .withOperationExecutor(new MDSOperationExecutor())
                      .build();
      
      Result:
      A way to inject different strategies for request execution
      
      Acked-by: Paul Millar
      Target: master
      096b49fe
  8. 24 Jun, 2019 1 commit
  9. 22 Jun, 2019 2 commits
  10. 21 Jun, 2019 3 commits
  11. 17 Jun, 2019 1 commit
  12. 14 Jun, 2019 2 commits
    • Tigran Mkrtchyan's avatar
      vfs: add unit test for validate PseudoFS · c66e099d
      Tigran Mkrtchyan authored
      improve code coverage
      
      Acked-by: Paul Millar
      Target: master
      c66e099d
    • Tigran Mkrtchyan's avatar
      pseudofs: fix directory listing with non zero cookie · e2a9e086
      Tigran Mkrtchyan authored
      Motivation:
      current code have some issues:
      
        - the pseudo file systems directory cookie starts with zero,
          which is not allowed.
      
        - listing in pseudo file system ignores provided cookie.
      
      Modification:
      
      update listPseudoDirectory to generate cookies stargin from 3,
      as 0, 1 and 2 are reserved values. Return tail of listing started from
      cookie, if provided.
      
      Result:
      fixed directory listing in pseudo file system with non zero initial
      cookie.
      
      Acked-by: Paul Millar
      Target: master, 0.18
      e2a9e086
  13. 13 Jun, 2019 2 commits
  14. 10 Jun, 2019 1 commit
    • Tigran Mkrtchyan's avatar
      nfs4: add LAYOUTSTATS and LAYOUTERROR operations stubs · 69f39ae0
      Tigran Mkrtchyan authored
      Motivation:
      NFSv4.2 have introduced some new operations including LAYOUTSTATS and
      LAYOUTERROR. Tough those operations are not supported, we return error
      illegal.
      
      Modification:
      Add dummy OperationLAYOUTERROR and OperationLAYOUTSTATS that returns
      NFSERR_NOTSUPP.
      
      Result:
      client receives NFSERR_NOTSUPP instead of NFSERR_ILLEGAL. First building
      block to add support for LAYOUTSTATS and LAYOUTERROR.
      
      Acked-by: Paul Millar
      Target: master
      69f39ae0
  15. 07 Jun, 2019 3 commits
    • Tigran Mkrtchyan's avatar
      nfsv4: add test for readdir behind last cookie · 3156e5f7
      Tigran Mkrtchyan authored
      ensure, that readdir behind last entry returns empty directory listing.
      
      Acked-by: Paul Millar
      Target: master
      3156e5f7
    • Tigran Mkrtchyan's avatar
      libs: use hamcrest 2.1 · 13656bd8
      Tigran Mkrtchyan authored
      Motivation:
      latest version of hamcrest test suite to write more sophisticated test
      cases.
      
      Modification:
      Update dependency in the pom file. Update test to avoid usage of
      deprecated API.
      
      Result:
      up-to-date test infrastructure to enhance tests.
      
      Acked-by: Paul Millar
      Target: master
      13656bd8
    • Tigran Mkrtchyan's avatar
      libs: use mockito-core 2.28 · 59edb797
      Tigran Mkrtchyan authored
      up-to-date version with java11 support
      
      Acked-by: Paul Millar
      Target: master
      59edb797
  16. 10 May, 2019 1 commit
  17. 24 Apr, 2019 1 commit
    • Tigran Mkrtchyan's avatar
      benchmarks: add benchmark for ip address matcher · 5712ae66
      Tigran Mkrtchyan authored
      Motivation:
       - Benchmark IP matcher that used for processed of any NFS request.
       - enhancing JMH knowledge
      
      Modification:
      Add benchmark for ip address matcher.
      
      Result:
      
      Benchmark                                      (client)                 (template)   Mode  Cnt          Score         Error  Units
      IpMatcherBenchmark.benchmark                192.168.1.1                192.168.1.1  thrpt   25  156536643.166 ± 3114973.363  ops/s
      IpMatcherBenchmark.benchmark                192.168.1.1             192.168.1.0/24  thrpt   25  154687994.062 ± 5716679.866  ops/s
      IpMatcherBenchmark.benchmark                192.168.1.1  fe80::9cef:10f5:f2ae:1aa1  thrpt   25  269111251.883 ± 6734146.251  ops/s
      IpMatcherBenchmark.benchmark                192.168.5.1                192.168.1.1  thrpt   25  158110904.503 ± 1620381.437  ops/s
      IpMatcherBenchmark.benchmark                192.168.5.1             192.168.1.0/24  thrpt   25  158561449.487 ± 1235704.889  ops/s
      IpMatcherB...
      5712ae66
  18. 18 Apr, 2019 1 commit
    • Tigran Mkrtchyan's avatar
      nfsv41: LayoutDriver#acceptLayoutReturnData should accept compound context · d541ec64
      Tigran Mkrtchyan authored
      Motivation:
      When layout stats are reported, then consumer misses client information,
      which is not the expected behavior.
      
      Modification:
      Update LayoutDriver#acceptLayoutReturnData to accept compound context.
      
      Result:
      Request information is available when layout stats are processed.
      
      Acked-by: Paul Millar
      Target: master
      d541ec64
  19. 11 Apr, 2019 1 commit
  20. 05 Apr, 2019 1 commit
    • Tigran Mkrtchyan's avatar
      nfs: introduce export table interface · 904714e2
      Tigran Mkrtchyan authored
      Motivation:
      traditionally, nfs exports table is implemented as a export file. However,
      nfs server interested only in the content of the export table. Moreover,
      Some deployments,for instance openstack shared file system interface, may
      require more dynamic ways to manipulate export table, which is not optimal
      for file based implementation.
      
      Modification:
      Introduce ExportTable interface that provide API required by nfs server
      without exposing implementation details. Update methods to more generic
      names. Update codebase to refer to ExportTable instead of ExportFile.
      The ExportTable class is implementing ExportTable interface.
      
      Result:
      multiple implementation of ExportTable is possible without nfs code changes.
      
      Acked-by: Albert Rossi
      Target: master
      904714e2
  21. 27 Mar, 2019 1 commit
    • Tigran Mkrtchyan's avatar
      nfs: fix export entry ordering · 9a8f6451
      Tigran Mkrtchyan authored
      Motivation:
      as we must match most specific match first, the entries like
      
      lab-*wn*.site.com
      lab-cwn01.site.com
      10.1.2.2
      10.1.2.0/24
      
      must be sorted as
      
      10.1.2.2
      lab-cwn01.site.com
      10.1.2.0/24
      lab-*wn*.site.com
      
      Modification:
      ensure that IP address has a higher priority then full host name.
      Update comparator to always return desired order (IOW, no need for
      reverse sorting).
      
      Result:
      The export entries evaluated in desired order.
      
      Acked-by: Paul Millar
      Target: master, 0.18, 0.17
      9a8f6451
  22. 08 Mar, 2019 1 commit
    • Tigran Mkrtchyan's avatar
      nlm: add throughput test for lock manager · 0a436290
      Tigran Mkrtchyan authored
      Motivation:
      
       - performance benchmarking
       - getting in touch with JMH
      
      Modification:
      Add throughput test for lock manager. Introduce a dedicated profile to
      run benchmark tests.
      
      ```
      $ mvn clean verify -Pbenchmark
      
      ....
      
      Result "org.dcache.nfs.benchmarks.ConcurrentLockManagerBenchmark.benchmarkConcurrentLocking":
        1574556.068 ±(99.9%) 98632.233 ops/s [Average]
        (min, avg, max) = (1078256.296, 1574556.068, 1735655.142), stdev = 131671.209
        CI (99.9%): [1475923.835, 1673188.301] (assumes normal distribution)
      
      $
      ```
      
      Result:
      automated performance monitoring can be integrated into CI.
      
      Acked-by: Albert Rossi
      Target: master
      0a436290
  23. 08 Feb, 2019 1 commit
    • Tigran Mkrtchyan's avatar
      nfs4: check for invalid attribute prior VERIFY/NFERIVY · 7c7714d5
      Tigran Mkrtchyan authored
      fixes: 7aee3bc6
      
      Motivation:
      as FATTR4_RDATTR_ERROR must be used in a context of READDIR operation
      only, the VERIFY/NVERIFY operations must check that FATTR4_RDATTR_ERROR is
      not set.
      
      Modification:
      check for invalid attribute prior VERIFY/NFERIVY operations start to
      compare attributes.
      
      Result:
      better spec compliance.
      
      Acked-by: Paul Millar
      Target: master, 0.18
      7c7714d5