An error occurred fetching the project authors.
  1. 13 Mar, 2004 3 commits
  2. 07 Feb, 2004 2 commits
  3. 07 Oct, 2003 3 commits
    • Trond Myklebust's avatar
      NFSv4 state model update · 1a7bc914
      Trond Myklebust authored
        - Hierarchy of state attached to nfs4_client in order to
          simplify state recovery.
          state_owners hang off nfs4_client, whereas state hangs
          off both open_owners and the nfs_inode.
          
        - Model tries to minimize the number of open_owners on
          the server by recycling unused open_owners into a pool.
          
        - NFSv4 state attached to file->private_data. Previously
          this was used by credentials (and still is for NFSv2/v3)
          Abstract out setup/release of struct file and nfs_page
          structure initialization in order to cope with these
          conflicting uses of private_data.
      1a7bc914
    • Trond Myklebust's avatar
      Simplify NFS synchronous write call interface. Pass · 3e97d5ee
      Trond Myklebust authored
      a pointer to a filled nfs_write_data struct like we
      do for asynchronous function calls
      3e97d5ee
    • Trond Myklebust's avatar
      Simplify the synchronous NFS read call interface by · 0b6cfeaa
      Trond Myklebust authored
      passing a pointer to a filled nfs_read_data structure
      (the same struct used by the asynchronous function calls)
      0b6cfeaa
  4. 23 Sep, 2003 2 commits
    • Alexander Viro's avatar
      [PATCH] 32-bit dev_t: switch-over · 1c2c2a8f
      Alexander Viro authored
      Real conversion to 32bit dev_t.  Expansion to:
      	* mknod() - 32
      	* newstat() - 32 on 64bit platforms
      	* stat64() - 32 on mips, 64 on everything else (mips has weird struct
      stat64 and can't get more than 32 bits).  Note that right now the difference
      is purely theoretical - we don't have internal values above 32 bits, so
      huge_... vs. new_... only marks the places where 64bit conversion will need
      extra work.
      	* arch-dependent stat variants - depending on width available.
      	* ustat et.al. - 32
      	* filesystems that can handle 32 bits right now - 32
      	* ext2 and ext3 - 32, with large dev_t inodes having 0 in the first
      element of i_data[] (where we store dev_t value for small device numbers) and
      keeping the value in the second element.
      	* nfsd - 32; it can be driven to 64, but we'll get several issues with
      NFSv2 support.
      	* RAID - 32
      	* devmapper - with v1 it's still 16 (nothing to do here), with v4 it's
      64.
      	* loop - 64
      	* initramfs - 32
      	* do_mounts code - 32.  Parts that scan devfs tree are using newstat()
      on 64bit platforms and stat64() on the rest (IOW, the latest stat variant on
      given platform).
      	* old_valid_dev()/new_valid_dev() added where needed (stat variants,
      mostly - we fail with -EOVERFLOW if values do not fit).
      1c2c2a8f
    • Alexander Viro's avatar
      [PATCH] prepare for 32-bit dev_t: NFS · 9e213524
      Alexander Viro authored
      	NFS made dev_t-agnostic.  Aside of minor fixes in debugging printks,
      and adding old_encode_dev()/old_decode_dev(), the main part is in handling
      of exports with large dev_t.  New fhandle format introduced, fh_verify(),
      fh_compose() and exports cache taught to deal with it.  Format is used when
      ->s_dev of exported fs doesn't fit into 256:256; in that case we put major
      and minor in separate words in fhandle; ->fh_fsid_type is set to 2.
      9e213524
  5. 08 Jan, 2003 1 commit
    • Trond Myklebust's avatar
      [PATCH] allow arbitrary alignment of NFS read/write requests · 0c5bb195
      Trond Myklebust authored
      Patch by Chuck Lever to add a new field called wb_pgbase to the
      nfs_page struct. This separates the concept of file page offset from
      buffer page offset, allowing NFS to specify read and write requests
      into buffers at offsets that are independent of the file page
      offset. It is a prequisite for direct I/O in NFS.
      0c5bb195
  6. 20 Dec, 2002 4 commits
    • Chuck Lever's avatar
      [PATCH] cleanup: simplify req_offset function in NFS client · 0607be17
      Chuck Lever authored
      Description:
        everywhere the NFS client uses the req_offset() function today, it adds
        req->wb_offset to the result.  this patch simply makes "+req->wb_offset"
        a part of the req_offset() function.
      
      Test status:
        Passes all Connectathon '02 tests with v2, v3, UDP and TCP.  Passes
        NFS torture tests on an x86 UP highmem system.
      0607be17
    • Trond Myklebust's avatar
      [PATCH] Support for NFSv4 READ + WRITE attribute cache consistency · ef087040
      Trond Myklebust authored
      Retrieve the post-operation attribute changes for NFSv4 READ and
      WRITE operations. Unlike for NFSv2 and NFSv3, we do not retrieve the
      full set of file attributes. The main reason for this is that
      interpreting attributes is a much heavier task on NFSv4 (requiring, for
      instance, translation of file owner names into uids ...). Hence
      
        For a READ request, we retrieve only the 'change attribute' (for cache
        consistency checking) and the atime.
      
        For a WRITE request, we retrieve the 'change attribute' and the file size.
        In addition, we retrieve the value of the change attribute prior to the
        write operation, in order to be able to do weak cache consistency checking.
      ef087040
    • Trond Myklebust's avatar
      [PATCH] Clean up NFSv4 WRITE xdr path · c5d74703
      Trond Myklebust authored
      The following patch creates a clean XDR path for the NFSv4 write requests
      instead of routing through encode_compound()/decode_compound().
      c5d74703
    • Trond Myklebust's avatar
      [PATCH] Clean up NFSv4 READ xdr path · fa09df5e
      Trond Myklebust authored
      This creates a clean XDR path for the NFSv4 read requests instead of
      routing through encode_compound()/decode_compound().  This eliminates
      the intermediate step of setting up a struct nfs4_compound before
      proceeding to XDR encoding, and removes the large 'switch()' statements
      from the codepath altogether.
      fa09df5e
  7. 17 Nov, 2002 1 commit
    • 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
  8. 16 Oct, 2002 1 commit
  9. 15 Oct, 2002 1 commit
    • Trond Myklebust's avatar
      [PATCH] A basic NFSv4 client for 2.5.x · b354d917
      Trond Myklebust authored
      Further cleanups
      
      Separate the static and dynamic filesystem data retrieval calls as per the
      NFSv3 spec. This also simplifies things for NFSv4, since many of the
      attributes in the fsinfo+fstat combined call are not mandatory to
      implement.
      b354d917
  10. 11 Oct, 2002 2 commits
    • Trond Myklebust's avatar
      [PATCH] A basic NFSv4 client for 2.5.x · be6b809b
      Trond Myklebust authored
      In NFSv3, an RPC is retried if the special error NFSERR_JUKEBOX is
      received.  This generic bit of postprocessing happens invisibly for
      synchronous RPC's, but in the async case, the ->tk_exit callback
      must call nfs_async_handle_jukebox() by hand.
      
      In NFSv4, we also need generic postprocessing of async RPC's, but
      the details are different.  Therefore, we don't want to call
      nfs_async_handle_jukebox(); we want to call a different, NFSv4-specific
      routine.  Therefore, we want to move calls to nfs_async_handle_jukebox()
      out of the "generic" NFS code and into NFSv3-specific routines.  This
      has already been done for async READ and WRITE in the preceding patches,
      but there is still one outstanding case: the async REMOVE in sillyrename.
      
      This patch removes nfs_async_handle_jukebox() from the async sillyrename
      path, and puts in the NFSv3 ->unlink_done() rpc_op.
      be6b809b
    • Trond Myklebust's avatar
      [PATCH] A basic NFSv4 client for 2.5.x · c44ca040
      Trond Myklebust authored
      This is a nontrivial change to the NFS client.
      
      This patch does for the async WRITE and COMMIT paths what patch 15
      did for the async READ path, by defining new nfs_rpc_ops ->setup_write()
      and ->setup_commit().
      c44ca040
  11. 10 Oct, 2002 3 commits
    • Trond Myklebust's avatar
      [PATCH] A basic NFSv4 client for 2.5.x · 63a5ba42
      Trond Myklebust authored
      This is a nontrivial change to the NFS client.
      
      In this patch, we finish modifying the async READ path so that it is
      version-agnostic.  We define a new nfs_rpc_op ->setup_read(), and move
      the v2- and v3-specific code in nfs_read_rpcsetup() there.  We also
      have to change nfs_readpage() result so that the 'count' of bytes
      read is a parameter.  The extra parameter means that it can no longer
      be ->tk_exit().  Instead, it is called from a version-specific ->tk_exit()
      routine which is set in ->read_setup().
      
      The upshot of all this is that the version-specific part of the
      async READ path has been encapsulated in a new nfs_rpc_op
      ->read_setup(), and NFSv4 can share the logic for asynchronous
      READ's with NFSv2 and v3.
      63a5ba42
    • Trond Myklebust's avatar
      [PATCH] A basic NFSv4 client for 2.5.x · 62d86355
      Trond Myklebust authored
      This patch changes the interface of the ->setattr() nfs_rpc_op
      so that its first argument is a dentry instead of an inode.
      
      [Explanation: The dentry is required because in NFSv4, we may
       need to OPEN the file before doing the SETATTR.  (This is
       required if the file size is changed as part of the setattr.)
       Opening the file requires making use of the containing
       directory's inode.]
      62d86355
    • Trond Myklebust's avatar
      [PATCH] A basic NFSv4 client for 2.5.x · 40a4b2a4
      Trond Myklebust authored
      This patch changes the interface of the ->readdir() nfs_rpc_op
      so that its first argument is a dentry instead of an inode.
      
      [Explanation: The dentry is required because in NFSv4, we need
       to make use of the _parent_ directory's inode.  This is because
       NFSv4 servers no longer return an entry for ".." in the READDIR
       response, so the client kernel needs to fake this entry, inode
       number and all.]
      40a4b2a4
  12. 10 Sep, 2002 1 commit
  13. 28 May, 2002 2 commits
    • Trond Myklebust's avatar
      [PATCH] RPC client receive deadlock removal on HIGHMEM systems · 68c45a68
      Trond Myklebust authored
      Remove another class of rpciod deadlocks on HIGHMEM systems. Kick habit of
      keeping pages kmap()ed for the entire duration of NFS
      read/readdir/readlink operations.
      
      Use struct page directly in RPC client data receive buffer. TCP and UDP
      sk->data_ready() bottom-halves copy (and checksum when needed) data into
      pages rather than iovecs. atomic_kmap() of single pages is used for the
      copy.
      
      include/linux/xdr.h
         Declare structure for copying an sk_buff here rather than in xprt.c.
         Forward declaration of new functions.
      
      include/linux/sunrpc/xprt.h
         RPC client receive buffer changed to use new format 'struct xdr_buf'.
      
      net/sunrpc/clnt.c
         Initialize new format receive buffer.
      
      net/sunrpc/sunrpc_syms.c
         Export xdr_inline_pages(), xdr_shift_buf()
      
      net/sunrpc/xdr.c
         xdr_inline_pages() inlines pages into the receive buffer.
         xdr_partial_copy_from_skb() replaces csum_partial_copy_to_page_cache()
      	and copy code in tcp_read_request(). Provides sendfile()-style
      	method for copying data from an skb into a struct xdr_buf.
         xdr_shift_buf() replaces xdr_shift_iovec() for when we overestimate
      	the size of the RPC/NFS header.
      
      net/sunrpc/xprt.c
         Adapt UDP and TCP receive routines to use new format xdr_buf.
      
      include/linux/nfs_xdr.h
         struct nfs_readargs, nfs_readdirargs, nfs_readlinkargs,
      	nfs3_readdirargs, nfs3_readlinkargs all transmit page information.
         struct nfs_readdirres, nfs_readlinkres, nfs3_readlinkres obsoleted.
         struct nfs_rpc_ops->readlink(), readdir(), read() now send pages
      
      fs/nfs/dir.c
         Adapt to new format ->readdir().
         Avoid kmap() around the RPC call.
      
      fs/nfs/read.c
         Adapt to new format ->read() and struct nfs_readargs.
      
      fs/nfs/symlink.c
         Adapt to new format ->readlink().
      
      fs/nfs/proc.c
         Convert nfs_proc_readlink(), nfs_proc_readdir(), nfs_proc_read()
      
      fs/nfs/nfs2xdr.c
         Convert XDR routines to transmit page information.
         Remove duplicate zeroing of pages when server returns a short read.
      
      fs/nfs/nfs3proc.c
         Convert nfs3_proc_readlink(),nfs3_proc_readdir(),nfs3_proc_read()
      
      fs/nfs/nfs3xdr.c
         Convert XDR routines to transmit page information.
         Remove duplicate zeroing of pages when server returns a short read.
      
      Cheers,
        Trond
      68c45a68
    • Trond Myklebust's avatar
      [PATCH] Teach RPC client to send pages rather than iovecs. · 9f73fdbc
      Trond Myklebust authored
      Stop rpciod from deadlocking against itself in map_new_virtual() on HIGHMEM
      systems. RPC client currently has to keep all pages that are scheduled for
      transmission kmap()ed into an iovec for the entire duration of the call.
      We only actually need to kmap() pages while making the (non-blocking)
      call to sock_sendmsg().
      
      NOTE: When transmitting several pages in one RPC call, sock_sendmsg()
      requires us to kmap() *all* those pages at the same time. Opens for
      deadlocks between rpciod and some other process that also kmaps more
      than 1 page at a time.
      For the TCP case we can solve later by converting to TCP_CORK+sendpage().
      
      include/linux/sunrpc/xdr.h
         Introduce 'struct xdr_buf' in order to allow RPC layer to handle
         pages directly.
      
      include/linux/sunrpc/xprt.h:
         Convert the RPC client send-buffer to the new format.
      
      net/sunrpc/clnt.c
         Initialize the new format RPC send-buffer.
      
      net/sunrpc/sunrpc_syms.c
         Export xdr_encode_pages()
      
      net/sunrpc/xdr.c
         xdr_kmap() kmap()+copy a struct xdr_buf into an iovec array.
         xdr_kunmap() clean up after xdr_kmap().
         xdr_encode_pages() used to inline pages for transmission.
      
      net/sunrpc/xprt.c
         xprt_sendmsg() needs to kmap() the pages into an iovec for transmission.
      
      include/linux/nfs_xdr.h
         struct nfs_writeargs transmits full page information.
         Convert nfs_rpc_ops->write() to send pages.
      
      fs/nfs/write.c
         Adapt to new format nfs_writeargs / nfs_rpc_ops->write()
      
      fs/nfs/proc.c
         Convert nfs_proc_write().
      
      fs/nfs/nfs2xdr.c
         Convert nfs_xdr_writeargs()
      
      fs/nfs/nfs3proc.c
         Convert nfs3_proc_write().
      
      fs/nfs/nfs3xdr.c
         Convert nfs3_xdr_writeargs()
      
      Cheers,
         Trond
      9f73fdbc
  14. 30 Apr, 2002 1 commit
    • Dave Hansen's avatar
      [PATCH] shift BKL out of vfs_readdir · ec3630a1
      Dave Hansen authored
      This patch takes the BKL out of vfs_readdir() and moves it into the
      individual filesystems, all 35 of them.  I have the feeling that this
      wasn't done before because there are a lot of these to change and it was
      a pain to find them all.  I definitely got all of those that were
      defined in the in the structure declaration like this "readdir:
      fs_readdir;" vxfs_readdir was assigned strangely, but I found it anyway.
      I also left devfs out of this one.  Richard seems confident that devfs
      has no need for the BKL.
      ec3630a1
  15. 04 Apr, 2002 1 commit
  16. 09 Feb, 2002 1 commit
  17. 05 Feb, 2002 2 commits
    • Linus Torvalds's avatar
      v2.4.1.2 -> v2.4.1.3 · c8ebfc88
      Linus Torvalds authored
        - Jens: better ordering of requests when unable to merge
        - Neil Brown: make md work as a module again (we cannot autodetect
        in modules, not enough background information)
        - Neil Brown: raid5 SMP locking cleanups
        - Neil Brown: nfsd: handle Irix NFS clients named pipe behavior and
        dentry leak fix
        - maestro3 shutdown fix
        - fix dcache hash calculation that could cause bad hashes under certain
        circumstances (Dean Gaudet)
        - David Miller: networking and sparc updates
        - Jeff Garzik: include file cleanups
        - Andy Grover: ACPI update
        - Coda-fs error return fixes
        - rth: alpha Jensen update
      c8ebfc88
    • Linus Torvalds's avatar
      Import changeset · 7a2deb32
      Linus Torvalds authored
      7a2deb32