1. 01 Jun, 2012 1 commit
  2. 12 Apr, 2012 1 commit
  3. 11 Apr, 2012 1 commit
  4. 03 Feb, 2012 2 commits
  5. 01 Feb, 2012 1 commit
  6. 31 Oct, 2011 1 commit
    • Paul Gortmaker's avatar
      fs: add module.h to files that were implicitly using it · 143cb494
      Paul Gortmaker authored
      
      Some files were using the complete module.h infrastructure without
      actually including the header at all.  Fix them up in advance so
      once the implicit presence is removed, we won't get failures like this:
      
        CC [M]  fs/nfsd/nfssvc.o
      fs/nfsd/nfssvc.c: In function 'nfsd_create_serv':
      fs/nfsd/nfssvc.c:335: error: 'THIS_MODULE' undeclared (first use in this function)
      fs/nfsd/nfssvc.c:335: error: (Each undeclared identifier is reported only once
      fs/nfsd/nfssvc.c:335: error: for each function it appears in.)
      fs/nfsd/nfssvc.c: In function 'nfsd':
      fs/nfsd/nfssvc.c:555: error: implicit declaration of function 'module_put_and_exit'
      make[3]: *** [fs/nfsd/nfssvc.o] Error 1
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      143cb494
  7. 25 Oct, 2011 1 commit
  8. 18 Jul, 2011 1 commit
    • J. Bruce Fields's avatar
      nfsd: turn on reply cache for NFSv4 · 1091006c
      J. Bruce Fields authored
      
      It's sort of ridiculous that we've never had a working reply cache for
      NFSv4.
      
      On the other hand, we may still not: our current reply cache is likely
      not very good, especially in the TCP case (which is the only case that
      matters for v4).  What we really need here is some serious testing.
      
      Anyway, here's a start.
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      1091006c
  9. 15 Jul, 2011 1 commit
    • NeilBrown's avatar
      nfsd: Remove deprecated nfsctl system call and related code. · 49b28684
      NeilBrown authored
      
      As promised in feature-removal-schedule.txt it is time to
      remove the nfsctl system call.
      
      Userspace has perferred to not use this call throughout 2.6 and it has been
      excluded in the default configuration since 2.6.36 (9 months ago).
      
      So this patch removes all the code that was being compiled out.
      
      There are still references to sys_nfsctl in various arch systemcall tables
      and related code.  These should be cleaned out too, probably in the next
      merge window.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      49b28684
  10. 04 Jan, 2011 1 commit
    • J. Bruce Fields's avatar
      svcrpc: simpler request dropping · 9e701c61
      J. Bruce Fields authored
      
      Currently we use -EAGAIN returns to determine when to drop a deferred
      request.  On its own, that is error-prone, as it makes us treat -EAGAIN
      returns from other functions specially to prevent inadvertent dropping.
      
      So, use a flag on the request instead.
      
      Returning an error on request deferral is still required, to prevent
      further processing, but we no longer need worry that an error return on
      its own could result in a drop.
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      9e701c61
  11. 01 Oct, 2010 1 commit
  12. 06 Aug, 2010 2 commits
    • J. Bruce Fields's avatar
      nfsd: initialize nfsd versions before creating svc · e844a7b9
      J. Bruce Fields authored
      Commit 59db4a0c
      
       "nfsd: move more into
      nfsd_startup()" inadvertently moved nfsd_versions after
      nfsd_create_svc().  On older distributions using an rpc.nfsd that does
      not explicitly set the list of nfsd versions, this results in
      svc-create_pooled() being called with an empty versions array.  The
      resulting incomplete initialization leads to a NULL dereference in
      svc_process_common() the first time a client accesses the server.
      
      Move nfsd_reset_versions() back before the svc_create_pooled(); this
      time, put it closer to the svc_create_pooled() call, to make this
      mistake more difficult in the future.
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      e844a7b9
    • J. Bruce Fields's avatar
      nfsd: fix startup/shutdown order bug · 774f8bbd
      J. Bruce Fields authored
      
      We must create the server before we can call init_socks or check the
      number of threads.
      
      Symptoms were a NULL pointer dereference in nfsd_svc().  Problem
      identified by Jeff Layton.
      
      Also fix a minor cleanup-on-error case in nfsd_startup().
      Reported-by: default avatarTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      774f8bbd
  13. 23 Jul, 2010 5 commits
  14. 14 May, 2010 1 commit
  15. 15 Dec, 2009 1 commit
  16. 14 Dec, 2009 2 commits
  17. 13 Nov, 2009 1 commit
  18. 16 Sep, 2009 1 commit
  19. 02 Sep, 2009 2 commits
    • David Howells's avatar
      CRED: Add some configurable debugging [try #6] · e0e81739
      David Howells authored
      Add a config option (CONFIG_DEBUG_CREDENTIALS) to turn on some debug checking
      for credential management.  The additional code keeps track of the number of
      pointers from task_structs to any given cred struct, and checks to see that
      this number never exceeds the usage count of the cred struct (which includes
      all references, not just those from task_structs).
      
      Furthermore, if SELinux is enabled, the code also checks that the security
      pointer in the cred struct is never seen to be invalid.
      
      This attempts to catch the bug whereby inode_has_perm() faults in an nfsd
      kernel thread on seeing cred->security be a NULL pointer (it appears that the
      credential struct has been previously released):
      
      	http://www.kerneloops.org/oops.php?number=252883
      
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Signed-off-by: default avatarJames Morris <jmorris@namei.org>
      e0e81739
    • Andy Adamson's avatar
      nfsd41: replace page based DRC with buffer based DRC · 557ce264
      Andy Adamson authored
      
      Use NFSD_SLOT_CACHE_SIZE size buffers for sessions DRC instead of holding nfsd
      pages in cache.
      
      Connectathon testing has shown that 1024 bytes for encoded compound operation
      responses past the sequence operation is sufficient, 512 bytes is a little too
      small. Set NFSD_SLOT_CACHE_SIZE to 1024.
      
      Allocate memory for the session DRC in the CREATE_SESSION operation
      to guarantee that the memory resource is available for caching responses.
      Allocate each slot individually in preparation for slot table size negotiation.
      
      Remove struct nfsd4_cache_entry and helper functions for the old page-based
      DRC.
      
      The iov_len calculation in nfs4svc_encode_compoundres is now always
      correct.  Replay is now done in nfsd4_sequence under the state lock, so
      the session ref count is only bumped on non-replay. Clean up the
      nfs4svc_encode_compoundres session logic.
      
      The nfsd4_compound_state statp pointer is also not used.
      Remove nfsd4_set_statp().
      
      Move useful nfsd4_cache_entry fields into nfsd4_slot.
      
      Signed-off-by: Andy Adamson <andros@netapp.com
      Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
      557ce264
  20. 25 Aug, 2009 1 commit
  21. 28 Jul, 2009 2 commits
  22. 14 Jul, 2009 1 commit
    • Andy Adamson's avatar
      nfsd41: use globals for DRC limits · 4bd9b0f4
      Andy Adamson authored
      
      The version 4.1 DRC memory limit and tracking variables are server wide and
      session specific. Replace struct svc_serv fields with globals.
      Stop using the svc_serv sv_lock.
      
      Add a spinlock to serialize access to the DRC limit management variables which
      change on session creation and deletion (usage counter) or (future)
      administrative action to adjust the total DRC memory limit.
      Signed-off-by: default avatarAndy Adamson <andros@netapp.com>
      Signed-off-by: default avatarBenny Halevy <bhalevy@panasas.com>
      4bd9b0f4
  23. 12 Jul, 2009 1 commit
  24. 18 Jun, 2009 2 commits
    • NeilBrown's avatar
      nfsd: optimise the starting of zero threads when none are running. · 671e1fcf
      NeilBrown authored
      
      Currently, if we ask to set then number of nfsd threads to zero when
      there are none running, we set up all the sockets and register the
      service, and then tear it all down again.
      This is pointless.
      
      So detect that case and exit promptly.
      (also remove an assignment to 'error' which was never used.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Acked-by: default avatarJeff Layton <jlayton@redhat.com>
      671e1fcf
    • NeilBrown's avatar
      nfsd: don't take nfsd_mutex twice when setting number of threads. · 82e12fe9
      NeilBrown authored
      
      Currently when we write a number to 'threads' in nfsdfs,
      we take the nfsd_mutex, update the number of threads, then take the
      mutex again to read the number of threads.
      
      Mostly this isn't a big deal.  However if we are write '0', and
      portmap happens to be dead, then we can get unpredictable behaviour.
      If the nfsd threads all got killed quickly and the last thread is
      waiting for portmap to respond, then the second time we take the mutex
      we will block waiting for the last thread.
      However if the nfsd threads didn't die quite that fast, then there
      will be no contention when we try to take the mutex again.
      
      Unpredictability isn't fun, and waiting for the last thread to exit is
      pointless, so avoid taking the lock twice.
      To achieve this, get nfsd_svc return a non-negative number of active
      threads when not returning a negative error.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      82e12fe9
  25. 06 Apr, 2009 1 commit
  26. 04 Apr, 2009 3 commits
    • Benny Halevy's avatar
      nfsd41: control nfsv4.1 svc via /proc/fs/nfsd/versions · 8daf220a
      Benny Halevy authored
      
      Support enabling and disabling nfsv4.1 via /proc/fs/nfsd/versions
      by writing the strings "+4.1" or "-4.1" correspondingly.
      
      Use user mode nfs-utils (rpc.nfsd option) to enable.
      This will allow us to get rid of CONFIG_NFSD_V4_1
      
      [nfsd41: disable support for minorversion by default]
      Signed-off-by: default avatarBenny Halevy <bhalevy@panasas.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
      8daf220a
    • Andy Adamson's avatar
      nfsd41: hard page limit for DRC · c3d06f9c
      Andy Adamson authored
      
      Use no more than 1/128th of the number of free pages at nfsd startup for the
      v4.1 DRC.
      
      This is an arbitrary default which should probably end up under the control
      of an administrator.
      Signed-off-by: default avatarAndy Adamson <andros@netapp.com>
      [moved added fields in struct svc_serv under CONFIG_NFSD_V4_1]
      Signed-off-by: default avatarBenny Halevy <bhalevy@panasas.com>
      [fix set_max_drc calculation of sv_drc_max_pages]
      [moved NFSD_DRC_SIZE_SHIFT's declaration up in header file]
      Signed-off-by: default avatarBenny Halevy <bhalevy@panasas.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
      c3d06f9c
    • Andy Adamson's avatar
      nfsd41: DRC save, restore, and clear functions · 074fe897
      Andy Adamson authored
      
      Cache all the result pages, including the rpc header in rq_respages[0],
      for a request in the slot table cache entry.
      
      Cache the statp pointer from nfsd_dispatch which points into rq_respages[0]
      just past the rpc header. When setting a cache entry, calculate and save the
      length of the nfs data minus the rpc header for rq_respages[0].
      
      When replaying a cache entry, replace the cached rpc header with the
      replayed request rpc result header, unless there is not enough room in the
      cached results first page. In that case, use the cached rpc header.
      
      The sessions fore channel maxresponse size cached is set to NFSD_PAGES_PER_SLOT
      * PAGE_SIZE. For compounds we are cacheing with operations such as READDIR
      that use the xdr_buf->pages to hold data, we choose to cache the extra page of
      data rather than copying data from xdr_buf->pages into the xdr_buf->head page.
      
      [nfsd41: limit cache to maxresponsesize_cached]
      [nfsd41: mv nfsd4_set_statp under CONFIG_NFSD_V4_1]
      [nfsd41: rename nfsd4_move_pages]
      [nfsd41: rename page_no variable]
      [nfsd41: rename nfsd4_set_cache_entry]
      [nfsd41: fix nfsd41_copy_replay_data comment]
      [nfsd41: add to nfsd4_set_cache_entry]
      Signed-off-by: default avatarAndy Adamson <andros@netapp.com>
      Signed-off-by: default avatarBenny Halevy <bhalevy@panasas.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
      074fe897
  27. 01 Apr, 2009 1 commit
    • Al Viro's avatar
      Take fs_struct handling to new file (fs/fs_struct.c) · 3e93cd67
      Al Viro authored
      
      Pure code move; two new helper functions for nfsd and daemonize
      (unshare_fs_struct() and daemonize_fs_struct() resp.; for now -
      the same code as used to be in callers).  unshare_fs_struct()
      exported (for nfsd, as copy_fs_struct()/exit_fs() used to be),
      copy_fs_struct() and exit_fs() don't need exports anymore.
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      3e93cd67
  28. 28 Mar, 2009 1 commit