1. 11 May, 2016 1 commit
    • Arnd Bergmann's avatar
      kbuild: move -Wunused-const-variable to W=1 warning level · c9c6837d
      Arnd Bergmann authored
      gcc-6 started warning by default about variables that are not
      used anywhere and that are marked 'const', generating many
      false positives in an allmodconfig build, e.g.:
      
      arch/arm/mach-davinci/board-da830-evm.c:282:20: warning: 'da830_evm_emif25_pins' defined but not used [-Wunused-const-variable=]
      arch/arm/plat-omap/dmtimer.c:958:34: warning: 'omap_timer_match' defined but not used [-Wunused-const-variable=]
      drivers/bluetooth/hci_bcm.c:625:39: warning: 'acpi_bcm_default_gpios' defined but not used [-Wunused-const-variable=]
      drivers/char/hw_random/omap-rng.c:92:18: warning: 'reg_map_omap4' defined but not used [-Wunused-const-variable=]
      drivers/devfreq/exynos/exynos5_bus.c:381:32: warning: 'exynos5_busfreq_int_pm' defined but not used [-Wunused-const-variable=]
      drivers/dma/mv_xor.c:1139:34: warning: 'mv_xor_dt_ids' defined but not used [-Wunused-const-variable=]
      
      This is similar to the existing -Wunused-but-set-variable warning
      that was added in an earlier release and that we disable by default
      now and only enable when W=1 is set, so it makes sense to do
      the same here. Once we have eliminated the majority of the
      warnings for both, we can put them back into the default list.
      
      We probably want this in backport kernels as well, to allow building
      them with gcc-6 without introducing extra warnings.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarOlof Johansson <olof@lixom.net>
      Acked-by: default avatarLee Jones <lee.jones@linaro.org>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
      c9c6837d
  2. 10 May, 2016 9 commits
    • Masahiro Yamada's avatar
      kbuild: fix if_change and friends to consider argument order · 9c8fa9bc
      Masahiro Yamada authored
      Currently, arg-check is implemented as follows:
      
        arg-check = $(strip $(filter-out $(cmd_$(1)), $(cmd_$@)) \
                            $(filter-out $(cmd_$@),   $(cmd_$(1))) )
      
      This does not care about the order of arguments that appear in
      $(cmd_$(1)) and $(cmd_$@).  So, if_changed and friends never rebuild
      the target if only the argument order is changed.  This is a problem
      when the link order is changed.
      
      Apparently,
      
        obj-y += foo.o
        obj-y += bar.o
      
      and
      
        obj-y += bar.o
        obj-y += foo.o
      
      should be distinguished because the link order determines the probe
      order of drivers.  So, built-in.o should be rebuilt when the order
      of objects is changed.
      
      This commit fixes arg-check to compare the old/current commands
      including the argument order.
      
      Of course, this change has a side effect; Kbuild will react to the
      change of compile option order.  For example, "-DFOO -DBAR" and
      "-DBAR -DFOO" should give no difference to the build result, but
      false positive should be better than false negative.
      
      I am moving space_escape to the top of Kbuild.include just for a
      matter of preference.  In practical terms, space_escape can be
      defined after arg-check because arg-check uses "=" flavor, not ":=".
      Having said that, collecting convenient variables in one place makes
      sense from the point of readability.
      
      Chaining "%%%SPACE%%%" to "_-_SPACE_-_" is also a matter of taste
      at this point.  Actually, it can be arbitrary as long as it is an
      unlikely used string.  The only problem I see in "%%%SPACE%%%" is
      that "%" is a special character in "$(patsubst ...)" context.  This
      commit just uses "$(subst ...)" for arg-check, but I am fixing it now
      in case we might want to use it in $(patsubst ...) context in the
      future.
      Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
      9c8fa9bc
    • Nicolas Pitre's avatar
      kbuild: fix adjust_autoksyms.sh for modules that need only one symbol · a7c65b97
      Nicolas Pitre authored
      When only one symbol was listed and therefore the line didn't contain
      any space to separate multiple symbols, that symbol got ignored.
      Reported-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
      a7c65b97
    • Nicolas Pitre's avatar
      kbuild: fix ksym_dep_filter when multiple EXPORT_SYMBOL() on the same line · f110e0fe
      Nicolas Pitre authored
      In kernel/cgroup.c there is:
      
          #define SUBSYS(_x)                                             \
              DEFINE_STATIC_KEY_TRUE(_x ## _cgrp_subsys_enabled_key);    \
              DEFINE_STATIC_KEY_TRUE(_x ## _cgrp_subsys_on_dfl_key);     \
              EXPORT_SYMBOL_GPL(_x ## _cgrp_subsys_enabled_key);         \
              EXPORT_SYMBOL_GPL(_x ## _cgrp_subsys_on_dfl_key);
      
      The expansion of this macro causes multiple EXPORT_SYMBOL_GPL() instances
      to appear on the same preprocessor line output, confusing the sed script
      expecting only one of them per line.  Unfortunately this can't be fixed
      nicely in the sed script as sed's regexp can't do non greedy matching.
      
      Fix this by turning any semicolon into a line break before filtering.
      Reported-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
      f110e0fe
    • Arnd Bergmann's avatar
      gcov: disable -Wmaybe-uninitialized warning · e72e2dfe
      Arnd Bergmann authored
      When gcov profiling is enabled, we see a lot of spurious warnings about
      possibly uninitialized variables being used:
      
      arch/arm/mm/dma-mapping.c: In function 'arm_coherent_iommu_map_page':
      arch/arm/mm/dma-mapping.c:1085:16: warning: 'start' may be used uninitialized in this function [-Wmaybe-uninitialized]
      drivers/clk/st/clk-flexgen.c: In function 'st_of_flexgen_setup':
      drivers/clk/st/clk-flexgen.c:323:9: warning: 'num_parents' may be used uninitialized in this function [-Wmaybe-uninitialized]
      kernel/cgroup.c: In function 'cgroup_mount':
      kernel/cgroup.c:2119:11: warning: 'root' may be used uninitialized in this function [-Wmaybe-uninitialized]
      
      All of these are false positives, so it seems better to just disable
      the warnings whenever GCOV is enabled. Most users don't enable GCOV,
      and based on a prior patch, it is now also disabled for 'allmodconfig'
      builds, so there should be no downsides of doing this.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarPeter Oberparleiter <oberpar@linux.vnet.ibm.com>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
      e72e2dfe
    • Arnd Bergmann's avatar
      gcov: disable tree-loop-im to reduce stack usage · c87bf431
      Arnd Bergmann authored
      Enabling CONFIG_GCOV_PROFILE_ALL produces us a lot of warnings like
      
      lib/lz4/lz4hc_compress.c: In function 'lz4_compresshcctx':
      lib/lz4/lz4hc_compress.c:514:1: warning: the frame size of 1504 bytes is larger than 1024 bytes [-Wframe-larger-than=]
      
      After some investigation, I found that this behavior started with gcc-4.9,
      and opened https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69702.
      A suggested workaround for it is to use the -fno-tree-loop-im
      flag that turns off one of the optimization stages in gcc, so the
      code runs a little slower but does not use excessive amounts
      of stack.
      
      We could make this conditional on the gcc version, but I could not
      find an easy way to do this in Kbuild and the benefit would be
      fairly small, given that most of the gcc version in production are
      affected now.
      
      I'm marking this for 'stable' backports because it addresses a bug
      with code generation in gcc that exists in all kernel versions
      with the affected gcc releases.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarPeter Oberparleiter <oberpar@linux.vnet.ibm.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
      c87bf431
    • Arnd Bergmann's avatar
      gcov: disable for COMPILE_TEST · cc622420
      Arnd Bergmann authored
      Enabling gcov is counterproductive to compile testing: it significantly
      increases the kernel image size, compile time, and it produces lots
      of false positive "may be used uninitialized" warnings as the result
      of missed optimizations.
      
      This is in line with how UBSAN_SANITIZE_ALL and PROFILE_ALL_BRANCHES
      work, both of which have similar problems.
      
      With an ARM allmodconfig kernel, I see the build time drop from
      283 minutes CPU time to 225 minutes, and the vmlinux size drops
      from 43MB to 26MB.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarPeter Oberparleiter <oberpar@linux.vnet.ibm.com>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
      cc622420
    • Arnd Bergmann's avatar
      Kbuild: disable 'maybe-uninitialized' warning for CONFIG_PROFILE_ALL_BRANCHES · 815eb71e
      Arnd Bergmann authored
      CONFIG_PROFILE_ALL_BRANCHES confuses gcc-5.x to the degree that it prints
      incorrect warnings about a lot of variables that it thinks can be used
      uninitialized, e.g.:
      
      i2c/busses/i2c-diolan-u2c.c: In function 'diolan_usb_xfer':
      i2c/busses/i2c-diolan-u2c.c:391:16: warning: 'byte' may be used uninitialized in this function
      iio/gyro/itg3200_core.c: In function 'itg3200_probe':
      iio/gyro/itg3200_core.c:213:6: warning: 'val' may be used uninitialized in this function
      leds/leds-lp55xx-common.c: In function 'lp55xx_update_bits':
      leds/leds-lp55xx-common.c:350:6: warning: 'tmp' may be used uninitialized in this function
      misc/bmp085.c: In function 'show_pressure':
      misc/bmp085.c:363:10: warning: 'pressure' may be used uninitialized in this function
      power/ds2782_battery.c: In function 'ds2786_get_capacity':
      power/ds2782_battery.c:214:17: warning: 'raw' may be used uninitialized in this function
      
      These are all false positives that either rob someone's time when trying
      to figure out whether they are real, or they get people to send wrong
      patches to shut up the warnings.
      
      Nobody normally wants to run a CONFIG_PROFILE_ALL_BRANCHES kernel in
      production, so disabling the whole class of warnings for this configuration
      has no serious downsides either.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: Steven Rostedt <rostedtgoodmis.org>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
      815eb71e
    • Arnd Bergmann's avatar
      Kbuild: change CC_OPTIMIZE_FOR_SIZE definition · 877417e6
      Arnd Bergmann authored
      CC_OPTIMIZE_FOR_SIZE disables the often useful -Wmaybe-unused warning,
      because that causes a ridiculous amount of false positives when combined
      with -Os.
      
      This means a lot of warnings don't show up in testing by the developers
      that should see them with an 'allmodconfig' kernel that has
      CC_OPTIMIZE_FOR_SIZE enabled, but only later in randconfig builds
      that don't.
      
      This changes the Kconfig logic around CC_OPTIMIZE_FOR_SIZE to make
      it a 'choice' statement defaulting to CC_OPTIMIZE_FOR_PERFORMANCE
      that gets added for this purpose. The allmodconfig and allyesconfig
      kernels now default to -O2 with the maybe-unused warning enabled.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
      877417e6
    • Robert Jarzmik's avatar
      kbuild: forbid kernel directory to contain spaces and colons · 51193b76
      Robert Jarzmik authored
      When the kernel path contains a space or a colon somewhere in the path
      name, the modules_install target doesn't work anymore, as the path names
      are not enclosed in double quotes. It is also supposed that and O= build
      will suffer from the same weakness as modules_install.
      
      Instead of checking and improving kbuild to resist to directories
      including these characters, error out early to prevent any build if the
      kernel's main directory contains a space.
      Signed-off-by: default avatarRobert Jarzmik <robert.jarzmik@free.fr>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
      51193b76
  3. 27 Apr, 2016 2 commits
  4. 26 Apr, 2016 2 commits
    • Nicolas Pitre's avatar
      kbuild: better abstract vmlinux sequential prerequisites · 2441e78b
      Nicolas Pitre authored
      When CONFIG_TRIM_UNUSED_KSYMS=y and CONFIG_BUILD_DOCSRC=y it is possible
      to get the following error:
      
      ERROR: "cn_del_callback" [Documentation/connector/cn_test.ko] undefined!
      ERROR: "cn_add_callback" [Documentation/connector/cn_test.ko] undefined!
      ERROR: "cn_netlink_send" [Documentation/connector/cn_test.ko] undefined!
      ../scripts/Makefile.modpost:91: recipe for target '__modpost' failed
      
      It is not sufficient to do "vmlinux-dirs += Documentation" as this also
      depends on the headers_check target, and all of this needs to be done
      before adjust_autoksyms.sh is executed.
      
      Let's sort this out by gathering those sequential prerequisites in a make
      target of their own, separate from the vmlinux target. And by doing so,
      the special autoksyms_recursive target is no longer needed.
      Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
      Acked-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Tested-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      2441e78b
    • Nicolas Ferre's avatar
      kbuild: fix call to adjust_autoksyms.sh when output directory specified · ba79d401
      Nicolas Ferre authored
      When a different output directory is specified during the build process (with
      O= or KBUILD_OUTPUT), the call to adjust_autoksyms.sh script fails with the
      following error:
      /bin/sh scripts/adjust_autoksyms.sh \
      	  "make KBUILD_MODULES=1 -f ../Makefile autoksyms_recursive"
      	  /bin/sh: scripts/adjust_autoksyms.sh: No such file or directory
      	  make[2]: *** [vmlinux] Error 127
      	  make[1]: *** [sub-make] Error 2
      	  make: *** [__sub-make] Error 2
      
      Using the absolute path with $(srctree) variable solves the problem.
      
      This is in case the CONFIG_TRIM_UNUSED_KSYMS option is specified.
      Signed-off-by: default avatarNicolas Ferre <nicolas.ferre@atmel.com>
      Fixes: 23121ca2 ("kbuild: create/adjust generated/autoksyms.h")
      Cc: Nicolas Pitre <nico@linaro.org>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: default avatarMichal Marek <mmarek@suse.com>
      ba79d401
  5. 20 Apr, 2016 9 commits
  6. 29 Mar, 2016 8 commits
    • Nicolas Pitre's avatar
      kconfig option for TRIM_UNUSED_KSYMS · dbacb0ef
      Nicolas Pitre authored
      The config option to enable it all.
      Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
      Acked-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      dbacb0ef
    • Nicolas Pitre's avatar
      kbuild: build sample modules along with the rest of the kernel · dd92478a
      Nicolas Pitre authored
      Make sample modules in parallel with the rest of the kernel rather
      than having them built from the vmlinux target. This makes the build
      slightly faster, and those modules are properly considered when
      adjust_autoksyms.sh is executed.
      Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
      dd92478a
    • Nicolas Pitre's avatar
      kbuild: create/adjust generated/autoksyms.h · 23121ca2
      Nicolas Pitre authored
      Given the list of exported symbols needed by all modules, we can create
      a header file containing preprocessor defines for each of those symbols.
      Also, when some symbols are added and/or removed from the list, we can
      update the time on the corresponding files used as build dependencies for
      those symbols. And finally, if any symbol did change state, the
      corresponding source files must be rebuilt.
      
      The insertion or removal of an EXPORT_SYMBOL() entry within a module may
      create or remove the need for another exported symbol.  This is why this
      operation has to be repeated until the list of needed exported symbols
      becomes stable. Only then the final kernel and modules link take place.
      Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
      Acked-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      23121ca2
    • Nicolas Pitre's avatar
      kbuild: add fine grained build dependencies for exported symbols · c1a95fda
      Nicolas Pitre authored
      Like with kconfig options, we now have the ability to compile in and
      out individual EXPORT_SYMBOL() declarations based on the content of
      include/generated/autoksyms.h.  However we don't want the entire
      world to be rebuilt whenever that file is touched.
      
      Let's apply the same build dependency trick used for CONFIG_* symbols
      where the time stamp of empty files whose paths matching those symbols
      is used to trigger fine grained rebuilds. In our case the key is the
      symbol name passed to EXPORT_SYMBOL().
      
      However, unlike config options, we cannot just use fixdep to parse
      the source code for EXPORT_SYMBOL(ksym) because several variants exist
      and parsing them all in a separate tool, and keeping it in synch, is
      not trivially maintainable.  Furthermore, there are variants such as
      
      	EXPORT_SYMBOL_GPL(pci_user_read_config_##size);
      
      that are instanciated via a macro for which we can't easily determine
      the actual exported symbol name(s) short of actually running the
      preprocessor on them.
      
      Storing the symbol name string in a special ELF section doesn't work
      for targets that output assembly or preprocessed source.
      
      So the best way is really to leverage the preprocessor by having it
      output actual symbol names anchored by a special sequence that can be
      easily filtered out. Then the list of symbols is simply fed to fixdep
      to be merged with the other dependencies.
      
      That implies the preprocessor is executed twice for each source file.
      A previous attempt relied on a warning pragma for each EXPORT_SYMBOL()
      instance that was filtered apart from stderr by the build system with
      a sed script during the actual compilation pass. Unfortunately the
      preprocessor/compiler diagnostic output isn't stable between versions
      and this solution, although more efficient, was deemed too fragile.
      
      Because of the lowercasing performed by fixdep, there might be name
      collisions triggering spurious rebuilds for similar symbols. But this
      shouldn't be a big issue in practice. (This is the case for CONFIG_*
      symbols and I didn't want to be different here, whatever the original
      reason for doing so.)
      
      To avoid needless build overhead, the exported symbol name gathering is
      performed only when CONFIG_TRIM_UNUSED_KSYMS is selected.
      Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
      Acked-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      c1a95fda
    • Nicolas Pitre's avatar
      kbuild: de-duplicate fixdep usage · e4aca459
      Nicolas Pitre authored
      The generation and postprocessing of automatic dependency rules is
      duplicated in rule_cc_o_c, rule_as_o_S and if_changed_dep. Since
      this is not a trivial one-liner action, it is now abstracted under
      cmd_and_fixdep to simplify things and make future changes in this area
      easier.
      
      In the rule_cc_o_c and rule_as_o_S cases that means the order of some
      commands has been altered, namely fixdep and related file manipulations
      are executed earlier, but they didn't depend on those commands that now
      execute later.
      Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
      e4aca459
    • Nicolas Pitre's avatar
      fixdep: accept extra dependencies on stdin · d8329e35
      Nicolas Pitre authored
      ... and merge them in the list of parsed dependencies.
      Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
      d8329e35
    • Nicolas Pitre's avatar
      export.h: allow for per-symbol configurable EXPORT_SYMBOL() · f2355416
      Nicolas Pitre authored
      Similar to include/generated/autoconf.h, include/generated/autoksyms.h
      will contain a list of defines for each EXPORT_SYMBOL() that we want
      active. The format is:
      
        #define __KSYM_<symbol_name> 1
      
      This list will be auto-generated with another patch.  For now we only
      include the preprocessor magic to automatically create or omit the
      corresponding struct kernel_symbol declaration.
      
      Given the content of include/generated/autoksyms.h may not be known in
      advance, an empty file is created early on to let the build proceed.
      Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
      Acked-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      f2355416
    • Nicolas Pitre's avatar
      kbuild: record needed exported symbols for modules · 9895c03d
      Nicolas Pitre authored
      Kernel modules are partially linked object files with some undefined
      symbols that are expected to be matched with EXPORT_SYMBOL() entries
      from elsewhere.
      
      Each .tmp_versions/*.mod file currently contains two line of text
      separated by a newline character. The first line has the actual module
      file name while the second line has a list of object files constituting
      that module. Those files are parsed by modpost (scripts/mod/sumversion.c),
      scripts/Makefile.modpost, scripts/Makefile.modsign, etc.  Only the
      modpost utility cares about the second line while the others retrieve
      only the first line.
      
      Therefore we can add a third line to record the list of undefined symbols
      aka required EXPORT_SYMBOL() entries for each module into that file
      without breaking anything. Like for the second line, symbols are separated
      by a blank and the list is terminated with a newline character.
      
      To avoid needless build overhead, the undefined symbols extraction is
      performed only when CONFIG_TRIM_UNUSED_KSYMS is selected.
      Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
      Acked-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      9895c03d
  7. 26 Mar, 2016 9 commits
    • Linus Torvalds's avatar
      Linux 4.6-rc1 · f55532a0
      Linus Torvalds authored
      f55532a0
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client · d5a38f6e
      Linus Torvalds authored
      Pull Ceph updates from Sage Weil:
       "There is quite a bit here, including some overdue refactoring and
        cleanup on the mon_client and osd_client code from Ilya, scattered
        writeback support for CephFS and a pile of bug fixes from Zheng, and a
        few random cleanups and fixes from others"
      
      [ I already decided not to pull this because of it having been rebased
        recently, but ended up changing my mind after all.  Next time I'll
        really hold people to it.  Oh well.   - Linus ]
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: (34 commits)
        libceph: use KMEM_CACHE macro
        ceph: use kmem_cache_zalloc
        rbd: use KMEM_CACHE macro
        ceph: use lookup request to revalidate dentry
        ceph: kill ceph_get_dentry_parent_inode()
        ceph: fix security xattr deadlock
        ceph: don't request vxattrs from MDS
        ceph: fix mounting same fs multiple times
        ceph: remove unnecessary NULL check
        ceph: avoid updating directory inode's i_size accidentally
        ceph: fix race during filling readdir cache
        libceph: use sizeof_footer() more
        ceph: kill ceph_empty_snapc
        ceph: fix a wrong comparison
        ceph: replace CURRENT_TIME by current_fs_time()
        ceph: scattered page writeback
        libceph: add helper that duplicates last extent operation
        libceph: enable large, variable-sized OSD requests
        libceph: osdc->req_mempool should be backed by a slab pool
        libceph: make r_request msg_size calculation clearer
        ...
      d5a38f6e
    • Linus Torvalds's avatar
      Merge tag 'ofs-pull-tag-1' of git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux · 698f415c
      Linus Torvalds authored
      Pull orangefs filesystem from Mike Marshall.
      
      This finally merges the long-pending orangefs filesystem, which has been
      much cleaned up with input from Al Viro over the last six months.  From
      the documentation file:
      
       "OrangeFS is an LGPL userspace scale-out parallel storage system.  It
        is ideal for large storage problems faced by HPC, BigData, Streaming
        Video, Genomics, Bioinformatics.
      
        Orangefs, originally called PVFS, was first developed in 1993 by Walt
        Ligon and Eric Blumer as a parallel file system for Parallel Virtual
        Machine (PVM) as part of a NASA grant to study the I/O patterns of
        parallel programs.
      
        Orangefs features include:
      
          - Distributes file data among multiple file servers
          - Supports simultaneous access by multiple clients
          - Stores file data and metadata on servers using local file system
            and access methods
          - Userspace implementation is easy to install and maintain
          - Direct MPI support
          - Stateless"
      
      see Documentation/filesystems/orangefs.txt for more in-depth details.
      
      * tag 'ofs-pull-tag-1' of git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux: (174 commits)
        orangefs: fix orangefs_superblock locking
        orangefs: fix do_readv_writev() handling of error halfway through
        orangefs: have ->kill_sb() evict the VFS side of things first
        orangefs: sanitize ->llseek()
        orangefs-bufmap.h: trim unused junk
        orangefs: saner calling conventions for getting a slot
        orangefs_copy_{to,from}_bufmap(): don't pass bufmap pointer
        orangefs: get rid of readdir_handle_s
        ornagefs: ensure that truncate has an up to date inode size
        orangefs: move code which sets i_link to orangefs_inode_getattr
        orangefs: remove needless wrapper around GFP_KERNEL
        orangefs: remove wrapper around mutex_lock(&inode->i_mutex)
        orangefs: refactor inode type or link_target change detection
        orangefs: use new getattr for revalidate and remove old getattr
        orangefs: use new getattr in inode getattr and permission
        orangefs: use new orangefs_inode_getattr to get size in write and llseek
        orangefs: use new orangefs_inode_getattr to create new inodes
        orangefs: rename orangefs_inode_getattr to orangefs_inode_old_getattr
        orangefs: remove inode->i_lock wrapper
        orangefs: put register_chrdev immediately before register_filesystem
        ...
      698f415c
    • Linus Torvalds's avatar
      Merge tag 'ntb-4.6' of git://github.com/jonmason/ntb · b4cec5f6
      Linus Torvalds authored
      Pull NTB bug fixes from Jon Mason:
       "NTB bug fixes for tasklet from spinning forever, link errors,
        translation window setup, NULL ptr dereference, and ntb-perf errors.
      
        Also, a modification to the driver API that makes _addr functions
        optional"
      
      * tag 'ntb-4.6' of git://github.com/jonmason/ntb:
        NTB: Remove _addr functions from ntb_hw_amd
        NTB: Make _addr functions optional in the API
        NTB: Fix incorrect clean up routine in ntb_perf
        NTB: Fix incorrect return check in ntb_perf
        ntb: fix possible NULL dereference
        ntb: add missing setup of translation window
        ntb: stop link work when we do not have memory
        ntb: stop tasklet from spinning forever during shutdown.
        ntb: perf test: fix address space confusion
      b4cec5f6
    • Linus Torvalds's avatar
      Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · 895a1067
      Linus Torvalds authored
      Pull more SCSI updates from James Bottomley:
       "The only new stuff which missed the first pull request is an update to
        the UFS driver.
      
        The rest is an assortment of bug fixes and minor tweaks which appeared
        recently (some are fixes for recent code and some are stuff spotted
        recently by the checkers or the new gcc-6 compiler [most of Arnd's
        stuff])"
      
      * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (32 commits)
        scsi_common: do not clobber fixed sense information
        scsi: ufs: select CONFIG_NLS
        scsi: fc: use get/put_unaligned64 for wwn access
        fnic: move printk()s outside of the critical code section.
        qla2xxx: avoid maybe_uninitialized warning
        megaraid_sas: add missing curly braces in ioctl handler
        lpfc: fix misleading indentation
        scsi_transport_sas: add 'scsi_target_id' sysfs attribute
        scsi_dh_alua: uninitialized variable in alua_check_vpd()
        scsi: ufs-qcom: add printouts of testbus debug registers
        scsi: ufs-qcom: enable/disable the device ref clock
        scsi: ufs-qcom: set PA_Local_TX_LCC_Enable before link startup
        scsi: ufs: add device quirk delay before putting UFS rails in LPM
        scsi: ufs: fix leakage during link off state
        scsi: ufs: tune UniPro parameters to optimize hibern8 exit time
        scsi: ufs: handle non spec compliant bkops behaviour by device
        scsi: ufs: add retry for query descriptors
        scsi: ufs: add error recovery after DL NAC error
        scsi: ufs: make error handling bit faster
        scsi: ufs: disable vccq if it's not needed by UFS device
        ...
      895a1067
    • Linus Torvalds's avatar
      f2fs/crypto: fix xts_tweak initialization · 02fc59a0
      Linus Torvalds authored
      Commit 0b81d077 ("fs crypto: move per-file encryption from f2fs
      tree to fs/crypto") moved the f2fs crypto files to fs/crypto/ and
      renamed the symbol prefixes from "f2fs_" to "fscrypt_" (and from "F2FS_"
      to just "FS" for preprocessor symbols).
      
      Because of the symbol renaming, it's a bit hard to see it as a file
      move: use
      
          git show -M30 0b81d077
      
      to lower the rename detection to just 30% similarity and make git show
      the files as renamed (the header file won't be shown as a rename even
      then - since all it contains is symbol definitions, it looks almost
      completely different).
      
      Even with the renames showing as renames, the diffs are not all that
      easy to read, since so much is just the renames.  But Eric Biggers
      noticed that it's not just all renames: the initialization of the
      xts_tweak had been broken too, using the inode number rather than the
      page offset.
      
      That's not right - it makes the xfs_tweak the same for all pages of each
      inode.  It _might_ make sense to make the xfs_tweak contain both the
      offset _and_ the inode number, but not just the inode number.
      Reported-by: default avatarEric Biggers <ebiggers3@gmail.com>
      Cc: Jaegeuk Kim <jaegeuk@kernel.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      02fc59a0
    • Allen Hubbe's avatar
      NTB: Remove _addr functions from ntb_hw_amd · 4f1b50c3
      Allen Hubbe authored
      Kernel zero day testing warned about address space confusion.  A virtual
      iomem address was used where a physical address is expected.  The
      offending functions implement an optional part of the api, so they are
      removed.  They can be added later, after testing.
      
      Fixes: a1b36958Signed-off-by: default avatarAllen Hubbe <Allen.Hubbe@emc.com>
      Acked-by: default avatarXiangliang Yu <Xiangliang.Yu@amd.com>
      Signed-off-by: default avatarJon Mason <jdmason@kudzu.us>
      4f1b50c3
    • Al Viro's avatar
      orangefs: fix orangefs_superblock locking · 45996492
      Al Viro authored
      * switch orangefs_remount() to taking ORANGEFS_SB(sb) instead of sb
      * remove from the list _before_ orangefs_unmount() - request_mutex
      in the latter will make sure that nothing observed in the loop in
      ORANGEFS_DEV_REMOUNT_ALL handling will get freed until the end
      of loop
      * on removal, keep the forward pointer and zero the back one.  That
      way we can drop and regain the spinlock in the loop body (again,
      ORANGEFS_DEV_REMOUNT_ALL one) and still be able to get to the
      rest of the list.
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarMike Marshall <hubcap@omnibond.com>
      45996492
    • Al Viro's avatar
      orangefs: fix do_readv_writev() handling of error halfway through · 6d4c1a30
      Al Viro authored
      Error should only be returned if nothing had been read/written.
      Otherwise we need to report a short read/write instead.
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarMike Marshall <hubcap@omnibond.com>
      6d4c1a30