Merge tag 'nfsd-4.8' of git://linux-nfs.org/~bfields/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 4 Aug 2016 23:59:06 +0000 (19:59 -0400)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 4 Aug 2016 23:59:06 +0000 (19:59 -0400)
Pull nfsd updates from Bruce Fields:
 "Highlights:

   - Trond made a change to the server's tcp logic that allows a fast
     client to better take advantage of high bandwidth networks, but may
     increase the risk that a single client could starve other clients;
     a new sunrpc.svc_rpc_per_connection_limit parameter should help
     mitigate this in the (hopefully unlikely) event this becomes a
     problem in practice.

   - Tom Haynes added a minimal flex-layout pnfs server, which is of no
     use in production for now--don't build it unless you're doing
     client testing or further server development"

* tag 'nfsd-4.8' of git://linux-nfs.org/~bfields/linux: (32 commits)
  nfsd: remove some dead code in nfsd_create_locked()
  nfsd: drop unnecessary MAY_EXEC check from create
  nfsd: clean up bad-type check in nfsd_create_locked
  nfsd: remove unnecessary positive-dentry check
  nfsd: reorganize nfsd_create
  nfsd: check d_can_lookup in fh_verify of directories
  nfsd: remove redundant zero-length check from create
  nfsd: Make creates return EEXIST instead of EACCES
  SUNRPC: Detect immediate closure of accepted sockets
  SUNRPC: accept() may return sockets that are still in SYN_RECV
  nfsd: allow nfsd to advertise multiple layout types
  nfsd: Close race between nfsd4_release_lockowner and nfsd4_lock
  nfsd/blocklayout: Make sure calculate signature/designator length aligned
  xfs: abstract block export operations from nfsd layouts
  SUNRPC: Remove unused callback xpo_adjust_wspace()
  SUNRPC: Change TCP socket space reservation
  SUNRPC: Add a server side per-connection limit
  SUNRPC: Micro optimisation for svc_data_ready
  SUNRPC: Call the default socket callbacks instead of open coding
  SUNRPC: lock the socket while detaching it
  ...

1  2 
Documentation/kernel-parameters.txt
fs/Kconfig
fs/nfsd/blocklayout.c
fs/nfsd/blocklayoutxdr.c
include/linux/nfs_xdr.h

index 1a855d0c11fa7c07d7e69f9983f478aa26c850e6,48ba6d2e670a4c3d1c2d4e5644a29a2ae673a733..eb0a0582d912fdc4dc71f7bf27571a765d10bf15
@@@ -582,9 -582,6 +582,9 @@@ bytes respectively. Such letter suffixe
  
        bootmem_debug   [KNL] Enable bootmem allocator debug messages.
  
 +      bert_disable    [ACPI]
 +                      Disable BERT OS support on buggy BIOSes.
 +
        bttv.card=      [HW,V4L] bttv (bt848 + bt878 based grabber cards)
        bttv.radio=     Most important insmod options are available as
                        kernel args too.
                        [SPARC64] tick
                        [X86-64] hpet,tsc
  
 +      clocksource.arm_arch_timer.evtstrm=
 +                      [ARM,ARM64]
 +                      Format: <bool>
 +                      Enable/disable the eventstream feature of the ARM
 +                      architected timer so that code using WFE-based polling
 +                      loops can be debugged more effectively on production
 +                      systems.
 +
        clearcpuid=BITNUM [X86]
                        Disable CPUID feature X for the kernel. See
                        arch/x86/include/asm/cpufeatures.h for the valid bit
        dhash_entries=  [KNL]
                        Set number of hash buckets for dentry cache.
  
 +      disable_1tb_segments [PPC]
 +                      Disables the use of 1TB hash page table segments. This
 +                      causes the kernel to fall back to 256MB segments which
 +                      can be useful when debugging issues that require an SLB
 +                      miss to occur.
 +
        disable=        [IPV6]
                        See Documentation/networking/ipv6.txt.
  
 +      disable_radix   [PPC]
 +                      Disable RADIX MMU mode on POWER9
 +
        disable_cpu_apicid= [X86,APIC,SMP]
                        Format: <int>
                        The number of initial APIC ID for the
                        Address Range Mirroring feature even if your box
                        doesn't support it.
  
 +      efivar_ssdt=    [EFI; X86] Name of an EFI variable that contains an SSDT
 +                      that is to be dynamically loaded by Linux. If there are
 +                      multiple variables with the same name but with different
 +                      vendor GUIDs, all of them will be loaded. See
 +                      Documentation/acpi/ssdt-overlays.txt for details.
 +
 +
        eisa_irq_edge=  [PARISC,HW]
                        See header of drivers/parisc/eisa.c.
  
        js=             [HW,JOY] Analog joystick
                        See Documentation/input/joystick.txt.
  
 -      kaslr/nokaslr   [X86]
 -                      Enable/disable kernel and module base offset ASLR
 -                      (Address Space Layout Randomization) if built into
 -                      the kernel. When CONFIG_HIBERNATION is selected,
 -                      kASLR is disabled by default. When kASLR is enabled,
 -                      hibernation will be disabled.
 +      nokaslr         [KNL]
 +                      When CONFIG_RANDOMIZE_BASE is set, this disables
 +                      kernel and module base offset ASLR (Address Space
 +                      Layout Randomization).
  
        keepinitrd      [HW,ARM]
  
                        Note that if CONFIG_MODULE_SIG_FORCE is set, that
                        is always true, so this option does nothing.
  
 +      module_blacklist=  [KNL] Do not load a comma-separated list of
 +                      modules.  Useful for debugging problem modules.
 +
        mousedev.tap_time=
                        [MOUSE] Maximum time between finger touching and
                        leaving touchpad surface for touch to be considered
                        timer: [X86] Force use of architectural NMI
                                timer mode (see also oprofile.timer
                                for generic hr timer mode)
 -                              [s390] Force legacy basic mode sampling
 -                                (report cpu_type "timer")
  
        oops=panic      Always panic on oopses. Default is to just kill the
                        process, but there is a small probability of
                resource_alignment=
                                Format:
                                [<order of align>@][<domain>:]<bus>:<slot>.<func>[; ...]
 +                              [<order of align>@]pci:<vendor>:<device>\
 +                                              [:<subvendor>:<subdevice>][; ...]
                                Specifies alignment and device to reassign
                                aligned memory resources.
                                If <order of align> is not specified,
                hpmemsize=nn[KMG]       The fixed amount of bus space which is
                                reserved for hotplug bridge's memory window.
                                Default size is 2 megabytes.
 +              hpbussize=nn    The minimum amount of additional bus numbers
 +                              reserved for buses below a hotplug bridge.
 +                              Default is 1.
                realloc=        Enable/disable reallocating PCI bridge resources
                                if allocations done by BIOS are too small to
                                accommodate resources required by all child
                compat  Treat PCIe ports as PCI-to-PCI bridges, disable the PCIe
                        ports driver.
  
 +      pcie_port_pm=   [PCIE] PCIe port power management handling:
 +              off     Disable power management of all PCIe ports
 +              force   Forcibly enable power management of all PCIe ports
 +
        pcie_pme=       [PCIE,PM] Native PCIe PME signaling options:
                nomsi   Do not use MSI for native PCIe PME signaling (this makes
                        all PCIe root ports use INTx for all services).
                        Format: <bool>  (1/Y/y=enable, 0/N/n=disable)
                        default: disabled
  
 +      printk.devkmsg={on,off,ratelimit}
 +                      Control writing to /dev/kmsg.
 +                      on - unlimited logging to /dev/kmsg from userspace
 +                      off - logging to /dev/kmsg disabled
 +                      ratelimit - ratelimit the logging
 +                      Default: ratelimit
 +
        printk.time=    Show timing data prefixed to each printk message line
                        Format: <bool>  (1/Y/y=enable, 0/N/n=disable)
  
                                present during boot.
                nocompress      Don't compress/decompress hibernation images.
                no              Disable hibernation and resume.
 +              protect_image   Turn on image protection during restoration
 +                              (that will set all pages holding image data
 +                              during restoration read-only).
  
        retain_initrd   [RAM] Keep initrd memory after extraction
  
                        using these two parameters to set the minimum and
                        maximum port values.
  
+       sunrpc.svc_rpc_per_connection_limit=
+                       [NFS,SUNRPC]
+                       Limit the number of requests that the server will
+                       process in parallel from a single connection.
+                       The default value is 0 (no limit).
        sunrpc.pool_mode=
                        [NFS]
                        Control how the NFS server code allocates CPUs to
  
        trace_event=[event-list]
                        [FTRACE] Set and start specified trace events in order
 -                      to facilitate early boot debugging.
 -                      See also Documentation/trace/events.txt
 +                      to facilitate early boot debugging. The event-list is a
 +                      comma separated list of trace events to enable. See
 +                      also Documentation/trace/events.txt
  
        trace_options=[option-list]
                        [FTRACE] Enable or disable tracer options at boot.
diff --combined fs/Kconfig
index 4524916fa200b1b4e9c8349ff94c78711595be8d,4d2f9210e748a47d64f58401cc49b3e04e7c1e0a..2bc7ad77584287870681fc940995b355322eadc2
@@@ -10,9 -10,6 +10,9 @@@ config DCACHE_WORD_ACCES
  
  if BLOCK
  
 +config FS_IOMAP
 +      bool
 +
  source "fs/ext2/Kconfig"
  source "fs/ext4/Kconfig"
  source "fs/jbd2/Kconfig"
@@@ -70,6 -67,12 +70,12 @@@ config FS_POSIX_AC
  config EXPORTFS
        tristate
  
+ config EXPORTFS_BLOCK_OPS
+       bool "Enable filesystem export operations for block IO"
+       help
+         This option enables the export operations for a filesystem to support
+         external block IO.
  config FILE_LOCKING
        bool "Enable POSIX file locking API" if EXPERT
        default y
diff --combined fs/nfsd/blocklayout.c
index ad2c05e80a836fcc49002802357f049f61852732,c98563d35822ec45c9377f8e5d9ebada76fa855d..5a17084415103a08b18cfbcb31bc80e9b422de53
@@@ -2,7 -2,6 +2,7 @@@
   * Copyright (c) 2014-2016 Christoph Hellwig.
   */
  #include <linux/exportfs.h>
 +#include <linux/iomap.h>
  #include <linux/genhd.h>
  #include <linux/slab.h>
  #include <linux/pr.h>
@@@ -163,6 -162,7 +163,7 @@@ nfsd4_block_get_device_info_simple(stru
  
  static __be32
  nfsd4_block_proc_getdeviceinfo(struct super_block *sb,
+               struct svc_rqst *rqstp,
                struct nfs4_client *clp,
                struct nfsd4_getdeviceinfo *gdp)
  {
@@@ -355,6 -355,7 +356,7 @@@ nfsd4_block_get_device_info_scsi(struc
  
  static __be32
  nfsd4_scsi_proc_getdeviceinfo(struct super_block *sb,
+               struct svc_rqst *rqstp,
                struct nfs4_client *clp,
                struct nfsd4_getdeviceinfo *gdp)
  {
diff --combined fs/nfsd/blocklayoutxdr.c
index 4ebaaf4b8d8a425d98418f09f9b445ff9615da32,d72467e5eb6e463f2cfef45b86e16cedf16bafe7..ac6f54546fdde92b060e10839f631a574fa76cf5
@@@ -3,7 -3,6 +3,7 @@@
   */
  #include <linux/sunrpc/svc.h>
  #include <linux/exportfs.h>
 +#include <linux/iomap.h>
  #include <linux/nfs4.h>
  
  #include "nfsd.h"
@@@ -44,7 -43,7 +44,7 @@@ nfsd4_block_encode_volume(struct xdr_st
  
        switch (b->type) {
        case PNFS_BLOCK_VOLUME_SIMPLE:
-               len = 4 + 4 + 8 + 4 + b->simple.sig_len;
+               len = 4 + 4 + 8 + 4 + (XDR_QUADLEN(b->simple.sig_len) << 2);
                p = xdr_reserve_space(xdr, len);
                if (!p)
                        return -ETOOSMALL;
@@@ -55,7 -54,7 +55,7 @@@
                p = xdr_encode_opaque(p, b->simple.sig, b->simple.sig_len);
                break;
        case PNFS_BLOCK_VOLUME_SCSI:
-               len = 4 + 4 + 4 + 4 + b->scsi.designator_len + 8;
+               len = 4 + 4 + 4 + 4 + (XDR_QUADLEN(b->scsi.designator_len) << 2) + 8;
                p = xdr_reserve_space(xdr, len);
                if (!p)
                        return -ETOOSMALL;
diff --combined include/linux/nfs_xdr.h
index 82b81a1c24382740366dfeea40ec11dd611372a6,e66abc2d1f88bb1dab1e9b80db98097da90c8302..5bcbbe511be663a91b1f50886e549974ca1e7af3
@@@ -1185,17 -1185,6 +1185,6 @@@ struct pnfs_ds_commit_info 
        struct pnfs_commit_bucket *buckets;
  };
  
- #define NFS4_OP_MAP_NUM_LONGS \
-       DIV_ROUND_UP(LAST_NFS4_OP, 8 * sizeof(unsigned long))
- #define NFS4_OP_MAP_NUM_WORDS \
-       (NFS4_OP_MAP_NUM_LONGS * sizeof(unsigned long) / sizeof(u32))
- struct nfs4_op_map {
-       union {
-               unsigned long longs[NFS4_OP_MAP_NUM_LONGS];
-               u32 words[NFS4_OP_MAP_NUM_WORDS];
-       } u;
- };
  struct nfs41_state_protection {
        u32 how;
        struct nfs4_op_map enforce;
@@@ -1596,8 -1585,9 +1585,8 @@@ struct nfs_rpc_ops 
        int (*have_delegation)(struct inode *, fmode_t);
        int (*return_delegation)(struct inode *);
        struct nfs_client *(*alloc_client) (const struct nfs_client_initdata *);
 -      struct nfs_client *
 -              (*init_client) (struct nfs_client *, const struct rpc_timeout *,
 -                              const char *);
 +      struct nfs_client *(*init_client) (struct nfs_client *,
 +                              const struct nfs_client_initdata *);
        void    (*free_client) (struct nfs_client *);
        struct nfs_server *(*create_server)(struct nfs_mount_info *, struct nfs_subversion *);
        struct nfs_server *(*clone_server)(struct nfs_server *, struct nfs_fh *,
This page took 0.034561 seconds and 5 git commands to generate.