07 Nov, 2011

1 commit

  • * 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)
    Revert "tracing: Include module.h in define_trace.h"
    irq: don't put module.h into irq.h for tracking irqgen modules.
    bluetooth: macroize two small inlines to avoid module.h
    ip_vs.h: fix implicit use of module_get/module_put from module.h
    nf_conntrack.h: fix up fallout from implicit moduleparam.h presence
    include: replace linux/module.h with "struct module" wherever possible
    include: convert various register fcns to macros to avoid include chaining
    crypto.h: remove unused crypto_tfm_alg_modname() inline
    uwb.h: fix implicit use of asm/page.h for PAGE_SIZE
    pm_runtime.h: explicitly requires notifier.h
    linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h
    miscdevice.h: fix up implicit use of lists and types
    stop_machine.h: fix implicit use of smp.h for smp_processor_id
    of: fix implicit use of errno.h in include/linux/of.h
    of_platform.h: delete needless include
    acpi: remove module.h include from platform/aclinux.h
    miscdevice.h: delete unnecessary inclusion of module.h
    device_cgroup.h: delete needless include
    net: sch_generic remove redundant use of
    net: inet_timewait_sock doesnt need
    ...

    Fix up trivial conflicts (other header files, and removal of the ab3550 mfd driver) in
    - drivers/media/dvb/frontends/dibx000_common.c
    - drivers/media/video/{mt9m111.c,ov6650.c}
    - drivers/mfd/ab3550-core.c
    - include/linux/dmaengine.h

    Linus Torvalds
     

01 Nov, 2011

1 commit

  • 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: Paul Gortmaker

    Paul Gortmaker
     

25 Oct, 2011

1 commit


18 Jul, 2011

1 commit

  • 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: J. Bruce Fields

    J. Bruce Fields
     

16 Jul, 2011

1 commit

  • 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: NeilBrown
    Signed-off-by: J. Bruce Fields

    NeilBrown
     

05 Jan, 2011

1 commit

  • 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: J. Bruce Fields

    J. Bruce Fields
     

02 Oct, 2010

1 commit


07 Aug, 2010

2 commits

  • Commit 59db4a0c102e0de226a3395dbf25ea51bf845937 "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: J. Bruce Fields

    J. Bruce Fields
     
  • 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: Tetsuo Handa
    Signed-off-by: J. Bruce Fields

    J. Bruce Fields
     

23 Jul, 2010

5 commits

  • More idiomatic to put the error case in the if clause.

    Signed-off-by: J. Bruce Fields

    J. Bruce Fields
     
  • This is just cleanup--it's harmless to call nfsd_rachache_init,
    nfsd_init_socks, and nfsd_reset_versions more than once. But there's no
    point to it.

    Signed-off-by: J. Bruce Fields

    J. Bruce Fields
     
  • Right now, nfsd keeps a lockd reference for each socket that it has
    open. This is unnecessary and complicates the error handling on
    startup and shutdown. Change it to just do a lockd_up when starting
    the first nfsd thread just do a single lockd_down when taking down the
    last nfsd thread. Because of the strange way the sv_count is handled
    this requires an extra flag to tell whether the nfsd_serv holds a
    reference for lockd or not.

    Signed-off-by: Jeff Layton
    Signed-off-by: J. Bruce Fields

    Jeff Layton
     
  • There doesn't seem to be any need to reset the nfssvc_boot time if the
    nfsd startup failed.

    Signed-off-by: Jeff Layton
    Signed-off-by: J. Bruce Fields

    Jeff Layton
     
  • If someone tries to shut down the laundry_wq while it isn't up it'll
    cause an oops.

    This can happen because write_ports can create a nfsd_svc before we
    really start the nfs server, and we may fail before the server is ever
    started.

    Also make sure state is shutdown on error paths in nfsd_svc().

    Use a common global nfsd_up flag instead of nfs4_init, and create common
    helper functions for nfsd start/shutdown, as there will be other work
    that we want done only when we the number of nfsd threads transitions
    between zero and nonzero.

    Signed-off-by: J. Bruce Fields

    Jeff Layton
     

15 May, 2010

1 commit

  • The /proc/fs/nfsd/versions file calls nfsd_vers() to check whether
    the particular nfsd version is present/available. The problem is
    that once I turn off e.g. NFSD-V4 this call returns -1 which is
    true from the callers POV which is wrong.

    The proposal is to report false in that case.

    The bug has existed since 6658d3a7bbfd1768 "[PATCH] knfsd: remove
    nfsd_versbits as intermediate storage for desired versions".

    Signed-off-by: Pavel Emelyanov
    Cc: stable@kernel.org
    Acked-by: NeilBrown
    Signed-off-by: J. Bruce Fields

    Pavel Emelyanov
     

16 Dec, 2009

1 commit


15 Dec, 2009

2 commits


14 Nov, 2009

1 commit


22 Sep, 2009

1 commit

  • * 'for-2.6.32' of git://linux-nfs.org/~bfields/linux: (68 commits)
    nfsd4: nfsv4 clients should cross mountpoints
    nfsd: revise 4.1 status documentation
    sunrpc/cache: avoid variable over-loading in cache_defer_req
    sunrpc/cache: use list_del_init for the list_head entries in cache_deferred_req
    nfsd: return success for non-NFS4 nfs4_state_start
    nfsd41: Refactor create_client()
    nfsd41: modify nfsd4.1 backchannel to use new xprt class
    nfsd41: Backchannel: Implement cb_recall over NFSv4.1
    nfsd41: Backchannel: cb_sequence callback
    nfsd41: Backchannel: Setup sequence information
    nfsd41: Backchannel: Server backchannel RPC wait queue
    nfsd41: Backchannel: Add sequence arguments to callback RPC arguments
    nfsd41: Backchannel: callback infrastructure
    nfsd4: use common rpc_cred for all callbacks
    nfsd4: allow nfs4 state startup to fail
    SUNRPC: Defer the auth_gss upcall when the RPC call is asynchronous
    nfsd4: fix null dereference creating nfsv4 callback client
    nfsd4: fix whitespace in NFSPROC4_CLNT_CB_NULL definition
    nfsd41: sunrpc: add new xprt class for nfsv4.1 backchannel
    sunrpc/cache: simplify cache_fresh_locked and cache_fresh_unlocked.
    ...

    Linus Torvalds
     

16 Sep, 2009

1 commit


02 Sep, 2009

2 commits

  • 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: David Howells
    Signed-off-by: James Morris

    David Howells
     
  • 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

    Andy Adamson
     

26 Aug, 2009

1 commit

  • lock_kernel() in knfsd was replaced with a mutex. The later
    commit 03cf6c9f49a8fea953d38648d016e3f46e814991 ("knfsd:
    add file to export stats about nfsd pools") did not follow
    that change. This patch fixes the issue.

    Also move the get and put of nfsd_serv to the open and close methods
    (instead of start and stop methods) to allow atomic check and increment
    of reference count in the open method (where we can still return an
    error).

    Signed-off-by: Ryusei Yamaguchi
    Signed-off-by: Isaku Yamahata
    Signed-off-by: YOSHIFUJI Hideaki
    Cc: Greg Banks
    Signed-off-by: J. Bruce Fields

    Ryusei Yamaguchi
     

21 Aug, 2009

1 commit


29 Jul, 2009

2 commits


15 Jul, 2009

1 commit

  • 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: Andy Adamson
    Signed-off-by: Benny Halevy

    Andy Adamson
     

13 Jul, 2009

1 commit

  • * Remove smp_lock.h from files which don't need it (including some headers!)
    * Add smp_lock.h to files which do need it
    * Make smp_lock.h include conditional in hardirq.h
    It's needed only for one kernel_locked() usage which is under CONFIG_PREEMPT

    This will make hardirq.h inclusion cheaper for every PREEMPT=n config
    (which includes allmodconfig/allyesconfig, BTW)

    Signed-off-by: Alexey Dobriyan
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     

19 Jun, 2009

2 commits

  • 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: NeilBrown
    Acked-by: Jeff Layton

    NeilBrown
     
  • 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: NeilBrown

    NeilBrown
     

07 Apr, 2009

2 commits

  • * 'for-2.6.30' of git://linux-nfs.org/~bfields/linux: (81 commits)
    nfsd41: define nfsd4_set_statp as noop for !CONFIG_NFSD_V4
    nfsd41: define NFSD_DRC_SIZE_SHIFT in set_max_drc
    nfsd41: Documentation/filesystems/nfs41-server.txt
    nfsd41: CREATE_EXCLUSIVE4_1
    nfsd41: SUPPATTR_EXCLCREAT attribute
    nfsd41: support for 3-word long attribute bitmask
    nfsd: dynamically skip encoded fattr bitmap in _nfsd4_verify
    nfsd41: pass writable attrs mask to nfsd4_decode_fattr
    nfsd41: provide support for minor version 1 at rpc level
    nfsd41: control nfsv4.1 svc via /proc/fs/nfsd/versions
    nfsd41: add OPEN4_SHARE_ACCESS_WANT nfs4_stateid bmap
    nfsd41: access_valid
    nfsd41: clientid handling
    nfsd41: check encode size for sessions maxresponse cached
    nfsd41: stateid handling
    nfsd: pass nfsd4_compound_state* to nfs4_preprocess_{state,seq}id_op
    nfsd41: destroy_session operation
    nfsd41: non-page DRC for solo sequence responses
    nfsd41: Add a create session replay cache
    nfsd41: create_session operation
    ...

    Linus Torvalds
     
  • Fixes the following compiler error:
    fs/nfsd/nfssvc.c: In function 'set_max_drc':
    fs/nfsd/nfssvc.c:240: error: 'NFSD_DRC_SIZE_SHIFT' undeclared

    CONFIG_NFSD_V4 is not set

    Reported-by: Alexander Beregalov
    Signed-off-by: Benny Halevy
    Signed-off-by: J. Bruce Fields

    Benny Halevy
     

04 Apr, 2009

3 commits

  • 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: Benny Halevy
    Signed-off-by: J. Bruce Fields

    Benny Halevy
     
  • 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: Andy Adamson
    [moved added fields in struct svc_serv under CONFIG_NFSD_V4_1]
    Signed-off-by: Benny Halevy
    [fix set_max_drc calculation of sv_drc_max_pages]
    [moved NFSD_DRC_SIZE_SHIFT's declaration up in header file]
    Signed-off-by: Benny Halevy
    Signed-off-by: J. Bruce Fields

    Andy Adamson
     
  • 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: Andy Adamson
    Signed-off-by: Benny Halevy
    Signed-off-by: J. Bruce Fields

    Andy Adamson
     

03 Apr, 2009

1 commit

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:
    Remove two unneeded exports and make two symbols static in fs/mpage.c
    Cleanup after commit 585d3bc06f4ca57f975a5a1f698f65a45ea66225
    Trim includes of fdtable.h
    Don't crap into descriptor table in binfmt_som
    Trim includes in binfmt_elf
    Don't mess with descriptor table in load_elf_binary()
    Get rid of indirect include of fs_struct.h
    New helper - current_umask()
    check_unsafe_exec() doesn't care about signal handlers sharing
    New locking/refcounting for fs_struct
    Take fs_struct handling to new file (fs/fs_struct.c)
    Get rid of bumping fs_struct refcount in pivot_root(2)
    Kill unsharing fs_struct in __set_personality()

    Linus Torvalds
     

01 Apr, 2009

1 commit

  • 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: Al Viro

    Al Viro
     

29 Mar, 2009

2 commits