An error occurred fetching the project authors.
  1. 15 Dec, 2002 2 commits
    • Trond Myklebust's avatar
      [PATCH] NFSv4 cleanups · 4de40457
      Trond Myklebust authored
       - Move the encoding/decoding of the actual COMPOUND XDR header out of
         encode_compound()/decode_compound().
      
       - Make each NFSv4 operation 'decode_' routine also take care of
         decoding its own header, and checking it for correctness.
         Also allows us to get rid of the 'nfserr' parameter...
      4de40457
    • Trond Myklebust's avatar
      [PATCH] Fix buffer reservations in nfs4xdr.c · a0952771
      Trond Myklebust authored
      This fixes a couple of incorrect XDR buffer reservations.  The values
      passed to RESERVE_SPACE() must reflect precisely the number of bytes
      that we wish to send down the wire.
      a0952771
  2. 22 Nov, 2002 1 commit
    • Trond Myklebust's avatar
      [PATCH] Split buffer overflow checking out of struct nfs4_compound · dccb90df
      Trond Myklebust authored
      Here is the a pre-patch in the attempt to get rid of 'struct
      nfs4_compound', and the associated horrible union in 'struct
      nfs4_op'.
      
      It splits out the fields that are meant to do buffer overflow checking
      and iovec adjusting on the XDR received/sent data. It moves support
      for that nto the dedicated structure 'xdr_stream', and the associated
      functions 'xdr_reserve_space()', 'xdr_inline_decode()'.
      
      The patch also expands out the all macros ENCODE_HEAD, ENCODE_TAIL,
      ADJUST_ARGS and DECODE_HEAD, as well as most of the DECODE_TAILs.
      dccb90df
  3. 18 Nov, 2002 1 commit
    • Trond Myklebust's avatar
      [PATCH] Support for micro/nanosecond [acm]time in the NFS client · 448cfb18
      Trond Myklebust authored
      Given Andi Kleen's patch that introduces of VFS-level support for
      nanosecond time resolutions, we should finally be able to export the
      existing NFS client level support to userland.
      
      In order to do so, the following patch will convert all NFS private 'raw
      u64' values into the kernel-supported struct timespec directly in the
      xdr_encode/xdr_decode routines.
      
      It adds support for the nanosecond field in NFS 'setattr' calls, and in
      nfs_refresh_inode().
      
      Finally, there are a few cleanups in the nfs_refresh_inode code that
      convert multiple use of the NFS_*(inode) macros into a single
      dereference of NFS_I(inode).
      448cfb18
  4. 17 Nov, 2002 2 commits
    • Andi Kleen's avatar
      [PATCH] nanosecond stat timefields · 5d62665d
      Andi Kleen authored
      stat64 has been changed to return jiffies granuality as nsec in previously
      unused fields. This allows make to make better decisions on when
      to recompile a file. Follows losely the Solaris API.
      
      CURRENT_TIME has been redefined to return struct timespec.  The users
      who don't use it in a inode/attr context have been changed to use a new
      get_seconds() function.  CURRENT_TIME is implemented by an out-of-line
      function.
      
      There is a small performance penalty in this patch.  The previous
      filemap code had an optimization to flush atime only once a second.
      This is currently gone, which will increase flushes a bit.  I believe
      the correct solution if it should be a problem is to have per super
      block fields that give an arbitary atime flush granuality - so that you
      can set it to be only flushed once a hour if you prefer that.  I will
      work on that later in separate patches if the need should arise.
      
      struct inode and the attr struct has been changed to store struct
      timespec instead of time_t for [cma]time.  Not all file systems support
      this granuality, but some like XFS,NFSv3,CIFS,JFS do.  The others will
      currently truncate the nsec part on flushing to disk.  There was some
      discussion on this rounding on l-k previously.  I went for simple
      truncation because there is not much evidence IMHO that the more
      complicated roundings have any advantages.  In practice application will
      be rather unlikely to notice the rounding anyways - they can only see a
      difference when an inode is flush from memory and reloaded in less than
      a second, which is rather unlikely.
      5d62665d
    • Trond Myklebust's avatar
      [PATCH] cleanup: switch to passing *(struct rpc_procinfo) in rpc_message. · 7b9edd50
      Trond Myklebust authored
      The "procedure number" has been used for 2 purposes in the kernel
      client RPC implementation:
      
        1) As a number to pass to the server in the RPC header.
      
        2) As an index into the "procedure array" of type 'struct
           rpc_procinfo', from which the RPC layer can find the XDR
           encode/decode functions, buffer size, and all the other static
           data that it needs to construct the on-wire RPC message.
      
      This works fine for NFSv2, v3 and for the NLM locking code for which
      there is a one-to-one mapping between NFS file operations, and RPC
      procedures.
      For NFSv4 on the other hand, the mapping is many-to-one, since there
      is only one RPC procedure number: NFSPROC4_COMPOUND.
      
      For efficiency purposes, we want to have a one-to-one mapping between
      NFS file operations and the corresponding XDR encode/decode routines,
      but currently this is not possible because of (2). The result is the
      mess that is 'struct nfs4_op' and encode/decode_compound.
      
      In the process eliminating (2), we might as well change to passing a
      pointer to the appropriate procedure array entry instead of an
      index. This change can be made transparent
      
      The appended patch therefore does the following:
      
         - Substitute a pointer to the rpc_procinfo instead of the RPC
           procedure number in the struct rpc_message.
         - Make the RPC procedure number an entry in the struct
           rpc_procinfo.
         - Clean out the largely unused (except in some obscure lockd
           debugging code) p_name field. The latter was just a stringified
           version of the RPC procedure name, so for those lockd cases, we
           can use the RPC procedure number instead.
      7b9edd50
  5. 16 Oct, 2002 1 commit
  6. 15 Oct, 2002 1 commit
    • Trond Myklebust's avatar
      [PATCH] A basic NFSv4 client for 2.5.x · bf5344dc
      Trond Myklebust authored
      Now that all the hooks are in place, this large patch imports all
      of the new code for the NFSv4 client.
        nfs4proc.c   - procedure vectors
        nfs4xdr.c    - XDR
        nfs4state.c  - state bookkeeping (very minimal for now)
        nfs4renewd.c - a daemon (implemented as an rpc_task) to keep
                       state from expiring on the server
      
      Note: The RPCSEC_GSS authentication code is not yet included here.
        For the moment we make do with AUTH_UNIX aka. AUTH_SYS.
      
        Neither is the code to do upcalls to userland in order to do
        uid/gid <-> name mappings. Instead, stubs have been added to
        translate everything to 'nobody:nobody' == '-2:-2'
      bf5344dc