]> Git Repo - linux.git/commitdiff
Merge branch 'for-4.9/block' of git://git.kernel.dk/linux-block
authorLinus Torvalds <[email protected]>
Fri, 7 Oct 2016 21:42:05 +0000 (14:42 -0700)
committerLinus Torvalds <[email protected]>
Fri, 7 Oct 2016 21:42:05 +0000 (14:42 -0700)
Pull block layer updates from Jens Axboe:
 "This is the main pull request for block layer changes in 4.9.

  As mentioned at the last merge window, I've changed things up and now
  do just one branch for core block layer changes, and driver changes.
  This avoids dependencies between the two branches. Outside of this
  main pull request, there are two topical branches coming as well.

  This pull request contains:

   - A set of fixes, and a conversion to blk-mq, of nbd. From Josef.

   - Set of fixes and updates for lightnvm from Matias, Simon, and Arnd.
     Followup dependency fix from Geert.

   - General fixes from Bart, Baoyou, Guoqing, and Linus W.

   - CFQ async write starvation fix from Glauber.

   - Add supprot for delayed kick of the requeue list, from Mike.

   - Pull out the scalable bitmap code from blk-mq-tag.c and make it
     generally available under the name of sbitmap. Only blk-mq-tag uses
     it for now, but the blk-mq scheduling bits will use it as well.
     From Omar.

   - bdev thaw error progagation from Pierre.

   - Improve the blk polling statistics, and allow the user to clear
     them. From Stephen.

   - Set of minor cleanups from Christoph in block/blk-mq.

   - Set of cleanups and optimizations from me for block/blk-mq.

   - Various nvme/nvmet/nvmeof fixes from the various folks"

* 'for-4.9/block' of git://git.kernel.dk/linux-block: (54 commits)
  fs/block_dev.c: return the right error in thaw_bdev()
  nvme: Pass pointers, not dma addresses, to nvme_get/set_features()
  nvme/scsi: Remove power management support
  nvmet: Make dsm number of ranges zero based
  nvmet: Use direct IO for writes
  admin-cmd: Added smart-log command support.
  nvme-fabrics: Add host_traddr options field to host infrastructure
  nvme-fabrics: revise host transport option descriptions
  nvme-fabrics: rework nvmf_get_address() for variable options
  nbd: use BLK_MQ_F_BLOCKING
  blkcg: Annotate blkg_hint correctly
  cfq: fix starvation of asynchronous writes
  blk-mq: add flag for drivers wanting blocking ->queue_rq()
  blk-mq: remove non-blocking pass in blk_mq_map_request
  blk-mq: get rid of manual run of queue with __blk_mq_run_hw_queue()
  block: export bio_free_pages to other modules
  lightnvm: propagate device_add() error code
  lightnvm: expose device geometry through sysfs
  lightnvm: control life of nvm_dev in driver
  blk-mq: register device instead of disk
  ...

1  2 
MAINTAINERS
block/blk-mq.c
drivers/lightnvm/core.c
drivers/md/dm-crypt.c
drivers/md/dm-log-writes.c
drivers/nvme/host/fabrics.c
drivers/nvme/host/fabrics.h
lib/Makefile

diff --combined MAINTAINERS
index 255655880881cd22df8f0c5ff53f76e72691d1f2,157b1ca3e19d254e0c24105d85766648e6203b1f..fb4d381a6ecf7d22f015befc2d1e44528f313580
@@@ -636,15 -636,6 +636,15 @@@ F:       drivers/tty/serial/altera_jtaguart.
  F:    include/linux/altera_uart.h
  F:    include/linux/altera_jtaguart.h
  
 +AMAZON ETHERNET DRIVERS
 +M:    Netanel Belgazal <[email protected]>
 +R:    Saeed Bishara <[email protected]>
 +R:    Zorik Machulsky <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    Documentation/networking/ena.txt
 +F:    drivers/net/ethernet/amazon/
 +
  AMD CRYPTOGRAPHIC COPROCESSOR (CCP) DRIVER
  M:    Tom Lendacky <[email protected]>
  M:    Gary Hook <[email protected]>
@@@ -807,7 -798,6 +807,7 @@@ M: Laura Abbott <[email protected]
  M:    Sumit Semwal <[email protected]>
  L:    [email protected]
  S:    Supported
 +F:    Documentation/devicetree/bindings/staging/ion/
  F:    drivers/staging/android/ion
  F:    drivers/staging/android/uapi/ion.h
  F:    drivers/staging/android/uapi/ion_test.h
@@@ -819,11 -809,11 +819,11 @@@ L:      [email protected] (moderat
  S:    Maintained
  F:    sound/aoa/
  
 -APEX EMBEDDED SYSTEMS STX104 DAC DRIVER
 +APEX EMBEDDED SYSTEMS STX104 IIO DRIVER
  M:    William Breathitt Gray <[email protected]>
  L:    [email protected]
  S:    Maintained
 -F:    drivers/iio/dac/stx104.c
 +F:    drivers/iio/adc/stx104.c
  
  APM DRIVER
  M:    Jiri Kosina <[email protected]>
@@@ -922,17 -912,15 +922,17 @@@ F:      arch/arm/include/asm/floppy.
  
  ARM PMU PROFILING AND DEBUGGING
  M:    Will Deacon <[email protected]>
 -R:    Mark Rutland <[email protected]>
 +M:    Mark Rutland <[email protected]>
  S:    Maintained
 +L:    [email protected] (moderated for non-subscribers)
  F:    arch/arm*/kernel/perf_*
  F:    arch/arm/oprofile/common.c
  F:    arch/arm*/kernel/hw_breakpoint.c
  F:    arch/arm*/include/asm/hw_breakpoint.h
  F:    arch/arm*/include/asm/perf_event.h
 -F:    drivers/perf/arm_pmu.c
 +F:    drivers/perf/*
  F:    include/linux/perf/arm_pmu.h
 +F:    Documentation/devicetree/bindings/arm/pmu.txt
  
  ARM PORT
  M:    Russell King <[email protected]>
@@@ -1134,11 -1122,6 +1134,11 @@@ F:    drivers/hwtracing/coresight/
  F:    Documentation/trace/coresight.txt
  F:    Documentation/devicetree/bindings/arm/coresight.txt
  F:    Documentation/ABI/testing/sysfs-bus-coresight-devices-*
 +F:    tools/perf/arch/arm/util/pmu.c
 +F:    tools/perf/arch/arm/util/auxtrace.c
 +F:    tools/perf/arch/arm/util/cs-etm.c
 +F:    tools/perf/arch/arm/util/cs-etm.h
 +F:    tools/perf/util/cs-etm.h
  
  ARM/CORGI MACHINE SUPPORT
  M:    Richard Purdie <[email protected]>
@@@ -1640,8 -1623,7 +1640,8 @@@ N:      rockchi
  
  ARM/SAMSUNG EXYNOS ARM ARCHITECTURES
  M:    Kukjin Kim <[email protected]>
 -M:    Krzysztof Kozlowski <[email protected]>
 +M:    Krzysztof Kozlowski <[email protected]>
 +R:    Javier Martinez Canillas <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected] (moderated for non-subscribers)
  S:    Maintained
@@@ -1661,6 -1643,7 +1661,6 @@@ F:      drivers/*/*s3c64xx
  F:    drivers/*/*s5pv210*
  F:    drivers/memory/samsung/*
  F:    drivers/soc/samsung/*
 -F:    drivers/spi/spi-s3c*
  F:    Documentation/arm/Samsung/
  F:    Documentation/devicetree/bindings/arm/samsung/
  F:    Documentation/devicetree/bindings/sram/samsung-sram.txt
@@@ -1848,7 -1831,6 +1848,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  ARM/UNIPHIER ARCHITECTURE
  M:    Masahiro Yamada <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-uniphier.git
  S:    Maintained
  F:    arch/arm/boot/dts/uniphier*
  F:    arch/arm/include/asm/hardware/cache-uniphier.h
@@@ -1856,7 -1838,6 +1856,7 @@@ F:      arch/arm/mach-uniphier
  F:    arch/arm/mm/cache-uniphier.c
  F:    arch/arm64/boot/dts/socionext/
  F:    drivers/bus/uniphier-system-bus.c
 +F:    drivers/clk/uniphier/
  F:    drivers/i2c/busses/i2c-uniphier*
  F:    drivers/pinctrl/uniphier/
  F:    drivers/tty/serial/8250/8250_uniphier.c
@@@ -1993,13 -1974,6 +1993,13 @@@ S:    Maintaine
  F:    drivers/media/i2c/as3645a.c
  F:    include/media/i2c/as3645a.h
  
 +ASAHI KASEI AK8974 DRIVER
 +M:    Linus Walleij <[email protected]>
 +L:    [email protected]
 +W:    http://www.akm.com/
 +S:    Supported
 +F:    drivers/iio/magnetometer/ak8974.c
 +
  ASC7621 HARDWARE MONITOR DRIVER
  M:    George Joseph <[email protected]>
  L:    [email protected]
@@@ -2138,6 -2112,11 +2138,6 @@@ M:     Ludovic Desroches <ludovic.desroches
  S:    Maintained
  F:    drivers/mmc/host/atmel-mci.c
  
 -ATMEL AT91 / AT32 SERIAL DRIVER
 -M:    Nicolas Ferre <[email protected]>
 -S:    Supported
 -F:    drivers/tty/serial/atmel_serial.c
 -
  ATMEL AT91 SAMA5D2-Compatible Shutdown Controller
  M:    Nicolas Ferre <[email protected]>
  S:    Supported
@@@ -2472,6 -2451,7 +2472,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    block/
  F:    kernel/trace/blktrace.c
+ F:    lib/sbitmap.c
  
  BLOCK2MTD DRIVER
  M:    Joern Engel <[email protected]>
@@@ -2505,7 -2485,7 +2506,7 @@@ F:      include/net/bluetooth
  BONDING DRIVER
  M:    Jay Vosburgh <[email protected]>
  M:    Veaceslav Falico <[email protected]>
 -M:    Andy Gospodarek <[email protected]>
 +M:    Andy Gospodarek <[email protected]>
  L:    [email protected]
  W:    http://sourceforge.net/projects/bonding/
  S:    Supported
@@@ -2520,7 -2500,7 +2521,7 @@@ S:      Supporte
  F:    kernel/bpf/
  
  BROADCOM B44 10/100 ETHERNET DRIVER
 -M:    Gary Zambrano <zambrano@broadcom.com>
 +M:    Michael Chan <michael.chan@broadcom.com>
  L:    [email protected]
  S:    Supported
  F:    drivers/net/ethernet/broadcom/b44.*
@@@ -2908,14 -2888,6 +2909,14 @@@ S:    Maintaine
  F:    drivers/iio/light/cm*
  F:    Documentation/devicetree/bindings/i2c/trivial-devices.txt
  
 +CAVIUM I2C DRIVER
 +M:    Jan Glauber <[email protected]>
 +M:    David Daney <[email protected]>
 +W:    http://www.cavium.com
 +S:    Supported
 +F:    drivers/i2c/busses/i2c-octeon*
 +F:    drivers/i2c/busses/i2c-thunderx*
 +
  CAVIUM LIQUIDIO NETWORK DRIVER
  M:     Derek Chickles <[email protected]>
  M:     Satanand Burla <[email protected]>
@@@ -3163,7 -3135,7 +3164,7 @@@ L:      [email protected] (moderated fo
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git misc
  W:    http://coccinelle.lip6.fr/
  S:    Supported
 -F:    Documentation/coccinelle.txt
 +F:    Documentation/dev-tools/coccinelle.rst
  F:    scripts/coccinelle/
  F:    scripts/coccicheck
  
@@@ -3189,7 -3161,6 +3190,7 @@@ COMMON CLK FRAMEWOR
  M:    Michael Turquette <[email protected]>
  M:    Stephen Boyd <[email protected]>
  L:    [email protected]
 +Q:    http://patchwork.kernel.org/project/linux-clk/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git
  S:    Maintained
  F:    Documentation/devicetree/bindings/clock/
@@@ -3277,7 -3248,7 +3278,7 @@@ F:      kernel/cpuset.
  CONTROL GROUP - MEMORY RESOURCE CONTROLLER (MEMCG)
  M:    Johannes Weiner <[email protected]>
  M:    Michal Hocko <[email protected]>
 -M:    Vladimir Davydov <vdavydov@virtuozzo.com>
 +M:    Vladimir Davydov <vdavydov.dev@gmail.com>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -3298,7 -3269,7 +3299,7 @@@ S:      Maintaine
  F:    drivers/net/wan/cosa*
  
  CPMAC ETHERNET DRIVER
 -M:    Florian Fainelli <f[email protected]>
 +M:    Florian Fainelli <f[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/net/ethernet/ti/cpmac.c
@@@ -3310,7 -3281,6 +3311,7 @@@ L:      [email protected]
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git
  T:    git git://git.linaro.org/people/vireshk/linux.git (For ARM Updates)
 +F:    Documentation/cpu-freq/
  F:    drivers/cpufreq/
  F:    include/linux/cpufreq.h
  
@@@ -3792,8 -3762,8 +3793,8 @@@ F:      drivers/leds/leds-da90??.
  F:    drivers/mfd/da903x.c
  F:    drivers/mfd/da90??-*.c
  F:    drivers/mfd/da91??-*.c
 -F:    drivers/power/da9052-battery.c
 -F:    drivers/power/da91??-*.c
 +F:    drivers/power/supply/da9052-battery.c
 +F:    drivers/power/supply/da91??-*.c
  F:    drivers/regulator/da903x.c
  F:    drivers/regulator/da9???-regulator.[ch]
  F:    drivers/rtc/rtc-da90??.c
@@@ -3809,12 -3779,6 +3810,12 @@@ F:    include/linux/regulator/da9211.
  F:    include/sound/da[79]*.h
  F:    sound/soc/codecs/da[79]*.[ch]
  
 +DIAMOND SYSTEMS GPIO-MM GPIO DRIVER
 +M:    William Breathitt Gray <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/gpio/gpio-gpio-mm.c
 +
  DIGI NEO AND CLASSIC PCI PRODUCTS
  M:    Lidza Louina <[email protected]>
  M:    Mark Hounschell <[email protected]>
@@@ -4440,6 -4404,7 +4441,6 @@@ F:      Documentation/filesystems/ecryptfs.t
  F:    fs/ecryptfs/
  
  EDAC-CORE
 -M:    Doug Thompson <[email protected]>
  M:    Borislav Petkov <[email protected]>
  M:    Mauro Carvalho Chehab <[email protected]>
  M:    Mauro Carvalho Chehab <[email protected]>
@@@ -4452,12 -4417,14 +4453,12 @@@ F:   drivers/edac
  F:    include/linux/edac.h
  
  EDAC-AMD64
 -M:    Doug Thompson <[email protected]>
  M:    Borislav Petkov <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/edac/amd64_edac*
  
  EDAC-CALXEDA
 -M:    Doug Thompson <[email protected]>
  M:    Robert Richter <[email protected]>
  L:    [email protected]
  S:    Maintained
@@@ -4473,21 -4440,17 +4474,21 @@@ F:   drivers/edac/octeon_edac
  
  EDAC-E752X
  M:    Mark Gross <[email protected]>
 -M:    Doug Thompson <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/edac/e752x_edac.c
  
  EDAC-E7XXX
 -M:    Doug Thompson <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/edac/e7xxx_edac.c
  
 +EDAC-FSL_DDR
 +M:    York Sun <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/edac/fsl_ddr_edac.*
 +
  EDAC-GHES
  M:    Mauro Carvalho Chehab <[email protected]>
  M:    Mauro Carvalho Chehab <[email protected]>
@@@ -4502,11 -4465,13 +4503,11 @@@ S:   Maintaine
  F:    drivers/edac/i82443bxgx_edac.c
  
  EDAC-I3000
 -M:    Jason Uhlenkott <[email protected]>
  L:    [email protected]
 -S:    Maintained
 +S:    Orphan
  F:    drivers/edac/i3000_edac.c
  
  EDAC-I5000
 -M:    Doug Thompson <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/edac/i5000_edac.c
@@@ -4618,13 -4583,6 +4619,13 @@@ M:    Peter Jones <[email protected]
  S:    Maintained
  F:    drivers/video/fbdev/efifb.c
  
 +EFI TEST DRIVER
 +L:    [email protected]
 +M:    Ivan Hu <[email protected]>
 +M:    Matt Fleming <[email protected]>
 +S:    Maintained
 +F:    drivers/firmware/efi/test/
 +
  EFS FILESYSTEM
  W:    http://aeschi.ch.eu.org/efs/
  S:    Orphan
@@@ -4892,7 -4850,6 +4893,7 @@@ F:      tools/firewire
  
  FIRMWARE LOADER (request_firmware)
  M:    Ming Lei <[email protected]>
 +M:    Luis R. Rodriguez <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/firmware_class/
@@@ -5113,9 -5070,10 +5114,9 @@@ F:     include/linux/fscrypto.
  
  F2FS FILE SYSTEM
  M:    Jaegeuk Kim <[email protected]>
 -M:    Changman Lee <[email protected]>
 -R:    Chao Yu <[email protected]>
 +M:    Chao Yu <[email protected]>
  L:    [email protected]
 -W:    http://en.wikipedia.org/wiki/F2FS
 +W:    https://f2fs.wiki.kernel.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git
  S:    Maintained
  F:    Documentation/filesystems/f2fs.txt
@@@ -5177,7 -5135,7 +5178,7 @@@ GCOV BASED KERNEL PROFILIN
  M:    Peter Oberparleiter <[email protected]>
  S:    Maintained
  F:    kernel/gcov/
 -F:    Documentation/gcov.txt
 +F:    Documentation/dev-tools/gcov.rst
  
  GDT SCSI DISK ARRAY CONTROLLER DRIVER
  M:    Achim Leubner <[email protected]>
  S:    Maintained
  F:    drivers/input/touchscreen/goodix.c
  
 +GPIO MOCKUP DRIVER
 +M:    Bamvor Jian Zhang <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/gpio/gpio-mockup.c
 +F:    tools/testing/selftests/gpio/
 +
  GPIO SUBSYSTEM
  M:    Linus Walleij <[email protected]>
  M:    Alexandre Courbot <[email protected]>
  S:    Maintained
  F:    drivers/net/ethernet/aeroflex/
  
 +GREYBUS SUBSYSTEM
 +M:    Johan Hovold <[email protected]>
 +M:    Alex Elder <[email protected]>
 +M:    Greg Kroah-Hartman <[email protected]>
 +S:    Maintained
 +F:    drivers/staging/greybus/
 +
 +GREYBUS AUDIO PROTOCOLS DRIVERS
 +M:    Vaibhav Agarwal <[email protected]>
 +M:    Mark Greer <[email protected]>
 +S:    Maintained
 +F:    drivers/staging/greybus/audio_apbridgea.c
 +F:    drivers/staging/greybus/audio_apbridgea.h
 +F:    drivers/staging/greybus/audio_codec.c
 +F:    drivers/staging/greybus/audio_codec.h
 +F:    drivers/staging/greybus/audio_gb.c
 +F:    drivers/staging/greybus/audio_manager.c
 +F:    drivers/staging/greybus/audio_manager.h
 +F:    drivers/staging/greybus/audio_manager_module.c
 +F:    drivers/staging/greybus/audio_manager_private.h
 +F:    drivers/staging/greybus/audio_manager_sysfs.c
 +F:    drivers/staging/greybus/audio_module.c
 +F:    drivers/staging/greybus/audio_topology.c
 +
 +GREYBUS PROTOCOLS DRIVERS
 +M:    Rui Miguel Silva <[email protected]>
 +S:    Maintained
 +F:    drivers/staging/greybus/sdio.c
 +F:    drivers/staging/greybus/light.c
 +F:    drivers/staging/greybus/gpio.c
 +F:    drivers/staging/greybus/power_supply.c
 +F:    drivers/staging/greybus/spi.c
 +F:    drivers/staging/greybus/spilib.c
 +
 +GREYBUS PROTOCOLS DRIVERS
 +M:    Bryan O'Donoghue <[email protected]>
 +S:    Maintained
 +F:    drivers/staging/greybus/loopback.c
 +F:    drivers/staging/greybus/timesync.c
 +F:    drivers/staging/greybus/timesync_platform.c
 +
 +GREYBUS PROTOCOLS DRIVERS
 +M:    Viresh Kumar <[email protected]>
 +S:    Maintained
 +F:    drivers/staging/greybus/authentication.c
 +F:    drivers/staging/greybus/bootrom.c
 +F:    drivers/staging/greybus/firmware.h
 +F:    drivers/staging/greybus/fw-core.c
 +F:    drivers/staging/greybus/fw-download.c
 +F:    drivers/staging/greybus/fw-managament.c
 +F:    drivers/staging/greybus/greybus_authentication.h
 +F:    drivers/staging/greybus/greybus_firmware.h
 +F:    drivers/staging/greybus/hid.c
 +F:    drivers/staging/greybus/i2c.c
 +F:    drivers/staging/greybus/spi.c
 +F:    drivers/staging/greybus/spilib.c
 +F:    drivers/staging/greybus/spilib.h
 +
 +GREYBUS PROTOCOLS DRIVERS
 +M:    David Lin <[email protected]>
 +S:    Maintained
 +F:    drivers/staging/greybus/uart.c
 +F:    drivers/staging/greybus/log.c
 +
 +GREYBUS PLATFORM DRIVERS
 +M:    Vaibhav Hiremath <[email protected]>
 +S:    Maintained
 +F:    drivers/staging/greybus/arche-platform.c
 +F:    drivers/staging/greybus/arche-apb-ctrl.c
 +F:    drivers/staging/greybus/arche_platform.h
 +
  GSPCA FINEPIX SUBDRIVER
  M:    Frank Zago <[email protected]>
  L:    [email protected]
@@@ -5703,9 -5583,10 +5704,9 @@@ F:     Documentation/devicetree/bindings/sc
  
  HOST AP DRIVER
  M:    Jouni Malinen <[email protected]>
 -L:    [email protected] (subscribers-only)
  L:    [email protected]
 -W:    http://hostap.epitest.fi/
 -S:    Maintained
 +W:    http://w1.fi/hostap-driver.html
 +S:    Obsolete
  F:    drivers/net/wireless/intersil/hostap/
  
  HP COMPAQ TC1100 TABLET WMI EXTRAS DRIVER
@@@ -5742,7 -5623,7 +5743,7 @@@ M:      Sebastian Reichel <[email protected]
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi.git
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-bus-hsi
 -F:    Documentation/hsi.txt
 +F:    Documentation/device-drivers/serial-interfaces.rst
  F:    drivers/hsi/
  F:    include/linux/hsi/
  F:    include/uapi/linux/hsi/
@@@ -5796,8 -5677,6 +5797,8 @@@ S:      Maintaine
  F:    Documentation/i2c/i2c-topology
  F:    Documentation/i2c/muxes/
  F:    Documentation/devicetree/bindings/i2c/i2c-mux*
 +F:    Documentation/devicetree/bindings/i2c/i2c-arb*
 +F:    Documentation/devicetree/bindings/i2c/i2c-gate*
  F:    drivers/i2c/i2c-mux.c
  F:    drivers/i2c/muxes/
  F:    include/linux/i2c-mux.h
@@@ -6215,13 -6094,6 +6216,13 @@@ T:    git git://git.kernel.org/pub/scm/lin
  S:    Supported
  F:    drivers/idle/intel_idle.c
  
 +INTEL INTEGRATED SENSOR HUB DRIVER
 +M:    Srinivas Pandruvada <[email protected]>
 +M:    Jiri Kosina <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/hid/intel-ish-hid/
 +
  INTEL PSTATE DRIVER
  M:    Srinivas Pandruvada <[email protected]>
  M:    Len Brown <[email protected]>
@@@ -6230,7 -6102,7 +6231,7 @@@ S:      Supporte
  F:    drivers/cpufreq/intel_pstate.c
  
  INTEL FRAMEBUFFER DRIVER (excluding 810 and 815)
 -M:    Maik Broemme <mbroemme@plusserver.de>
 +M:    Maik Broemme <mbroemme@libmpq.org>
  L:    [email protected]
  S:    Maintained
  F:    Documentation/fb/intelfb.txt
@@@ -6732,7 -6604,7 +6733,7 @@@ L:      [email protected]
  S:    Maintained
  F:    arch/*/include/asm/kasan.h
  F:    arch/*/mm/kasan_init*
 -F:    Documentation/kasan.txt
 +F:    Documentation/dev-tools/kasan.rst
  F:    include/linux/kasan*.h
  F:    lib/test_kasan.c
  F:    mm/kasan/
@@@ -6948,7 -6820,7 +6949,7 @@@ KMEMCHEC
  M:    Vegard Nossum <[email protected]>
  M:    Pekka Enberg <[email protected]>
  S:    Maintained
 -F:    Documentation/kmemcheck.txt
 +F:    Documentation/dev-tools/kmemcheck.rst
  F:    arch/x86/include/asm/kmemcheck.h
  F:    arch/x86/mm/kmemcheck/
  F:    include/linux/kmemcheck.h
@@@ -6957,7 -6829,7 +6958,7 @@@ F:      mm/kmemcheck.
  KMEMLEAK
  M:    Catalin Marinas <[email protected]>
  S:    Maintained
 -F:    Documentation/kmemleak.txt
 +F:    Documentation/dev-tools/kmemleak.rst
  F:    include/linux/kmemleak.h
  F:    mm/kmemleak.c
  F:    mm/kmemleak-test.c
@@@ -7570,8 -7442,9 +7571,8 @@@ F:      Documentation/hwmon/max2075
  F:    drivers/hwmon/max20751.c
  
  MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER
 -M:    "Hans J. Koch" <[email protected]>
  L:    [email protected]
 -S:    Maintained
 +S:    Orphan
  F:    Documentation/hwmon/max6650
  F:    drivers/hwmon/max6650.c
  
@@@ -7592,12 -7465,11 +7593,12 @@@ F:   Documentation/devicetree/bindings/so
  F:    sound/soc/codecs/max9860.*
  
  MAXIM MUIC CHARGER DRIVERS FOR EXYNOS BASED BOARDS
 -M:    Krzysztof Kozlowski <[email protected]>
 +M:    Krzysztof Kozlowski <[email protected]>
 +M:    Bartlomiej Zolnierkiewicz <[email protected]>
  L:    [email protected]
  S:    Supported
 -F:    drivers/power/max14577_charger.c
 -F:    drivers/power/max77693_charger.c
 +F:    drivers/power/supply/max14577_charger.c
 +F:    drivers/power/supply/max77693_charger.c
  
  MAXIM MAX77802 MULTIFUNCTION PMIC DEVICE DRIVERS
  M:    Javier Martinez Canillas <[email protected]>
@@@ -7609,8 -7481,7 +7610,8 @@@ F:      include/dt-bindings/*/*max77802.
  
  MAXIM PMIC AND MUIC DRIVERS FOR EXYNOS BASED BOARDS
  M:    Chanwoo Choi <[email protected]>
 -M:    Krzysztof Kozlowski <[email protected]>
 +M:    Krzysztof Kozlowski <[email protected]>
 +M:    Bartlomiej Zolnierkiewicz <[email protected]>
  L:    [email protected]
  S:    Supported
  F:    drivers/*/max14577*.c
  S:    Maintained
  F:    drivers/iio/potentiometer/mcp4531.c
  
 +MEASUREMENT COMPUTING CIO-DAC IIO DRIVER
 +M:    William Breathitt Gray <[email protected]>
 +L:    [email protected]
 +S:    Maintained
 +F:    drivers/iio/dac/cio-dac.c
 +
  MEDIA DRIVERS FOR RENESAS - FCP
  M:    Laurent Pinchart <[email protected]>
  L:    [email protected]
@@@ -7800,19 -7665,6 +7801,19 @@@ W:    http://www.mellanox.co
  Q:    http://patchwork.ozlabs.org/project/netdev/list/
  F:    drivers/net/ethernet/mellanox/mlxsw/
  
 +MELLANOX MLXCPLD LED DRIVER
 +M:    Vadim Pasternak <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/leds/leds-mlxcpld.c
 +F:    Documentation/leds/leds-mlxcpld.txt
 +
 +MELLANOX PLATFORM DRIVER
 +M:      Vadim Pasternak <[email protected]>
 +L:      [email protected]
 +S:      Supported
 +F:      arch/x86/platform/mellanox/mlx-platform.c
 +
  SOFT-ROCE DRIVER (rxe)
  M:    Moni Shoua <[email protected]>
  L:    [email protected]
@@@ -7898,12 -7750,6 +7899,12 @@@ T:    git git://git.monstr.eu/linux-2.6-mi
  S:    Supported
  F:    arch/microblaze/
  
 +MICROCHIP / ATMEL AT91 / AT32 SERIAL DRIVER
 +M:    Richard Genoud <[email protected]>
 +S:    Maintained
 +F:    drivers/tty/serial/atmel_serial.c
 +F:    include/linux/atmel_serial.h
 +
  MICROSOFT SURFACE PRO 3 BUTTON DRIVER
  M:    Chen Yu <[email protected]>
  L:    [email protected]
@@@ -7990,18 -7836,6 +7991,18 @@@ W:    http://www.melexis.co
  S:    Supported
  F:    drivers/iio/temperature/mlx90614.c
  
 +MICROSEMI SMART ARRAY SMARTPQI DRIVER (smartpqi)
 +M:    Don Brace <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/scsi/smartpqi/smartpqi*.[ch]
 +F:    drivers/scsi/smartpqi/Kconfig
 +F:    drivers/scsi/smartpqi/Makefile
 +F:    include/linux/cciss*.h
 +F:    include/uapi/linux/cciss*.h
 +F:    Documentation/scsi/smartpqi.txt
 +
  MN88472 MEDIA DRIVER
  M:    Antti Palosaari <[email protected]>
  L:    [email protected]
@@@ -8127,7 -7961,6 +8128,7 @@@ MULTIFUNCTION DEVICES (MFD
  M:    Lee Jones <[email protected]>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git
  S:    Supported
 +F:    Documentation/devicetree/bindings/mfd/
  F:    drivers/mfd/
  F:    include/linux/mfd/
  
@@@ -8214,16 -8047,20 +8215,16 @@@ M:   Michael Schmitz <[email protected]
  L:    [email protected]
  S:    Maintained
  F:    Documentation/scsi/g_NCR5380.txt
 -F:    Documentation/scsi/dtc3x80.txt
  F:    drivers/scsi/NCR5380.*
  F:    drivers/scsi/arm/cumana_1.c
  F:    drivers/scsi/arm/oak.c
  F:    drivers/scsi/atari_scsi.*
  F:    drivers/scsi/dmx3191d.c
 -F:    drivers/scsi/dtc.*
  F:    drivers/scsi/g_NCR5380.*
  F:    drivers/scsi/g_NCR5380_mmio.c
  F:    drivers/scsi/mac_scsi.*
 -F:    drivers/scsi/pas16.*
  F:    drivers/scsi/sun3_scsi.*
  F:    drivers/scsi/sun3_scsi_vme.c
 -F:    drivers/scsi/t128.*
  
  NCR DUAL 700 SCSI DRIVER (MICROCHANNEL)
  M:    "James E.J. Bottomley" <[email protected]>
@@@ -8321,15 -8158,6 +8322,15 @@@ S:    Maintaine
  W:    https://fedorahosted.org/dropwatch/
  F:    net/core/drop_monitor.c
  
 +NETWORKING [DSA]
 +M:    Andrew Lunn <[email protected]>
 +M:    Vivien Didelot <[email protected]>
 +M:    Florian Fainelli <[email protected]>
 +S:    Maintained
 +F:    net/dsa/
 +F:    include/net/dsa.h
 +F:    drivers/net/dsa/
 +
  NETWORKING [GENERAL]
  M:    "David S. Miller" <[email protected]>
  L:    [email protected]
@@@ -8512,11 -8340,11 +8513,11 @@@ R:   Pali Rohár <[email protected]
  F:    include/linux/power/bq2415x_charger.h
  F:    include/linux/power/bq27xxx_battery.h
  F:    include/linux/power/isp1704_charger.h
 -F:    drivers/power/bq2415x_charger.c
 -F:    drivers/power/bq27xxx_battery.c
 -F:    drivers/power/bq27xxx_battery_i2c.c
 -F:    drivers/power/isp1704_charger.c
 -F:    drivers/power/rx51_battery.c
 +F:    drivers/power/supply/bq2415x_charger.c
 +F:    drivers/power/supply/bq27xxx_battery.c
 +F:    drivers/power/supply/bq27xxx_battery_i2c.c
 +F:    drivers/power/supply/isp1704_charger.c
 +F:    drivers/power/supply/rx51_battery.c
  
  NTB DRIVER CORE
  M:    Jon Mason <[email protected]>
@@@ -8905,7 -8733,7 +8906,7 @@@ F:      drivers/oprofile
  F:    include/linux/oprofile.h
  
  ORACLE CLUSTER FILESYSTEM 2 (OCFS2)
 -M:    Mark Fasheh <mfasheh@suse.com>
 +M:    Mark Fasheh <mfasheh@versity.com>
  M:    Joel Becker <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  W:    http://ocfs2.wiki.kernel.org
@@@ -9017,7 -8845,6 +9018,7 @@@ S:      Supporte
  F:    Documentation/virtual/paravirt_ops.txt
  F:    arch/*/kernel/paravirt*
  F:    arch/*/include/asm/paravirt.h
 +F:    include/linux/hypervisor.h
  
  PARIDE DRIVERS FOR PARALLEL PORT IDE DEVICES
  M:    Tim Waugh <[email protected]>
@@@ -9273,15 -9100,6 +9274,15 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/pci/hisilicon-pcie.txt
  F:    drivers/pci/host/pcie-hisi.c
  
 +PCIE DRIVER FOR ROCKCHIP
 +M:    Shawn Lin <[email protected]>
 +M:    Wenrui Li <[email protected]>
 +L:    [email protected]
 +L:    [email protected]
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/pci/rockchip-pcie.txt
 +F:    drivers/pci/host/pcie-rockchip.c
 +
  PCIE DRIVER FOR QUALCOMM MSM
  M:     Stanimir Varbanov <[email protected]>
  L:     [email protected]
@@@ -9429,7 -9247,7 +9430,7 @@@ F:      drivers/pinctrl/sh-pfc
  
  PIN CONTROLLER - SAMSUNG
  M:    Tomasz Figa <[email protected]>
 -M:    Krzysztof Kozlowski <k[email protected]>
 +M:    Krzysztof Kozlowski <k[email protected]>
  M:    Sylwester Nawrocki <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  L:    [email protected] (moderated for non-subscribers)
@@@ -9525,12 -9343,16 +9526,12 @@@ F:   drivers/powercap
  
  POWER SUPPLY CLASS/SUBSYSTEM and DRIVERS
  M:    Sebastian Reichel <[email protected]>
 -M:    Dmitry Eremin-Solenikov <[email protected]>
 -M:    David Woodhouse <[email protected]>
  L:    [email protected]
 -T:    git git://git.infradead.org/battery-2.6.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.git
  S:    Maintained
 -F:    Documentation/devicetree/bindings/power/
 -F:    Documentation/devicetree/bindings/power_supply/
 +F:    Documentation/devicetree/bindings/power/supply/
  F:    include/linux/power_supply.h
 -F:    drivers/power/
 -X:    drivers/power/avs/
 +F:    drivers/power/supply/
  
  POWER STATE COORDINATION INTERFACE (PSCI)
  M:    Mark Rutland <[email protected]>
@@@ -9866,12 -9688,6 +9867,12 @@@ T:    git git://git.kernel.org/pub/scm/lin
  S:    Supported
  F:    drivers/net/wireless/ath/ath10k/
  
 +QUALCOMM EMAC GIGABIT ETHERNET DRIVER
 +M:    Timur Tabi <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/net/ethernet/qualcomm/emac/
 +
  QUALCOMM HEXAGON ARCHITECTURE
  M:    Richard Kuo <[email protected]>
  L:    [email protected]
@@@ -10092,12 -9908,6 +10093,12 @@@ F:  drivers/rpmsg
  F:    Documentation/rpmsg.txt
  F:    include/linux/rpmsg.h
  
 +RENESAS CLOCK DRIVERS
 +M:    Geert Uytterhoeven <[email protected]>
 +L:    [email protected]
 +S:    Supported
 +F:    drivers/clk/renesas/
 +
  RENESAS ETHERNET DRIVERS
  R:    Sergei Shtylyov <[email protected]>
  L:    [email protected]
@@@ -10133,7 -9943,6 +10134,7 @@@ F:    net/rfkill
  
  RHASHTABLE
  M:    Thomas Graf <[email protected]>
 +M:    Herbert Xu <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    lib/rhashtable.c
@@@ -10277,8 -10086,8 +10278,8 @@@ S:   Supporte
  F:    drivers/s390/cio/
  
  S390 DASD DRIVER
 -M:    Stefan Weinhuber <wein@de.ibm.com>
 -M:    Stefan Haberland <stefan.haberland@de.ibm.com>
 +M:    Stefan Haberland <[email protected].ibm.com>
 +M:    Jan Hoeppner <[email protected].ibm.com>
  L:    [email protected]
  W:    http://www.ibm.com/developerworks/linux/linux390/
  S:    Supported
@@@ -10371,7 -10180,7 +10372,7 @@@ S:   Maintaine
  F:    drivers/platform/x86/samsung-laptop.c
  
  SAMSUNG AUDIO (ASoC) DRIVERS
 -M:    Krzysztof Kozlowski <k[email protected]>
 +M:    Krzysztof Kozlowski <k[email protected]>
  M:    Sangbeom Kim <[email protected]>
  M:    Sylwester Nawrocki <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
@@@ -10386,8 -10195,7 +10387,8 @@@ F:   drivers/video/fbdev/s3c-fb.
  
  SAMSUNG MULTIFUNCTION PMIC DEVICE DRIVERS
  M:    Sangbeom Kim <[email protected]>
 -M:    Krzysztof Kozlowski <[email protected]>
 +M:    Krzysztof Kozlowski <[email protected]>
 +M:    Bartlomiej Zolnierkiewicz <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Supported
@@@ -10442,23 -10250,9 +10443,23 @@@ F: drivers/nfc/s3fwrn
  SAMSUNG SOC CLOCK DRIVERS
  M:    Sylwester Nawrocki <[email protected]>
  M:    Tomasz Figa <[email protected]>
 +M:    Chanwoo Choi <[email protected]>
  S:    Supported
  L:    [email protected] (moderated for non-subscribers)
  F:    drivers/clk/samsung/
 +F:    include/dt-bindings/clock/exynos*.h
 +F:    Documentation/devicetree/bindings/clock/exynos*.txt
 +
 +SAMSUNG SPI DRIVERS
 +M:    Kukjin Kim <[email protected]>
 +M:    Krzysztof Kozlowski <[email protected]>
 +M:    Andi Shyti <[email protected]>
 +L:    [email protected]
 +L:    [email protected] (moderated for non-subscribers)
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/spi/spi-samsung.txt
 +F:    drivers/spi/spi-s3c*
 +F:    include/linux/platform_data/spi-s3c64xx.h
  
  SAMSUNG SXGBE DRIVERS
  M:    Byungho An <[email protected]>
@@@ -10545,8 -10339,8 +10546,8 @@@ F:   drivers/thunderbolt
  TI BQ27XXX POWER SUPPLY DRIVER
  R:    Andrew F. Davis <[email protected]>
  F:    include/linux/power/bq27xxx_battery.h
 -F:    drivers/power/bq27xxx_battery.c
 -F:    drivers/power/bq27xxx_battery_i2c.c
 +F:    drivers/power/supply/bq27xxx_battery.c
 +F:    drivers/power/supply/bq27xxx_battery_i2c.c
  
  TIMEKEEPING, CLOCKSOURCE CORE, NTP, ALARMTIMER
  M:    John Stultz <[email protected]>
@@@ -10774,12 -10568,12 +10775,12 @@@ S:        Maintaine
  F:    drivers/misc/phantom.c
  F:    include/uapi/linux/phantom.h
  
 -SERVER ENGINES 10Gbps iSCSI - BladeEngine 2 DRIVER
 -M:    Jayamohan Kallickal <jayamohan.kallickal@avagotech.com>
 -M:    Ketan Mukadam <ketan.mukadam@avagotech.com>
 -M:    John Soni Jose <sony.john@avagotech.com>
 +Emulex 10Gbps iSCSI - OneConnect DRIVER
 +M:    Subbu Seetharaman <subbu.seetharaman@broadcom.com>
 +M:    Ketan Mukadam <ketan.mukadam@broadcom.com>
 +M:    Jitendra Bhivare <jitendra.bhivare@broadcom.com>
  L:    [email protected]
 -W:    http://www.avagotech.com
 +W:    http://www.broadcom.com
  S:    Supported
  F:    drivers/scsi/be2iscsi/
  
@@@ -11306,7 -11100,6 +11307,7 @@@ F:   Documentation/spi
  F:    drivers/spi/
  F:    include/linux/spi/
  F:    include/uapi/linux/spi/
 +F:    tools/spi/
  
  SPIDERNET NETWORK DRIVER for CELL
  M:    Ishizaki Kou <[email protected]>
@@@ -11377,7 -11170,6 +11378,7 @@@ F:   drivers/staging/media/lirc
  STAGING - LUSTRE PARALLEL FILESYSTEM
  M:    Oleg Drokin <[email protected]>
  M:    Andreas Dilger <[email protected]>
 +M:    James Simmons <[email protected]>
  L:    [email protected] (moderated for non-subscribers)
  W:    http://wiki.lustre.org/
  S:    Maintained
@@@ -11404,6 -11196,13 +11405,6 @@@ M:  Florian Schilhabel <florian.c.schilh
  S:    Odd Fixes
  F:    drivers/staging/rtl8712/
  
 -STAGING - REALTEK RTL8723U WIRELESS DRIVER
 -M:    Larry Finger <[email protected]>
 -M:    Jes Sorensen <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    drivers/staging/rtl8723au/
 -
  STAGING - SILICON MOTION SM750 FRAME BUFFER DRIVER
  M:    Sudip Mukherjee <[email protected]>
  M:    Teddy Wang <[email protected]>
@@@ -11434,8 -11233,12 +11435,8 @@@ S:  Odd Fixe
  F:    drivers/staging/vt665?/
  
  STAGING - WILC1000 WIFI DRIVER
 -M:    Johnny Kim <[email protected]>
 -M:    Austin Shin <[email protected]>
 -M:    Chris Park <[email protected]>
 -M:    Tony Cho <[email protected]>
 -M:    Glen Lee <[email protected]>
 -M:    Leo Kim <[email protected]>
 +M:    Aditya Shankar <[email protected]>
 +M:    Ganesh Krishna <[email protected]>
  L:    [email protected]
  S:    Supported
  F:    drivers/staging/wilc1000/
@@@ -11543,14 -11346,6 +11544,14 @@@ T: git git://git.kernel.org/pub/scm/lin
  S:    Supported
  F:    drivers/mfd/syscon.c
  
 +SYSTEM RESET/SHUTDOWN DRIVERS
 +M:    Sebastian Reichel <[email protected]>
 +L:    [email protected]
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.git
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/power/reset/
 +F:    drivers/power/reset/
 +
  SYSV FILESYSTEM
  M:    Christoph Hellwig <[email protected]>
  S:    Maintained
@@@ -11811,7 -11606,7 +11812,7 @@@ F:   Documentation/devicetree/bindings/th
  THERMAL/CPU_COOLING
  M:    Amit Daniel Kachhap <[email protected]>
  M:    Viresh Kumar <[email protected]>
 -M:    Javi Merino <javi.merino@arm.com>
 +M:    Javi Merino <javi.merino@kernel.org>
  L:    [email protected]
  S:    Supported
  F:    Documentation/thermal/cpu-cooling-api.txt
@@@ -11899,7 -11694,7 +11900,7 @@@ F:   include/linux/platform_data/lp855x.
  TI LP8727 CHARGER DRIVER
  M:    Milo Kim <[email protected]>
  S:    Maintained
 -F:    drivers/power/lp8727_charger.c
 +F:    drivers/power/supply/lp8727_charger.c
  F:    include/linux/platform_data/lp8727.h
  
  TI LP8788 MFD DRIVER
@@@ -11908,7 -11703,7 +11909,7 @@@ S:   Maintaine
  F:    drivers/iio/adc/lp8788_adc.c
  F:    drivers/leds/leds-lp8788.c
  F:    drivers/mfd/lp8788*.c
 -F:    drivers/power/lp8788-charger.c
 +F:    drivers/power/supply/lp8788-charger.c
  F:    drivers/regulator/lp8788-*.c
  F:    include/linux/mfd/lp8788*.h
  
@@@ -12177,6 -11972,12 +12178,6 @@@ S:  Maintaine
  F:    drivers/tc/
  F:    include/linux/tc.h
  
 -U14-34F SCSI DRIVER
 -M:    Dario Ballabio <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    drivers/scsi/u14-34f.c
 -
  UBI FILE SYSTEM (UBIFS)
  M:    Richard Weinberger <[email protected]>
  M:    Artem Bityutskiy <[email protected]>
@@@ -12372,7 -12173,7 +12373,7 @@@ S:   Maintaine
  F:    drivers/net/usb/lan78xx.*
  
  USB MASS STORAGE DRIVER
 -M:    Matthew Dharm <[email protected]>
 +M:    Alan Stern <[email protected]>
  L:    [email protected]
  L:    [email protected]
  S:    Maintained
@@@ -12456,7 -12257,6 +12457,7 @@@ F:   drivers/net/usb/rtl8150.
  USB SERIAL SUBSYSTEM
  M:    Johan Hovold <[email protected]>
  L:    [email protected]
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial.git
  S:    Maintained
  F:    Documentation/usb/usb-serial.txt
  F:    drivers/usb/serial/
@@@ -12470,7 -12270,6 +12471,7 @@@ F:   drivers/net/usb/smsc75xx.
  
  USB SMSC95XX ETHERNET DRIVER
  M:    Steve Glendinning <[email protected]>
 +M:    Microchip Linux Driver Support <[email protected]>
  L:    [email protected]
  S:    Maintained
  F:    drivers/net/usb/smsc95xx.*
@@@ -12577,6 -12376,7 +12578,6 @@@ F:   fs/hostfs
  F:    fs/hppfs/
  
  USERSPACE I/O (UIO)
 -M:    "Hans J. Koch" <[email protected]>
  M:    Greg Kroah-Hartman <[email protected]>
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
@@@ -12758,7 -12558,7 +12759,7 @@@ F:   include/linux/if_*vlan.
  F:    net/8021q/
  
  VLYNQ BUS
 -M:    Florian Fainelli <f[email protected]>
 +M:    Florian Fainelli <f[email protected]>
  L:    [email protected] (subscribers-only)
  S:    Maintained
  F:    drivers/vlynq/vlynq.c
@@@ -12904,6 -12704,12 +12905,6 @@@ F:  drivers/watchdog
  F:    include/linux/watchdog.h
  F:    include/uapi/linux/watchdog.h
  
 -WD7000 SCSI DRIVER
 -M:    Miroslav Zagorac <[email protected]>
 -L:    [email protected]
 -S:    Maintained
 -F:    drivers/scsi/wd7000.c
 -
  WIIMOTE HID DRIVER
  M:    David Herrmann <[email protected]>
  L:    [email protected]
@@@ -12973,7 -12779,7 +12974,7 @@@ F:   drivers/input/touchscreen/wm97*.
  F:    drivers/mfd/arizona*
  F:    drivers/mfd/wm*.c
  F:    drivers/mfd/cs47l24*
 -F:    drivers/power/wm83*.c
 +F:    drivers/power/supply/wm83*.c
  F:    drivers/rtc/rtc-wm83*.c
  F:    drivers/regulator/wm8*.c
  F:    drivers/video/backlight/wm83*_bl.c
@@@ -13125,10 -12931,11 +13126,10 @@@ F:        arch/x86/xen/*swiotlb
  F:    drivers/xen/*swiotlb*
  
  XFS FILESYSTEM
 -P:    Silicon Graphics Inc
  M:    Dave Chinner <[email protected]>
 -M:    [email protected]
 -L:    [email protected]
 -W:    http://oss.sgi.com/projects/xfs
 +M:    [email protected]
 +L:    [email protected]
 +W:    http://xfs.org/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs.git
  S:    Supported
  F:    Documentation/filesystems/xfs.txt
diff --combined block/blk-mq.c
index c207fa9870ebcaaed6bfb02efa70b5f7333954f8,e9ebe9864cc45043105b1c6e34593c7de9261024..dc5f47f6093166f09d9c875aae79db2031e41acf
@@@ -22,6 -22,7 +22,7 @@@
  #include <linux/sched/sysctl.h>
  #include <linux/delay.h>
  #include <linux/crash_dump.h>
+ #include <linux/prefetch.h>
  
  #include <trace/events/block.h>
  
  static DEFINE_MUTEX(all_q_mutex);
  static LIST_HEAD(all_q_list);
  
- static void __blk_mq_run_hw_queue(struct blk_mq_hw_ctx *hctx);
  /*
   * Check if any of the ctx's have pending work in this hardware queue
   */
  static bool blk_mq_hctx_has_pending(struct blk_mq_hw_ctx *hctx)
  {
-       unsigned int i;
-       for (i = 0; i < hctx->ctx_map.size; i++)
-               if (hctx->ctx_map.map[i].word)
-                       return true;
-       return false;
- }
- static inline struct blk_align_bitmap *get_bm(struct blk_mq_hw_ctx *hctx,
-                                             struct blk_mq_ctx *ctx)
- {
-       return &hctx->ctx_map.map[ctx->index_hw / hctx->ctx_map.bits_per_word];
+       return sbitmap_any_bit_set(&hctx->ctx_map);
  }
  
- #define CTX_TO_BIT(hctx, ctx) \
-       ((ctx)->index_hw & ((hctx)->ctx_map.bits_per_word - 1))
  /*
   * Mark this ctx as having pending work in this hardware queue
   */
  static void blk_mq_hctx_mark_pending(struct blk_mq_hw_ctx *hctx,
                                     struct blk_mq_ctx *ctx)
  {
-       struct blk_align_bitmap *bm = get_bm(hctx, ctx);
-       if (!test_bit(CTX_TO_BIT(hctx, ctx), &bm->word))
-               set_bit(CTX_TO_BIT(hctx, ctx), &bm->word);
+       if (!sbitmap_test_bit(&hctx->ctx_map, ctx->index_hw))
+               sbitmap_set_bit(&hctx->ctx_map, ctx->index_hw);
  }
  
  static void blk_mq_hctx_clear_pending(struct blk_mq_hw_ctx *hctx,
                                      struct blk_mq_ctx *ctx)
  {
-       struct blk_align_bitmap *bm = get_bm(hctx, ctx);
-       clear_bit(CTX_TO_BIT(hctx, ctx), &bm->word);
+       sbitmap_clear_bit(&hctx->ctx_map, ctx->index_hw);
  }
  
  void blk_mq_freeze_queue_start(struct request_queue *q)
@@@ -246,19 -226,9 +226,9 @@@ struct request *blk_mq_alloc_request(st
        ctx = blk_mq_get_ctx(q);
        hctx = q->mq_ops->map_queue(q, ctx->cpu);
        blk_mq_set_alloc_data(&alloc_data, q, flags, ctx, hctx);
        rq = __blk_mq_alloc_request(&alloc_data, rw, 0);
-       if (!rq && !(flags & BLK_MQ_REQ_NOWAIT)) {
-               __blk_mq_run_hw_queue(hctx);
-               blk_mq_put_ctx(ctx);
-               ctx = blk_mq_get_ctx(q);
-               hctx = q->mq_ops->map_queue(q, ctx->cpu);
-               blk_mq_set_alloc_data(&alloc_data, q, flags, ctx, hctx);
-               rq =  __blk_mq_alloc_request(&alloc_data, rw, 0);
-               ctx = alloc_data.ctx;
-       }
        blk_mq_put_ctx(ctx);
        if (!rq) {
                blk_queue_exit(q);
                return ERR_PTR(-EWOULDBLOCK);
@@@ -296,29 -266,17 +266,29 @@@ struct request *blk_mq_alloc_request_hc
        if (ret)
                return ERR_PTR(ret);
  
 +      /*
 +       * Check if the hardware context is actually mapped to anything.
 +       * If not tell the caller that it should skip this queue.
 +       */
        hctx = q->queue_hw_ctx[hctx_idx];
 +      if (!blk_mq_hw_queue_mapped(hctx)) {
 +              ret = -EXDEV;
 +              goto out_queue_exit;
 +      }
        ctx = __blk_mq_get_ctx(q, cpumask_first(hctx->cpumask));
  
        blk_mq_set_alloc_data(&alloc_data, q, flags, ctx, hctx);
        rq = __blk_mq_alloc_request(&alloc_data, rw, 0);
        if (!rq) {
 -              blk_queue_exit(q);
 -              return ERR_PTR(-EWOULDBLOCK);
 +              ret = -EWOULDBLOCK;
 +              goto out_queue_exit;
        }
  
        return rq;
 +
 +out_queue_exit:
 +      blk_queue_exit(q);
 +      return ERR_PTR(ret);
  }
  EXPORT_SYMBOL_GPL(blk_mq_alloc_request_hctx);
  
@@@ -333,7 -291,7 +303,7 @@@ static void __blk_mq_free_request(struc
        rq->cmd_flags = 0;
  
        clear_bit(REQ_ATOM_STARTED, &rq->atomic_flags);
-       blk_mq_put_tag(hctx, tag, &ctx->last_tag);
+       blk_mq_put_tag(hctx, ctx, tag);
        blk_queue_exit(q);
  }
  
@@@ -513,7 -471,7 +483,7 @@@ EXPORT_SYMBOL(blk_mq_requeue_request)
  static void blk_mq_requeue_work(struct work_struct *work)
  {
        struct request_queue *q =
-               container_of(work, struct request_queue, requeue_work);
+               container_of(work, struct request_queue, requeue_work.work);
        LIST_HEAD(rq_list);
        struct request *rq, *next;
        unsigned long flags;
@@@ -568,16 -526,24 +538,24 @@@ EXPORT_SYMBOL(blk_mq_add_to_requeue_lis
  
  void blk_mq_cancel_requeue_work(struct request_queue *q)
  {
-       cancel_work_sync(&q->requeue_work);
+       cancel_delayed_work_sync(&q->requeue_work);
  }
  EXPORT_SYMBOL_GPL(blk_mq_cancel_requeue_work);
  
  void blk_mq_kick_requeue_list(struct request_queue *q)
  {
-       kblockd_schedule_work(&q->requeue_work);
+       kblockd_schedule_delayed_work(&q->requeue_work, 0);
  }
  EXPORT_SYMBOL(blk_mq_kick_requeue_list);
  
+ void blk_mq_delay_kick_requeue_list(struct request_queue *q,
+                                   unsigned long msecs)
+ {
+       kblockd_schedule_delayed_work(&q->requeue_work,
+                                     msecs_to_jiffies(msecs));
+ }
+ EXPORT_SYMBOL(blk_mq_delay_kick_requeue_list);
  void blk_mq_abort_requeue_list(struct request_queue *q)
  {
        unsigned long flags;
@@@ -600,8 -566,10 +578,10 @@@ EXPORT_SYMBOL(blk_mq_abort_requeue_list
  
  struct request *blk_mq_tag_to_rq(struct blk_mq_tags *tags, unsigned int tag)
  {
-       if (tag < tags->nr_tags)
+       if (tag < tags->nr_tags) {
+               prefetch(tags->rqs[tag]);
                return tags->rqs[tag];
+       }
  
        return NULL;
  }
@@@ -756,38 -724,44 +736,44 @@@ static bool blk_mq_attempt_merge(struc
        return false;
  }
  
+ struct flush_busy_ctx_data {
+       struct blk_mq_hw_ctx *hctx;
+       struct list_head *list;
+ };
+ static bool flush_busy_ctx(struct sbitmap *sb, unsigned int bitnr, void *data)
+ {
+       struct flush_busy_ctx_data *flush_data = data;
+       struct blk_mq_hw_ctx *hctx = flush_data->hctx;
+       struct blk_mq_ctx *ctx = hctx->ctxs[bitnr];
+       sbitmap_clear_bit(sb, bitnr);
+       spin_lock(&ctx->lock);
+       list_splice_tail_init(&ctx->rq_list, flush_data->list);
+       spin_unlock(&ctx->lock);
+       return true;
+ }
  /*
   * Process software queues that have been marked busy, splicing them
   * to the for-dispatch
   */
  static void flush_busy_ctxs(struct blk_mq_hw_ctx *hctx, struct list_head *list)
  {
-       struct blk_mq_ctx *ctx;
-       int i;
-       for (i = 0; i < hctx->ctx_map.size; i++) {
-               struct blk_align_bitmap *bm = &hctx->ctx_map.map[i];
-               unsigned int off, bit;
-               if (!bm->word)
-                       continue;
+       struct flush_busy_ctx_data data = {
+               .hctx = hctx,
+               .list = list,
+       };
  
-               bit = 0;
-               off = i * hctx->ctx_map.bits_per_word;
-               do {
-                       bit = find_next_bit(&bm->word, bm->depth, bit);
-                       if (bit >= bm->depth)
-                               break;
+       sbitmap_for_each_set(&hctx->ctx_map, flush_busy_ctx, &data);
+ }
  
-                       ctx = hctx->ctxs[bit + off];
-                       clear_bit(bit, &bm->word);
-                       spin_lock(&ctx->lock);
-                       list_splice_tail_init(&ctx->rq_list, list);
-                       spin_unlock(&ctx->lock);
+ static inline unsigned int queued_to_index(unsigned int queued)
+ {
+       if (!queued)
+               return 0;
  
-                       bit++;
-               } while (1);
-       }
+       return min(BLK_MQ_MAX_DISPATCH_ORDER - 1, ilog2(queued) + 1);
  }
  
  /*
@@@ -878,10 -852,7 +864,7 @@@ static void __blk_mq_run_hw_queue(struc
                        dptr = &driver_list;
        }
  
-       if (!queued)
-               hctx->dispatched[0]++;
-       else if (queued < (1 << (BLK_MQ_MAX_DISPATCH_ORDER - 1)))
-               hctx->dispatched[ilog2(queued) + 1]++;
+       hctx->dispatched[queued_to_index(queued)]++;
  
        /*
         * Any items that need requeuing? Stuff them into hctx->dispatch,
@@@ -937,7 -908,7 +920,7 @@@ void blk_mq_run_hw_queue(struct blk_mq_
            !blk_mq_hw_queue_mapped(hctx)))
                return;
  
-       if (!async) {
+       if (!async && !(hctx->flags & BLK_MQ_F_BLOCKING)) {
                int cpu = get_cpu();
                if (cpumask_test_cpu(cpu, hctx->cpumask)) {
                        __blk_mq_run_hw_queue(hctx);
                put_cpu();
        }
  
-       kblockd_schedule_delayed_work_on(blk_mq_hctx_next_cpu(hctx),
-                       &hctx->run_work, 0);
+       kblockd_schedule_work_on(blk_mq_hctx_next_cpu(hctx), &hctx->run_work);
  }
  
  void blk_mq_run_hw_queues(struct request_queue *q, bool async)
@@@ -970,7 -940,7 +952,7 @@@ EXPORT_SYMBOL(blk_mq_run_hw_queues)
  
  void blk_mq_stop_hw_queue(struct blk_mq_hw_ctx *hctx)
  {
-       cancel_delayed_work(&hctx->run_work);
+       cancel_work(&hctx->run_work);
        cancel_delayed_work(&hctx->delay_work);
        set_bit(BLK_MQ_S_STOPPED, &hctx->state);
  }
@@@ -1023,7 -993,7 +1005,7 @@@ static void blk_mq_run_work_fn(struct w
  {
        struct blk_mq_hw_ctx *hctx;
  
-       hctx = container_of(work, struct blk_mq_hw_ctx, run_work.work);
+       hctx = container_of(work, struct blk_mq_hw_ctx, run_work);
  
        __blk_mq_run_hw_queue(hctx);
  }
@@@ -1240,20 -1210,8 +1222,8 @@@ static struct request *blk_mq_map_reque
                op_flags |= REQ_SYNC;
  
        trace_block_getrq(q, bio, op);
-       blk_mq_set_alloc_data(&alloc_data, q, BLK_MQ_REQ_NOWAIT, ctx, hctx);
+       blk_mq_set_alloc_data(&alloc_data, q, 0, ctx, hctx);
        rq = __blk_mq_alloc_request(&alloc_data, op, op_flags);
-       if (unlikely(!rq)) {
-               __blk_mq_run_hw_queue(hctx);
-               blk_mq_put_ctx(ctx);
-               trace_block_sleeprq(q, bio, op);
-               ctx = blk_mq_get_ctx(q);
-               hctx = q->mq_ops->map_queue(q, ctx->cpu);
-               blk_mq_set_alloc_data(&alloc_data, q, 0, ctx, hctx);
-               rq = __blk_mq_alloc_request(&alloc_data, op, op_flags);
-               ctx = alloc_data.ctx;
-               hctx = alloc_data.hctx;
-       }
  
        hctx->queued++;
        data->hctx = hctx;
@@@ -1606,32 -1564,6 +1576,6 @@@ fail
        return NULL;
  }
  
- static void blk_mq_free_bitmap(struct blk_mq_ctxmap *bitmap)
- {
-       kfree(bitmap->map);
- }
- static int blk_mq_alloc_bitmap(struct blk_mq_ctxmap *bitmap, int node)
- {
-       unsigned int bpw = 8, total, num_maps, i;
-       bitmap->bits_per_word = bpw;
-       num_maps = ALIGN(nr_cpu_ids, bpw) / bpw;
-       bitmap->map = kzalloc_node(num_maps * sizeof(struct blk_align_bitmap),
-                                       GFP_KERNEL, node);
-       if (!bitmap->map)
-               return -ENOMEM;
-       total = nr_cpu_ids;
-       for (i = 0; i < num_maps; i++) {
-               bitmap->map[i].depth = min(total, bitmap->bits_per_word);
-               total -= bitmap->map[i].depth;
-       }
-       return 0;
- }
  /*
   * 'cpu' is going away. splice any existing rq_list entries from this
   * software queue to the hw queue dispatch list, and ensure that it
@@@ -1697,7 -1629,7 +1641,7 @@@ static void blk_mq_exit_hctx(struct req
  
        blk_mq_unregister_cpu_notifier(&hctx->cpu_notifier);
        blk_free_flush_queue(hctx->fq);
-       blk_mq_free_bitmap(&hctx->ctx_map);
+       sbitmap_free(&hctx->ctx_map);
  }
  
  static void blk_mq_exit_hw_queues(struct request_queue *q,
@@@ -1734,7 -1666,7 +1678,7 @@@ static int blk_mq_init_hctx(struct requ
        if (node == NUMA_NO_NODE)
                node = hctx->numa_node = set->numa_node;
  
-       INIT_DELAYED_WORK(&hctx->run_work, blk_mq_run_work_fn);
+       INIT_WORK(&hctx->run_work, blk_mq_run_work_fn);
        INIT_DELAYED_WORK(&hctx->delay_work, blk_mq_delay_work_fn);
        spin_lock_init(&hctx->lock);
        INIT_LIST_HEAD(&hctx->dispatch);
        if (!hctx->ctxs)
                goto unregister_cpu_notifier;
  
-       if (blk_mq_alloc_bitmap(&hctx->ctx_map, node))
+       if (sbitmap_init_node(&hctx->ctx_map, nr_cpu_ids, ilog2(8), GFP_KERNEL,
+                             node))
                goto free_ctxs;
  
        hctx->nr_ctx = 0;
        if (set->ops->exit_hctx)
                set->ops->exit_hctx(hctx, hctx_idx);
   free_bitmap:
-       blk_mq_free_bitmap(&hctx->ctx_map);
+       sbitmap_free(&hctx->ctx_map);
   free_ctxs:
        kfree(hctx->ctxs);
   unregister_cpu_notifier:
@@@ -1860,8 -1793,6 +1805,6 @@@ static void blk_mq_map_swqueue(struct r
        mutex_unlock(&q->sysfs_lock);
  
        queue_for_each_hw_ctx(q, hctx, i) {
-               struct blk_mq_ctxmap *map = &hctx->ctx_map;
                /*
                 * If no software queues are mapped to this hardware queue,
                 * disable it and free the request entries.
                 * This is more accurate and more efficient than looping
                 * over all possibly mapped software queues.
                 */
-               map->size = DIV_ROUND_UP(hctx->nr_ctx, map->bits_per_word);
+               sbitmap_resize(&hctx->ctx_map, hctx->nr_ctx);
  
                /*
                 * Initialize batch roundrobin counts
@@@ -2094,7 -2025,7 +2037,7 @@@ struct request_queue *blk_mq_init_alloc
  
        q->sg_reserved_size = INT_MAX;
  
-       INIT_WORK(&q->requeue_work, blk_mq_requeue_work);
+       INIT_DELAYED_WORK(&q->requeue_work, blk_mq_requeue_work);
        INIT_LIST_HEAD(&q->requeue_list);
        spin_lock_init(&q->requeue_lock);
  
diff --combined drivers/lightnvm/core.c
index c784ddcd4405a6a0c384eb9275915ff6e34784b2,a2393e1ef82ed97c7498c25f2cbf111731949f2b..1cac0f8bc0dc85739d3a7e6c80186dd6e8ce8327
@@@ -27,6 -27,8 +27,8 @@@
  #include <linux/lightnvm.h>
  #include <linux/sched/sysctl.h>
  
+ #include "lightnvm.h"
  static LIST_HEAD(nvm_tgt_types);
  static DECLARE_RWSEM(nvm_tgtt_lock);
  static LIST_HEAD(nvm_mgrs);
@@@ -581,6 -583,8 +583,8 @@@ static int nvm_core_init(struct nvm_de
        mutex_init(&dev->mlock);
        spin_lock_init(&dev->lock);
  
+       blk_queue_logical_block_size(dev->q, dev->sec_size);
        return 0;
  err_fmtype:
        kfree(dev->lun_map);
@@@ -596,15 -600,19 +600,19 @@@ static void nvm_free_mgr(struct nvm_de
        dev->mt = NULL;
  }
  
static void nvm_free(struct nvm_dev *dev)
+ void nvm_free(struct nvm_dev *dev)
  {
        if (!dev)
                return;
  
        nvm_free_mgr(dev);
  
+       if (dev->dma_pool)
+               dev->ops->destroy_dma_pool(dev->dma_pool);
        kfree(dev->lptbl);
        kfree(dev->lun_map);
+       kfree(dev);
  }
  
  static int nvm_init(struct nvm_dev *dev)
@@@ -651,30 -659,19 +659,19 @@@ err
  
  static void nvm_exit(struct nvm_dev *dev)
  {
-       if (dev->dma_pool)
-               dev->ops->destroy_dma_pool(dev->dma_pool);
-       nvm_free(dev);
+       nvm_sysfs_unregister_dev(dev);
+ }
  
-       pr_info("nvm: successfully unloaded\n");
+ struct nvm_dev *nvm_alloc_dev(int node)
+ {
+       return kzalloc_node(sizeof(struct nvm_dev), GFP_KERNEL, node);
  }
+ EXPORT_SYMBOL(nvm_alloc_dev);
  
- int nvm_register(struct request_queue *q, char *disk_name,
-                                                       struct nvm_dev_ops *ops)
+ int nvm_register(struct nvm_dev *dev)
  {
-       struct nvm_dev *dev;
        int ret;
  
-       if (!ops->identity)
-               return -EINVAL;
-       dev = kzalloc(sizeof(struct nvm_dev), GFP_KERNEL);
-       if (!dev)
-               return -ENOMEM;
-       dev->q = q;
-       dev->ops = ops;
-       strncpy(dev->name, disk_name, DISK_NAME_LEN);
        ret = nvm_init(dev);
        if (ret)
                goto err_init;
                }
        }
  
+       ret = nvm_sysfs_register_dev(dev);
+       if (ret)
+               goto err_ppalist;
        if (dev->identity.cap & NVM_ID_DCAP_BBLKMGMT) {
                ret = nvm_get_sysblock(dev, &dev->sb);
                if (!ret)
        up_write(&nvm_lock);
  
        return 0;
+ err_ppalist:
+       dev->ops->destroy_dma_pool(dev->dma_pool);
  err_init:
        kfree(dev->lun_map);
-       kfree(dev);
        return ret;
  }
  EXPORT_SYMBOL(nvm_register);
  
- void nvm_unregister(char *disk_name)
+ void nvm_unregister(struct nvm_dev *dev)
  {
-       struct nvm_dev *dev;
        down_write(&nvm_lock);
-       dev = nvm_find_nvm_dev(disk_name);
-       if (!dev) {
-               pr_err("nvm: could not find device %s to unregister\n",
-                                                               disk_name);
-               up_write(&nvm_lock);
-               return;
-       }
        list_del(&dev->devices);
        up_write(&nvm_lock);
  
        nvm_exit(dev);
-       kfree(dev);
  }
  EXPORT_SYMBOL(nvm_unregister);
  
@@@ -1171,10 -1162,27 +1162,10 @@@ static struct miscdevice _nvm_misc = 
        .nodename       = "lightnvm/control",
        .fops           = &_ctl_fops,
  };
 +module_misc_device(_nvm_misc);
  
  MODULE_ALIAS_MISCDEV(MISC_DYNAMIC_MINOR);
  
 -static int __init nvm_mod_init(void)
 -{
 -      int ret;
 -
 -      ret = misc_register(&_nvm_misc);
 -      if (ret)
 -              pr_err("nvm: misc_register failed for control device");
 -
 -      return ret;
 -}
 -
 -static void __exit nvm_mod_exit(void)
 -{
 -      misc_deregister(&_nvm_misc);
 -}
 -
  MODULE_AUTHOR("Matias Bjorling <[email protected]>");
  MODULE_LICENSE("GPL v2");
  MODULE_VERSION("0.1");
 -module_init(nvm_mod_init);
 -module_exit(nvm_mod_exit);
diff --combined drivers/md/dm-crypt.c
index 874295757caa443a16c6d66723148df91e7c459e,9ba0f0724d28fea0821b871dd62de5ec65868b7f..0448e7e35c8c0af89a244943ca1fdd44fed34760
@@@ -1136,7 -1136,7 +1136,7 @@@ static void clone_init(struct dm_crypt_
        clone->bi_private = io;
        clone->bi_end_io  = crypt_endio;
        clone->bi_bdev    = cc->dev->bdev;
-       bio_set_op_attrs(clone, bio_op(io->base_bio), io->base_bio->bi_opf);
+       bio_set_op_attrs(clone, bio_op(io->base_bio), bio_flags(io->base_bio));
  }
  
  static int kcryptd_io_read(struct dm_crypt_io *io, gfp_t gfp)
@@@ -1453,7 -1453,7 +1453,7 @@@ static int crypt_alloc_tfms(struct cryp
        unsigned i;
        int err;
  
 -      cc->tfms = kmalloc(cc->tfms_count * sizeof(struct crypto_skcipher *),
 +      cc->tfms = kzalloc(cc->tfms_count * sizeof(struct crypto_skcipher *),
                           GFP_KERNEL);
        if (!cc->tfms)
                return -ENOMEM;
@@@ -1924,13 -1924,6 +1924,13 @@@ static int crypt_map(struct dm_target *
                return DM_MAPIO_REMAPPED;
        }
  
 +      /*
 +       * Check if bio is too large, split as needed.
 +       */
 +      if (unlikely(bio->bi_iter.bi_size > (BIO_MAX_PAGES << PAGE_SHIFT)) &&
 +          bio_data_dir(bio) == WRITE)
 +              dm_accept_partial_bio(bio, ((BIO_MAX_PAGES << PAGE_SHIFT) >> SECTOR_SHIFT));
 +
        io = dm_per_bio_data(bio, cc->per_bio_data_size);
        crypt_io_init(io, cc, bio, dm_target_offset(ti, bio->bi_iter.bi_sector));
        io->ctx.req = (struct skcipher_request *)(io + 1);
index 49e4d8d4558fb29bc170ccdf9ce07fe56a16a127,b52404159ccf96fd6ef6de0891909eba68c93f94..4dfe38655a49c495837b36e7984c28c60ef56100
@@@ -149,8 -149,6 +149,6 @@@ static void put_io_block(struct log_wri
  static void log_end_io(struct bio *bio)
  {
        struct log_writes_c *lc = bio->bi_private;
-       struct bio_vec *bvec;
-       int i;
  
        if (bio->bi_error) {
                unsigned long flags;
                spin_unlock_irqrestore(&lc->blocks_lock, flags);
        }
  
-       bio_for_each_segment_all(bvec, bio, i)
-               __free_page(bvec->bv_page);
+       bio_free_pages(bio);
        put_io_block(lc);
        bio_put(bio);
  }
@@@ -259,12 -255,12 +255,12 @@@ static int log_one_block(struct log_wri
                goto out;
        sector++;
  
 -      bio = bio_alloc(GFP_KERNEL, block->vec_cnt);
 +      atomic_inc(&lc->io_blocks);
 +      bio = bio_alloc(GFP_KERNEL, min(block->vec_cnt, BIO_MAX_PAGES));
        if (!bio) {
                DMERR("Couldn't alloc log bio");
                goto error;
        }
 -      atomic_inc(&lc->io_blocks);
        bio->bi_iter.bi_size = 0;
        bio->bi_iter.bi_sector = sector;
        bio->bi_bdev = lc->logdev->bdev;
                if (ret != block->vecs[i].bv_len) {
                        atomic_inc(&lc->io_blocks);
                        submit_bio(bio);
 -                      bio = bio_alloc(GFP_KERNEL, block->vec_cnt - i);
 +                      bio = bio_alloc(GFP_KERNEL, min(block->vec_cnt - i, BIO_MAX_PAGES));
                        if (!bio) {
                                DMERR("Couldn't alloc log bio");
                                goto error;
@@@ -459,9 -455,9 +455,9 @@@ static int log_writes_ctr(struct dm_tar
                goto bad;
        }
  
 -      ret = -EINVAL;
        lc->log_kthread = kthread_run(log_writes_kthread, lc, "log-write");
 -      if (!lc->log_kthread) {
 +      if (IS_ERR(lc->log_kthread)) {
 +              ret = PTR_ERR(lc->log_kthread);
                ti->error = "Couldn't alloc kthread";
                dm_put_device(ti, lc->dev);
                dm_put_device(ti, lc->logdev);
index 4eff4917446617f448262846ee6860b36e7f4340,1c07b76cbdeb8edb32d7c2cf72a19b367464f302..5a3f008d348094c53ce2c3a8d7e5cdc270c646d0
@@@ -47,10 -47,8 +47,10 @@@ static struct nvmf_host *nvmf_host_add(
  
        mutex_lock(&nvmf_hosts_mutex);
        host = __nvmf_host_find(hostnqn);
 -      if (host)
 +      if (host) {
 +              kref_get(&host->ref);
                goto out_unlock;
 +      }
  
        host = kmalloc(sizeof(*host), GFP_KERNEL);
        if (!host)
@@@ -58,7 -56,7 +58,7 @@@
  
        kref_init(&host->ref);
        memcpy(host->nqn, hostnqn, NVMF_NQN_SIZE);
 -      uuid_le_gen(&host->id);
 +      uuid_be_gen(&host->id);
  
        list_add_tail(&host->list, &nvmf_hosts);
  out_unlock:
@@@ -75,9 -73,9 +75,9 @@@ static struct nvmf_host *nvmf_host_defa
                return NULL;
  
        kref_init(&host->ref);
 -      uuid_le_gen(&host->id);
 +      uuid_be_gen(&host->id);
        snprintf(host->nqn, NVMF_NQN_SIZE,
 -              "nqn.2014-08.org.nvmexpress:NVMf:uuid:%pUl", &host->id);
 +              "nqn.2014-08.org.nvmexpress:NVMf:uuid:%pUb", &host->id);
  
        mutex_lock(&nvmf_hosts_mutex);
        list_add_tail(&host->list, &nvmf_hosts);
@@@ -111,8 -109,19 +111,19 @@@ static void nvmf_host_put(struct nvmf_h
   */
  int nvmf_get_address(struct nvme_ctrl *ctrl, char *buf, int size)
  {
-       return snprintf(buf, size, "traddr=%s,trsvcid=%s\n",
-                       ctrl->opts->traddr, ctrl->opts->trsvcid);
+       int len = 0;
+       if (ctrl->opts->mask & NVMF_OPT_TRADDR)
+               len += snprintf(buf, size, "traddr=%s", ctrl->opts->traddr);
+       if (ctrl->opts->mask & NVMF_OPT_TRSVCID)
+               len += snprintf(buf + len, size - len, "%strsvcid=%s",
+                               (len) ? "," : "", ctrl->opts->trsvcid);
+       if (ctrl->opts->mask & NVMF_OPT_HOST_TRADDR)
+               len += snprintf(buf + len, size - len, "%shost_traddr=%s",
+                               (len) ? "," : "", ctrl->opts->host_traddr);
+       len += snprintf(buf + len, size - len, "\n");
+       return len;
  }
  EXPORT_SYMBOL_GPL(nvmf_get_address);
  
@@@ -365,14 -374,7 +376,14 @@@ int nvmf_connect_admin_queue(struct nvm
        cmd.connect.opcode = nvme_fabrics_command;
        cmd.connect.fctype = nvme_fabrics_type_connect;
        cmd.connect.qid = 0;
 -      cmd.connect.sqsize = cpu_to_le16(ctrl->sqsize);
 +
 +      /*
 +       * fabrics spec sets a minimum of depth 32 for admin queue,
 +       * so set the queue with this depth always until
 +       * justification otherwise.
 +       */
 +      cmd.connect.sqsize = cpu_to_le16(NVMF_AQ_DEPTH - 1);
 +
        /*
         * Set keep-alive timeout in seconds granularity (ms * 1000)
         * and add a grace period for controller kato enforcement
        if (!data)
                return -ENOMEM;
  
 -      memcpy(&data->hostid, &ctrl->opts->host->id, sizeof(uuid_le));
 +      memcpy(&data->hostid, &ctrl->opts->host->id, sizeof(uuid_be));
        data->cntlid = cpu_to_le16(0xffff);
        strncpy(data->subsysnqn, ctrl->opts->subsysnqn, NVMF_NQN_SIZE);
        strncpy(data->hostnqn, ctrl->opts->host->nqn, NVMF_NQN_SIZE);
@@@ -443,7 -445,7 +454,7 @@@ int nvmf_connect_io_queue(struct nvme_c
        if (!data)
                return -ENOMEM;
  
 -      memcpy(&data->hostid, &ctrl->opts->host->id, sizeof(uuid_le));
 +      memcpy(&data->hostid, &ctrl->opts->host->id, sizeof(uuid_be));
        data->cntlid = cpu_to_le16(ctrl->cntlid);
        strncpy(data->subsysnqn, ctrl->opts->subsysnqn, NVMF_NQN_SIZE);
        strncpy(data->hostnqn, ctrl->opts->host->nqn, NVMF_NQN_SIZE);
@@@ -519,6 -521,7 +530,7 @@@ static const match_table_t opt_tokens 
        { NVMF_OPT_RECONNECT_DELAY,     "reconnect_delay=%d"    },
        { NVMF_OPT_KATO,                "keep_alive_tmo=%d"     },
        { NVMF_OPT_HOSTNQN,             "hostnqn=%s"            },
+       { NVMF_OPT_HOST_TRADDR,         "host_traddr=%s"        },
        { NVMF_OPT_ERR,                 NULL                    }
  };
  
@@@ -675,6 -678,14 +687,14 @@@ static int nvmf_parse_options(struct nv
                        }
                        opts->reconnect_delay = token;
                        break;
+               case NVMF_OPT_HOST_TRADDR:
+                       p = match_strdup(args);
+                       if (!p) {
+                               ret = -ENOMEM;
+                               goto out;
+                       }
+                       opts->host_traddr = p;
+                       break;
                default:
                        pr_warn("unknown parameter or missing value '%s' in ctrl creation request\n",
                                p);
@@@ -741,6 -752,7 +761,7 @@@ void nvmf_free_options(struct nvmf_ctrl
        kfree(opts->traddr);
        kfree(opts->trsvcid);
        kfree(opts->subsysnqn);
+       kfree(opts->host_traddr);
        kfree(opts);
  }
  EXPORT_SYMBOL_GPL(nvmf_free_options);
index 46e460aee52da54306fd4121e73ab997e6e01f5b,8f08c3a3406b04bc18d368bb9587eac0bc809152..924145c979f136e167c72448b5998df15479a670
@@@ -34,7 -34,7 +34,7 @@@ struct nvmf_host 
        struct kref             ref;
        struct list_head        list;
        char                    nqn[NVMF_NQN_SIZE];
 -      uuid_le                 id;
 +      uuid_be                 id;
  };
  
  /**
@@@ -52,6 -52,7 +52,7 @@@ enum 
        NVMF_OPT_KATO           = 1 << 7,
        NVMF_OPT_HOSTNQN        = 1 << 8,
        NVMF_OPT_RECONNECT_DELAY = 1 << 9,
+       NVMF_OPT_HOST_TRADDR    = 1 << 10,
  };
  
  /**
   *            being added.
   * @subsysnqn:        Hold the fully qualified NQN subystem name (format defined
   *            in the NVMe specification, "NVMe Qualified Names").
-  * @traddr:   network address that will be used by the host to communicate
-  *            to the added NVMe controller.
-  * @trsvcid:  network port used for host-controller communication.
+  * @traddr:   The transport-specific TRADDR field for a port on the
+  *              subsystem which is adding a controller.
+  * @trsvcid:  The transport-specific TRSVCID field for a port on the
+  *              subsystem which is adding a controller.
+  * @host_traddr: A transport-specific field identifying the NVME host port
+  *              to use for the connection to the controller.
   * @queue_size: Number of IO queue elements.
   * @nr_io_queues: Number of controller IO queues that will be established.
   * @reconnect_delay: Time between two consecutive reconnect attempts.
@@@ -80,6 -84,7 +84,7 @@@ struct nvmf_ctrl_options 
        char                    *subsysnqn;
        char                    *traddr;
        char                    *trsvcid;
+       char                    *host_traddr;
        size_t                  queue_size;
        unsigned int            nr_io_queues;
        unsigned int            reconnect_delay;
diff --combined lib/Makefile
index df747e5eeb7abc0da87b915684b5a069916164c0,2cbfd2904994b0a3bbcae42f3a427f3c2c7151b3..f3ca8c0ab634e04f98d959ef4b2759f9a5af472f
@@@ -22,8 -22,9 +22,8 @@@ lib-y := ctype.o string.o vsprintf.o cm
         sha1.o chacha20.o md5.o irq_regs.o argv_split.o \
         flex_proportions.o ratelimit.o show_mem.o \
         is_single_threaded.o plist.o decompress.o kobject_uevent.o \
 -       earlycpio.o seq_buf.o nmi_backtrace.o nodemask.o
 +       earlycpio.o seq_buf.o nmi_backtrace.o nodemask.o win_minmax.o
  
 -obj-$(CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS) += usercopy.o
  lib-$(CONFIG_MMU) += ioremap.o
  lib-$(CONFIG_SMP) += cpumask.o
  lib-$(CONFIG_HAS_DMA) += dma-noop.o
@@@ -227,3 -228,5 +227,5 @@@ obj-$(CONFIG_UCS2_STRING) += ucs2_strin
  obj-$(CONFIG_UBSAN) += ubsan.o
  
  UBSAN_SANITIZE_ubsan.o := n
+ obj-$(CONFIG_SBITMAP) += sbitmap.o
This page took 0.19609 seconds and 4 git commands to generate.