19 Jul, 2019

1 commit

  • Pull NFS client updates from Trond Myklebust:
    "Highlights include:

    Stable fixes:

    - SUNRPC: Ensure bvecs are re-synced when we re-encode the RPC
    request

    - Fix an Oops in ff_layout_track_ds_error due to a PTR_ERR()
    dereference

    - Revert buggy NFS readdirplus optimisation

    - NFSv4: Handle the special Linux file open access mode

    - pnfs: Fix a problem where we gratuitously start doing I/O through
    the MDS

    Features:

    - Allow NFS client to set up multiple TCP connections to the server
    using a new 'nconnect=X' mount option. Queue length is used to
    balance load.

    - Enhance statistics reporting to report on all transports when using
    multiple connections.

    - Speed up SUNRPC by removing bh-safe spinlocks

    - Add a mechanism to allow NFSv4 to request that containers set a
    unique per-host identifier for when the hostname is not set.

    - Ensure NFSv4 updates the lease_time after a clientid update

    Bugfixes and cleanup:

    - Fix use-after-free in rpcrdma_post_recvs

    - Fix a memory leak when nfs_match_client() is interrupted

    - Fix buggy file access checking in NFSv4 open for execute

    - disable unsupported client side deduplication

    - Fix spurious client disconnections

    - Fix occasional RDMA transport deadlock

    - Various RDMA cleanups

    - Various tracepoint fixes

    - Fix the TCP callback channel to guarantee the server can actually
    send the number of callback requests that was negotiated at mount
    time"

    * tag 'nfs-for-5.3-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (68 commits)
    pnfs/flexfiles: Add tracepoints for detecting pnfs fallback to MDS
    pnfs: Fix a problem where we gratuitously start doing I/O through the MDS
    SUNRPC: Optimise transport balancing code
    SUNRPC: Ensure the bvecs are reset when we re-encode the RPC request
    pnfs/flexfiles: Fix PTR_ERR() dereferences in ff_layout_track_ds_error
    NFSv4: Don't use the zero stateid with layoutget
    SUNRPC: Fix up backchannel slot table accounting
    SUNRPC: Fix initialisation of struct rpc_xprt_switch
    SUNRPC: Skip zero-refcount transports
    SUNRPC: Replace division by multiplication in calculation of queue length
    NFSv4: Validate the stateid before applying it to state recovery
    nfs4.0: Refetch lease_time after clientid update
    nfs4: Rename nfs41_setup_state_renewal
    nfs4: Make nfs4_proc_get_lease_time available for nfs4.0
    nfs: Fix copy-and-paste error in debug message
    NFS: Replace 16 seq_printf() calls by seq_puts()
    NFS: Use seq_putc() in nfs_show_stats()
    Revert "NFS: readdirplus optimization by cache mechanism" (memleak)
    SUNRPC: Fix transport accounting when caller specifies an rpc_xprt
    NFS: Record task, client ID, and XID in xdr_status trace points
    ...

    Linus Torvalds
     

07 Jul, 2019

2 commits


03 Jul, 2019

1 commit

  • When calling debugfs functions, there is no need to ever check the
    return value. The function can work or not, but the code logic should
    never do something different based on this.

    Cc: "J. Bruce Fields"
    Cc: Jeff Layton
    Cc: Trond Myklebust
    Cc: Anna Schumaker
    Cc: linux-nfs@vger.kernel.org
    Cc: netdev@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman
    Link: https://lore.kernel.org/r/20190612145622.GA18839@kroah.com
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

26 Apr, 2019

1 commit


13 Feb, 2019

1 commit

  • debugfs can now report an error code if something went wrong instead of
    just NULL. So if the return value is to be used as a "real" dentry, it
    needs to be checked if it is an error before dereferencing it.

    This is now happening because of ff9fb72bc077 ("debugfs: return error
    values, not NULL"), but why debugfs files are not being created properly
    is an older issue, probably one that has always been there and should
    probably be looked at...

    Cc: "J. Bruce Fields"
    Cc: Jeff Layton
    Cc: Trond Myklebust
    Cc: Anna Schumaker
    Cc: linux-nfs@vger.kernel.org
    Cc: netdev@vger.kernel.org
    Reported-by: David Howells
    Tested-by: David Howells
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Anna Schumaker

    Greg Kroah-Hartman
     

27 Mar, 2018

1 commit

  • Prefer the direct use of octal for permissions.

    Done with checkpatch -f --types=SYMBOLIC_PERMS --fix-inplace
    and some typing.

    Miscellanea:

    o Whitespace neatening around these conversions.

    Signed-off-by: Joe Perches
    Signed-off-by: David S. Miller

    Joe Perches
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

09 Feb, 2017

1 commit


12 Jun, 2015

1 commit

  • Cross-compile test on ARCH=mn10300:

    In file included from include/linux/list.h:8:0,
    from include/linux/wait.h:6,
    from include/linux/fs.h:6,
    from include/linux/debugfs.h:18,
    from net/sunrpc/debugfs.c:7:
    net/sunrpc/debugfs.c: In function 'fault_disconnect_write':
    include/linux/kernel.h:723:17: warning: comparison of distinct pointer
    types lacks a cast
    (void) (&_min1 == &_min2); \
    ^
    >> net/sunrpc/debugfs.c:307:8: note: in expansion of macro 'min'
    len = min(len, sizeof(buffer) - 1);

    Fixes: ('SUNRPC: Transport fault injection')
    Signed-off-by: Chuck Lever
    Signed-off-by: Trond Myklebust

    Chuck Lever
     

11 Jun, 2015

1 commit

  • It has been exceptionally useful to exercise the logic that handles
    local immediate errors and RDMA connection loss. To enable
    developers to test this regularly and repeatably, add logic to
    simulate connection loss every so often.

    Fault injection is disabled by default. It is enabled with

    $ sudo echo xxx > /sys/kernel/debug/sunrpc/inject_fault/disconnect

    where "xxx" is a large positive number of transport method calls
    before a disconnect. A value of several thousand is usually a good
    number that allows reasonable forward progress while still causing a
    lot of connection drops.

    These hooks are disabled when SUNRPC_DEBUG is turned off.

    Signed-off-by: Chuck Lever
    Signed-off-by: Trond Myklebust

    Chuck Lever
     

01 Apr, 2015

1 commit

  • We currently have a problem that SELinux policy is being enforced when
    creating debugfs files. If a debugfs file is created as a side effect of
    doing some syscall, then that creation can fail if the SELinux policy
    for that process prevents it.

    This seems wrong. We don't do that for files under /proc, for instance,
    so Bruce has proposed a patch to fix that.

    While discussing that patch however, Greg K.H. stated:

    "No kernel code should care / fail if a debugfs function fails, so
    please fix up the sunrpc code first."

    This patch converts all of the sunrpc debugfs setup code to be void
    return functins, and the callers to not look for errors from those
    functions.

    This should allow rpc_clnt and rpc_xprt creation to work, even if the
    kernel fails to create debugfs files for some reason.

    Symptoms were failing krb5 mounts on systems using gss-proxy and
    selinux.

    Fixes: 388f0c776781 "sunrpc: add a debugfs rpc_xprt directory..."
    Cc: stable@vger.kernel.org
    Signed-off-by: Jeff Layton
    Acked-by: Greg Kroah-Hartman
    Signed-off-by: J. Bruce Fields

    Jeff Layton
     

28 Nov, 2014

2 commits

  • Add a new directory heirarchy under the debugfs sunrpc/ directory:

    sunrpc/
    rpc_xprt/
    /

    Within that directory, we can put files that give info about the
    xprts. We do have the (minor) problem that there is no succinct,
    unique identifier for rpc_xprts. So we generate them synthetically
    with a static atomic_t counter.

    For now, this directory just holds an "info" file, but we may add
    other files to it in the future.

    Signed-off-by: Jeff Layton
    Signed-off-by: Trond Myklebust

    Jeff Layton
     
  • It's possible to get a dump of the RPC task queue by writing a value to
    /proc/sys/sunrpc/rpc_debug. If you write any value to that file, you get
    a dump of the RPC client task list into the log buffer. This is a rather
    inconvenient interface however, and makes it hard to get immediate info
    about the task queue.

    Add a new directory hierarchy under debugfs:

    sunrpc/
    rpc_clnt/
    /

    Within each clientid directory we create a new "tasks" file that will
    dump info similar to what shows up in the log buffer, but with a few
    small differences -- we avoid printing raw kernel addresses in favor of
    symbolic names and the XID is also displayed.

    Signed-off-by: Jeff Layton
    Signed-off-by: Trond Myklebust

    Jeff Layton