1. 26 6月, 2006 1 次提交
    • L
      Fix NFS2 compile error · f36f44de
      Linus Torvalds 提交于
      Trond had apparently merged the same patch twice, causing a duplicate
      include of the "internal.h" file, with resulting obvious confusion.
      
      Tssk.  I'm the only one allowed to send out trees that don't even
      compile! Who does this Trond guy think he is?
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      f36f44de
  2. 25 6月, 2006 10 次提交
    • A
      nfs: remove nfs_put_link() · 9bf2aa12
      Alexey Dobriyan 提交于
      Signed-off-by: NAlexey Dobriyan <adobriyan@gmail.com>
      Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      9bf2aa12
    • A
      nfs-build-fix-99 · 6ab86aa1
      Andrew Morton 提交于
      fs/built-in.o:(__param+0x20): undefined reference to `nfs_idmap_cache_timeout'
      fs/built-in.o:(__param+0x48): undefined reference to `nfs_callback_set_tcpport'
      
      Cc: Alexey Dobriyan <adobriyan@gmail.com>
      Cc: Andreas Gruenbacher <agruen@suse.de>
      Cc: Andy Adamson <andros@citi.umich.edu>
      Cc: Chuck Lever <cel@netapp.com>
      Cc: David Howells <dhowells@redhat.com>
      Cc: J. Bruce Fields <bfields@fieldses.org>
      Cc: Manoj Naik <manoj@almaden.ibm.com>
      Cc: Marc Eshel <eshel@almaden.ibm.com>
      Cc: Trond Myklebust <Trond.Myklebust@netapp.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      6ab86aa1
    • A
      git-nfs-build-fixes · d75d5414
      Andrew Morton 提交于
      Fix various problems with nfs4 disabled.  And various other things.
      
      In file included from fs/nfs/inode.c:50:
      fs/nfs/internal.h:24: error: static declaration of 'nfs_do_refmount' follows non-static declaration
      include/linux/nfs_fs.h:320: error: previous declaration of 'nfs_do_refmount' was here
      fs/nfs/internal.h:65: warning: 'struct nfs4_fs_locations' declared inside parameter list
      fs/nfs/internal.h:65: warning: its scope is only this definition or declaration, which is probably not what you want
      fs/nfs/internal.h: In function 'nfs4_path':
      fs/nfs/internal.h:97: error: 'struct nfs_server' has no member named 'mnt_path'
      fs/nfs/inode.c: In function 'init_once':
      fs/nfs/inode.c:1116: error: 'struct nfs_inode' has no member named 'open_states'
      fs/nfs/inode.c:1116: error: 'struct nfs_inode' has no member named 'delegation'
      fs/nfs/inode.c:1116: error: 'struct nfs_inode' has no member named 'delegation_state'
      fs/nfs/inode.c:1116: error: 'struct nfs_inode' has no member named 'rwsem'
      distcc[26452] ERROR: compile fs/nfs/inode.c on g5/64 failed
      make[1]: *** [fs/nfs/inode.o] Error 1
      make: *** [fs/nfs/inode.o] Error 2
      make: *** Waiting for unfinished jobs....
      In file included from fs/nfs/nfs3xdr.c:26:
      fs/nfs/internal.h:24: error: static declaration of 'nfs_do_refmount' follows non-static declaration
      include/linux/nfs_fs.h:320: error: previous declaration of 'nfs_do_refmount' was here
      fs/nfs/internal.h:65: warning: 'struct nfs4_fs_locations' declared inside parameter list
      fs/nfs/internal.h:65: warning: its scope is only this definition or declaration, which is probably not what you want
      fs/nfs/internal.h: In function 'nfs4_path':
      fs/nfs/internal.h:97: error: 'struct nfs_server' has no member named 'mnt_path'
      distcc[26486] ERROR: compile fs/nfs/nfs3xdr.c on g5/64 failed
      make[1]: *** [fs/nfs/nfs3xdr.o] Error 1
      make: *** [fs/nfs/nfs3xdr.o] Error 2
      In file included from fs/nfs/nfs3proc.c:24:
      fs/nfs/internal.h:24: error: static declaration of 'nfs_do_refmount' follows non-static declaration
      include/linux/nfs_fs.h:320: error: previous declaration of 'nfs_do_refmount' was here
      fs/nfs/internal.h:65: warning: 'struct nfs4_fs_locations' declared inside parameter list
      fs/nfs/internal.h:65: warning: its scope is only this definition or declaration, which is probably not what you want
      fs/nfs/internal.h: In function 'nfs4_path':
      fs/nfs/internal.h:97: error: 'struct nfs_server' has no member named 'mnt_path'
      distcc[26469] ERROR: compile fs/nfs/nfs3proc.c on bix/32 failed
      make[1]: *** [fs/nfs/nfs3proc.o] Error 1
      make: *** [fs/nfs/nfs3proc.o] Error 2
      **FAILED**
      
      Cc: Alexey Dobriyan <adobriyan@gmail.com>
      Cc: Andreas Gruenbacher <agruen@suse.de>
      Cc: Andy Adamson <andros@citi.umich.edu>
      Cc: Chuck Lever <cel@netapp.com>
      Cc: David Howells <dhowells@redhat.com>
      Cc: J. Bruce Fields <bfields@fieldses.org>
      Cc: Manoj Naik <manoj@almaden.ibm.com>
      Cc: Marc Eshel <eshel@almaden.ibm.com>
      Cc: Trond Myklebust <Trond.Myklebust@netapp.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      d75d5414
    • T
      Merge branch 'odirect' · ccf01ef7
      Trond Myklebust 提交于
      ccf01ef7
    • C
      NFS: alloc nfs_read/write_data as direct I/O is scheduled · 82b145c5
      Chuck Lever 提交于
      Re-arrange the logic in the NFS direct I/O path so that nfs_read/write_data
      structs are allocated just before they are scheduled, rather than
      allocating them all at once before we start scheduling requests.
      Signed-off-by: NChuck Lever <cel@netapp.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      82b145c5
    • C
      NFS: Eliminate nfs_get_user_pages() · 06cf6f2e
      Chuck Lever 提交于
      Neil Brown observed that the kmalloc() in nfs_get_user_pages() is more
      likely to fail if the I/O is large enough to require the allocation of more
      than a single page to keep track of all the pinned pages in the user's
      buffer.
      
      Instead of tracking one large page array per dreq/iocb, track pages per
      nfs_read/write_data, just like the cached I/O path does.  An array for
      pages is already allocated for us by nfs_readdata_alloc() (and the write
      and commit equivalents).
      
      This is also required for adding support for vectored I/O to the NFS direct
      I/O path.
      
      The original reason to pin the user buffer and allocate all the NFS data
      structures before trying to schedule I/O was to ensure all needed resources
      are allocated on the client before starting to send requests.  This reduces
      the chance that resource exhaustion on the client will cause a short read
      or write.
      
      On the other hand, for an application making very large application I/O
      requests, this means that it will be nearly impossible for the application
      to make forward progress on a resource-limited client.
      
      Thus, moving the buffer pinning functionality into the I/O scheduling
      loops should be good for scalability.  The next patch will do the same for
      NFS data structure allocation.
      Signed-off-by: NChuck Lever <cel@netapp.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      06cf6f2e
    • C
      NFS: refactor nfs_direct_free_user_pages · 9c93ab7d
      Chuck Lever 提交于
      Clean-up and fix a minor bug: the logic was dirtying page cache pages on
      both read and write operations.
      Signed-off-by: NChuck Lever <cel@netapp.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      9c93ab7d
    • C
      NFS: remove user_addr, user_count, and pos from nfs_direct_req · 51a7bc6c
      Chuck Lever 提交于
      Make the user_addr, user_count, and pos parameters explicit to the
      scheduler routines, and remove the fields from nfs_direct_req.  The
      iovec API will be passing in a series of these, not just one set.
      Signed-off-by: NChuck Lever <cel@netapp.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      51a7bc6c
    • C
      NFS: "open code" the NFS direct write rescheduler · fedb595c
      Chuck Lever 提交于
      An NFSv3/v4 client must reschedule on-the-wire writes if the writes are
      UNSTABLE, and the server reboots before the client can complete a
      subsequent COMMIT request.
      
      To support direct asynchronous scatter-gather writes, the write
      rescheduler in fs/nfs/direct.c must not depend on the I/O parameters
      in the controlling nfs_direct_req structure.  iovecs can be somewhat
      arbitrarily complex, so there could be an unbounded amount of information
      to save for a rarely encountered requirement.
      
      Refactor the direct write rescheduler so it uses information from each
      nfs_write_data structure to reschedule writes, instead of caching that
      information in the controlling nfs_direct_req structure.
      Signed-off-by: NChuck Lever <cel@netapp.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      fedb595c
    • C
      NFS: Separate functions for counting outstanding NFS direct I/Os · b1c5921c
      Chuck Lever 提交于
      Factor out the logic that increments and decrements the outstanding I/O
      count.  This will be a commonly used bit of code in upcoming patches.
      Also make this an atomic_t again, since it will be very often manipulated
      outside dreq->spin lock.
      Signed-off-by: NChuck Lever <cel@netapp.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      b1c5921c
  3. 23 6月, 2006 3 次提交
    • M
      [PATCH] vfs: add lock owner argument to flush operation · 75e1fcc0
      Miklos Szeredi 提交于
      Pass the POSIX lock owner ID to the flush operation.
      
      This is useful for filesystems which don't want to store any locking state
      in inode->i_flock but want to handle locking/unlocking POSIX locks
      internally.  FUSE is one such filesystem but I think it possible that some
      network filesystems would need this also.
      
      Also add a flag to indicate that a POSIX locking request was generated by
      close(), so filesystems using the above feature won't send an extra locking
      request in this case.
      Signed-off-by: NMiklos Szeredi <miklos@szeredi.hu>
      Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      75e1fcc0
    • D
      [PATCH] VFS: Permit filesystem to perform statfs with a known root dentry · 726c3342
      David Howells 提交于
      Give the statfs superblock operation a dentry pointer rather than a superblock
      pointer.
      
      This complements the get_sb() patch.  That reduced the significance of
      sb->s_root, allowing NFS to place a fake root there.  However, NFS does
      require a dentry to use as a target for the statfs operation.  This permits
      the root in the vfsmount to be used instead.
      
      linux/mount.h has been added where necessary to make allyesconfig build
      successfully.
      
      Interest has also been expressed for use with the FUSE and XFS filesystems.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Acked-by: NAl Viro <viro@zeniv.linux.org.uk>
      Cc: Nathan Scott <nathans@sgi.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      726c3342
    • D
      [PATCH] VFS: Permit filesystem to override root dentry on mount · 454e2398
      David Howells 提交于
      Extend the get_sb() filesystem operation to take an extra argument that
      permits the VFS to pass in the target vfsmount that defines the mountpoint.
      
      The filesystem is then required to manually set the superblock and root dentry
      pointers.  For most filesystems, this should be done with simple_set_mnt()
      which will set the superblock pointer and then set the root dentry to the
      superblock's s_root (as per the old default behaviour).
      
      The get_sb() op now returns an integer as there's now no need to return the
      superblock pointer.
      
      This patch permits a superblock to be implicitly shared amongst several mount
      points, such as can be done with NFS to avoid potential inode aliasing.  In
      such a case, simple_set_mnt() would not be called, and instead the mnt_root
      and mnt_sb would be set directly.
      
      The patch also makes the following changes:
      
       (*) the get_sb_*() convenience functions in the core kernel now take a vfsmount
           pointer argument and return an integer, so most filesystems have to change
           very little.
      
       (*) If one of the convenience function is not used, then get_sb() should
           normally call simple_set_mnt() to instantiate the vfsmount. This will
           always return 0, and so can be tail-called from get_sb().
      
       (*) generic_shutdown_super() now calls shrink_dcache_sb() to clean up the
           dcache upon superblock destruction rather than shrink_dcache_anon().
      
           This is required because the superblock may now have multiple trees that
           aren't actually bound to s_root, but that still need to be cleaned up. The
           currently called functions assume that the whole tree is rooted at s_root,
           and that anonymous dentries are not the roots of trees which results in
           dentries being left unculled.
      
           However, with the way NFS superblock sharing are currently set to be
           implemented, these assumptions are violated: the root of the filesystem is
           simply a dummy dentry and inode (the real inode for '/' may well be
           inaccessible), and all the vfsmounts are rooted on anonymous[*] dentries
           with child trees.
      
           [*] Anonymous until discovered from another tree.
      
       (*) The documentation has been adjusted, including the additional bit of
           changing ext2_* into foo_* in the documentation.
      
      [akpm@osdl.org: convert ipath_fs, do other stuff]
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Acked-by: NAl Viro <viro@zeniv.linux.org.uk>
      Cc: Nathan Scott <nathans@sgi.com>
      Cc: Roland Dreier <rolandd@cisco.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      454e2398
  4. 09 6月, 2006 26 次提交