Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso...
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 8 May 2019 04:12:44 +0000 (21:12 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 8 May 2019 04:12:44 +0000 (21:12 -0700)
Pull ext4 updates from Ted Ts'o:
 "Add as a feature case-insensitive directories (the casefold feature)
  using Unicode 12.1.

  Also, the usual largish number of cleanups and bug fixes"

* tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (25 commits)
  ext4: export /sys/fs/ext4/feature/casefold if Unicode support is present
  ext4: fix ext4_show_options for file systems w/o journal
  unicode: refactor the rule for regenerating utf8data.h
  docs: ext4.rst: document case-insensitive directories
  ext4: Support case-insensitive file name lookups
  ext4: include charset encoding information in the superblock
  MAINTAINERS: add Unicode subsystem entry
  unicode: update unicode database unicode version 12.1.0
  unicode: introduce test module for normalized utf8 implementation
  unicode: implement higher level API for string handling
  unicode: reduce the size of utf8data[]
  unicode: introduce code for UTF-8 normalization
  unicode: introduce UTF-8 character database
  ext4: actually request zeroing of inode table after grow
  ext4: cond_resched in work-heavy group loops
  ext4: fix use-after-free race with debug_want_extra_isize
  ext4: avoid drop reference to iloc.bh twice
  ext4: ignore e_value_offs for xattrs with value-in-ea-inode
  ext4: protect journal inode's blocks using block_validity
  ext4: use BUG() instead of BUG_ON(1)
  ...

1  2 
MAINTAINERS
fs/Makefile
fs/ext4/ext4.h
fs/ext4/readpage.c
fs/ext4/resize.c
fs/ext4/super.c
include/linux/fs.h

diff --combined MAINTAINERS
index 20dc1a125e2485a4b9ca88af61710fafe56ca851,6ad593f913cd1b28a82ef01f90168c9655b6b3c2..235fa2042eb19e36c29febe6ae4320a1598dcf22
@@@ -268,13 -268,12 +268,13 @@@ L:      linux-gpio@vger.kernel.or
  S:    Maintained
  F:    drivers/gpio/gpio-104-idio-16.c
  
 -ACCES 104-QUAD-8 IIO DRIVER
 +ACCES 104-QUAD-8 DRIVER
  M:    William Breathitt Gray <vilhelm.gray@gmail.com>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-bus-counter-104-quad-8
  F:    Documentation/ABI/testing/sysfs-bus-iio-counter-104-quad-8
 -F:    drivers/iio/counter/104-quad-8.c
 +F:    drivers/counter/104-quad-8.c
  
  ACCES PCI-IDIO-16 GPIO DRIVER
  M:    William Breathitt Gray <vilhelm.gray@gmail.com>
@@@ -469,7 -468,7 +469,7 @@@ ADM1025 HARDWARE MONITOR DRIVE
  M:    Jean Delvare <jdelvare@suse.com>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/adm1025
 +F:    Documentation/hwmon/adm1025.rst
  F:    drivers/hwmon/adm1025.c
  
  ADM1029 HARDWARE MONITOR DRIVER
@@@ -521,7 -520,7 +521,7 @@@ ADS1015 HARDWARE MONITOR DRIVE
  M:    Dirk Eibach <eibach@gdsys.de>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/ads1015
 +F:    Documentation/hwmon/ads1015.rst
  F:    drivers/hwmon/ads1015.c
  F:    include/linux/platform_data/ads1015.h
  
@@@ -534,7 -533,7 +534,7 @@@ ADT7475 HARDWARE MONITOR DRIVE
  M:    Jean Delvare <jdelvare@suse.com>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/adt7475
 +F:    Documentation/hwmon/adt7475.rst
  F:    drivers/hwmon/adt7475.c
  
  ADVANSYS SCSI DRIVER
@@@ -765,7 -764,7 +765,7 @@@ AMD FAM15H PROCESSOR POWER MONITORING D
  M:    Huang Rui <ray.huang@amd.com>
  L:    linux-hwmon@vger.kernel.org
  S:    Supported
 -F:    Documentation/hwmon/fam15h_power
 +F:    Documentation/hwmon/fam15h_power.rst
  F:    drivers/hwmon/fam15h_power.c
  
  AMD FCH GPIO DRIVER
@@@ -869,7 -868,7 +869,7 @@@ L: linux-iio@vger.kernel.or
  W:    http://ez.analog.com/community/linux-device-drivers
  S:    Supported
  F:    drivers/iio/adc/ad7606.c
 -F:    Documentation/devicetree/bindings/iio/adc/ad7606.txt
 +F:    Documentation/devicetree/bindings/iio/adc/adi,ad7606.txt
  
  ANALOG DEVICES INC AD7768-1 DRIVER
  M:    Stefan Popa <stefan.popa@analog.com>
@@@ -951,7 -950,6 +951,7 @@@ F: drivers/dma/dma-axi-dmac.
  ANALOG DEVICES INC IIO DRIVERS
  M:    Lars-Peter Clausen <lars@metafoo.de>
  M:    Michael Hennerich <Michael.Hennerich@analog.com>
 +M:    Stefan Popa <stefan.popa@analog.com>
  W:    http://wiki.analog.com/
  W:    http://ez.analog.com/community/linux-device-drivers
  S:    Supported
@@@ -1895,15 -1893,14 +1895,15 @@@ T:   git git://git.kernel.org/pub/scm/lin
  ARM/NUVOTON NPCM ARCHITECTURE
  M:    Avi Fishman <avifishman70@gmail.com>
  M:    Tomer Maimon <tmaimon77@gmail.com>
 +M:    Tali Perry <tali.perry1@gmail.com>
  R:    Patrick Venture <venture@google.com>
  R:    Nancy Yuen <yuenn@google.com>
 -R:    Brendan Higgins <brendanhiggins@google.com>
 +R:    Benjamin Fair <benjaminfair@google.com>
  L:    openbmc@lists.ozlabs.org (moderated for non-subscribers)
  S:    Supported
  F:    arch/arm/mach-npcm/
  F:    arch/arm/boot/dts/nuvoton-npcm*
 -F:    include/dt-bindings/clock/nuvoton,npcm7xx-clks.h
 +F:    include/dt-bindings/clock/nuvoton,npcm7xx-clock.h
  F:    drivers/*/*npcm*
  F:    Documentation/devicetree/bindings/*/*npcm*
  F:    Documentation/devicetree/bindings/*/*/*npcm*
@@@ -2515,7 -2512,7 +2515,7 @@@ ASC7621 HARDWARE MONITOR DRIVE
  M:    George Joseph <george.joseph@fairview5.com>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/asc7621
 +F:    Documentation/hwmon/asc7621.rst
  F:    drivers/hwmon/asc7621.c
  
  ASPEED VIDEO ENGINE DRIVER
@@@ -3123,7 -3120,6 +3123,7 @@@ F:      drivers/cpufreq/bmips-cpufreq.
  BROADCOM BMIPS MIPS ARCHITECTURE
  M:    Kevin Cernekee <cernekee@gmail.com>
  M:    Florian Fainelli <f.fainelli@gmail.com>
 +L:    bcm-kernel-feedback-list@broadcom.com
  L:    linux-mips@vger.kernel.org
  T:    git git://github.com/broadcom/stblinux.git
  S:    Maintained
@@@ -3800,7 -3796,6 +3800,7 @@@ M:      Richard Fitzgerald <rf@opensource.ci
  L:    patches@opensource.cirrus.com
  S:    Supported
  F:    drivers/clk/clk-lochnagar.c
 +F:    drivers/hwmon/lochnagar-hwmon.c
  F:    drivers/mfd/lochnagar-i2c.c
  F:    drivers/pinctrl/cirrus/pinctrl-lochnagar.c
  F:    drivers/regulator/lochnagar-regulator.c
@@@ -3809,10 -3804,8 +3809,10 @@@ F:    include/dt-bindings/pinctrl/lochnaga
  F:    include/linux/mfd/lochnagar*
  F:    Documentation/devicetree/bindings/mfd/cirrus,lochnagar.txt
  F:    Documentation/devicetree/bindings/clock/cirrus,lochnagar.txt
 +F:    Documentation/devicetree/bindings/hwmon/cirrus,lochnagar.txt
  F:    Documentation/devicetree/bindings/pinctrl/cirrus,lochnagar.txt
  F:    Documentation/devicetree/bindings/regulator/cirrus,lochnagar.txt
 +F:    Documentation/hwmon/lochnagar
  
  CISCO FCOE HBA DRIVER
  M:    Satish Kharat <satishkh@cisco.com>
@@@ -4050,7 -4043,7 +4050,7 @@@ CORETEMP HARDWARE MONITORING DRIVE
  M:    Fenghua Yu <fenghua.yu@intel.com>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/coretemp
 +F:    Documentation/hwmon/coretemp.rst
  F:    drivers/hwmon/coretemp.c
  
  COSA/SRP SYNC SERIAL DRIVER
@@@ -4059,16 -4052,6 +4059,16 @@@ W:    http://www.fi.muni.cz/~kas/cosa
  S:    Maintained
  F:    drivers/net/wan/cosa*
  
 +COUNTER SUBSYSTEM
 +M:    William Breathitt Gray <vilhelm.gray@gmail.com>
 +L:    linux-iio@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/ABI/testing/sysfs-bus-counter*
 +F:    Documentation/driver-api/generic-counter.rst
 +F:    drivers/counter/
 +F:    include/linux/counter.h
 +F:    include/linux/counter_enum.h
 +
  CPMAC ETHERNET DRIVER
  M:    Florian Fainelli <f.fainelli@gmail.com>
  L:    netdev@vger.kernel.org
@@@ -4146,7 -4129,7 +4146,7 @@@ F:      drivers/cpuidle/
  F:    include/linux/cpuidle.h
  
  CRAMFS FILESYSTEM
 -M:    Nicolas Pitre <nico@linaro.org>
 +M:    Nicolas Pitre <nico@fluxnic.net>
  S:    Maintained
  F:    Documentation/filesystems/cramfs.txt
  F:    fs/cramfs/
@@@ -4568,7 -4551,6 +4568,7 @@@ S:      Maintaine
  F:    drivers/devfreq/
  F:    include/linux/devfreq.h
  F:    Documentation/devicetree/bindings/devfreq/
 +F:    include/trace/events/devfreq.h
  
  DEVICE FREQUENCY EVENT (DEVFREQ-EVENT)
  M:    Chanwoo Choi <cw00.choi@samsung.com>
@@@ -4616,7 -4598,7 +4616,7 @@@ DIALOG SEMICONDUCTOR DRIVER
  M:    Support Opensource <support.opensource@diasemi.com>
  W:    http://www.dialog-semiconductor.com/products
  S:    Supported
 -F:    Documentation/hwmon/da90??
 +F:    Documentation/hwmon/da90??.rst
  F:    Documentation/devicetree/bindings/mfd/da90*.txt
  F:    Documentation/devicetree/bindings/input/da90??-onkey.txt
  F:    Documentation/devicetree/bindings/thermal/da90??-thermal.txt
@@@ -4767,7 -4749,7 +4767,7 @@@ DME1737 HARDWARE MONITOR DRIVE
  M:    Juerg Haefliger <juergh@gmail.com>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/dme1737
 +F:    Documentation/hwmon/dme1737.rst
  F:    drivers/hwmon/dme1737.c
  
  DMI/SMBIOS SUPPORT
@@@ -5614,12 -5596,6 +5614,12 @@@ L:    linux-edac@vger.kernel.or
  S:    Maintained
  F:    drivers/edac/ghes_edac.c
  
 +EDAC-I10NM
 +M:    Tony Luck <tony.luck@intel.com>
 +L:    linux-edac@vger.kernel.org
 +S:    Maintained
 +F:    drivers/edac/i10nm_base.c
 +
  EDAC-I3000
  L:    linux-edac@vger.kernel.org
  S:    Orphan
@@@ -5701,7 -5677,7 +5701,7 @@@ EDAC-SKYLAK
  M:    Tony Luck <tony.luck@intel.com>
  L:    linux-edac@vger.kernel.org
  S:    Maintained
 -F:    drivers/edac/skx_edac.c
 +F:    drivers/edac/skx_*.c
  
  EDAC-TI
  M:    Tero Kristo <t-kristo@ti.com>
@@@ -5857,7 -5833,7 +5857,7 @@@ L:      netdev@vger.kernel.or
  S:    Maintained
  F:    Documentation/ABI/testing/sysfs-bus-mdio
  F:    Documentation/devicetree/bindings/net/mdio*
 -F:    Documentation/networking/phy.txt
 +F:    Documentation/networking/phy.rst
  F:    drivers/net/phy/
  F:    drivers/of/of_mdio.c
  F:    drivers/of/of_net.c
@@@ -5959,7 -5935,7 +5959,7 @@@ F71805F HARDWARE MONITORING DRIVE
  M:    Jean Delvare <jdelvare@suse.com>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/f71805f
 +F:    Documentation/hwmon/f71805f.rst
  F:    drivers/hwmon/f71805f.c
  
  FADDR2LINE
@@@ -6484,7 -6460,7 +6484,7 @@@ S:      Maintaine
  F:    drivers/media/radio/radio-gemtek*
  
  GENERIC GPIO I2C DRIVER
 -M:    Haavard Skinnemoen <hskinnemoen@gmail.com>
 +M:    Wolfram Sang <wsa+renesas@sang-engineering.com>
  S:    Supported
  F:    drivers/i2c/busses/i2c-gpio.c
  F:    include/linux/platform_data/i2c-gpio.h
@@@ -6616,7 -6592,7 +6616,7 @@@ M:      Andy Shevchenko <andriy.shevchenko@l
  L:    linux-gpio@vger.kernel.org
  L:    linux-acpi@vger.kernel.org
  S:    Maintained
 -F:    Documentation/acpi/gpio-properties.txt
 +F:    Documentation/firmware-guide/acpi/gpio-properties.rst
  F:    drivers/gpio/gpiolib-acpi.c
  
  GPIO IR Transmitter
@@@ -7356,6 -7332,7 +7356,6 @@@ F:      Documentation/devicetree/bindings/i3
  F:    Documentation/driver-api/i3c
  F:    drivers/i3c/
  F:    include/linux/i3c/
 -F:    include/dt-bindings/i3c/
  
  I3C DRIVER FOR SYNOPSYS DESIGNWARE
  M:    Vitor Soares <vitor.soares@synopsys.com>
@@@ -7538,7 -7515,7 +7538,7 @@@ F:      include/net/mac802154.
  F:    include/net/af_ieee802154.h
  F:    include/net/cfg802154.h
  F:    include/net/ieee802154_netdev.h
 -F:    Documentation/networking/ieee802154.txt
 +F:    Documentation/networking/ieee802154.rst
  
  IFE PROTOCOL
  M:    Yotam Gigi <yotam.gi@gmail.com>
@@@ -7640,7 -7617,7 +7640,7 @@@ INA209 HARDWARE MONITOR DRIVE
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/ina209
 +F:    Documentation/hwmon/ina209.rst
  F:    Documentation/devicetree/bindings/hwmon/ina2xx.txt
  F:    drivers/hwmon/ina209.c
  
@@@ -7648,7 -7625,7 +7648,7 @@@ INA2XX HARDWARE MONITOR DRIVE
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/ina2xx
 +F:    Documentation/hwmon/ina2xx.rst
  F:    drivers/hwmon/ina2xx.c
  F:    include/linux/platform_data/ina2xx.h
  
@@@ -8068,7 -8045,6 +8068,7 @@@ F:      drivers/gpio/gpio-intel-mid.
  
  INTERCONNECT API
  M:    Georgi Djakov <georgi.djakov@linaro.org>
 +L:    linux-pm@vger.kernel.org
  S:    Maintained
  F:    Documentation/interconnect/
  F:    Documentation/devicetree/bindings/interconnect/
@@@ -8277,7 -8253,7 +8277,7 @@@ IT87 HARDWARE MONITORING DRIVE
  M:    Jean Delvare <jdelvare@suse.com>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/it87
 +F:    Documentation/hwmon/it87.rst
  F:    drivers/hwmon/it87.c
  
  IT913X MEDIA DRIVER
@@@ -8321,7 -8297,7 +8321,7 @@@ M:      Guenter Roeck <linux@roeck-us.net
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
  F:    drivers/hwmon/jc42.c
 -F:    Documentation/hwmon/jc42
 +F:    Documentation/hwmon/jc42.rst
  
  JFS FILESYSTEM
  M:    Dave Kleikamp <shaggy@kernel.org>
@@@ -8369,14 -8345,14 +8369,14 @@@ K10TEMP HARDWARE MONITORING DRIVE
  M:    Clemens Ladisch <clemens@ladisch.de>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/k10temp
 +F:    Documentation/hwmon/k10temp.rst
  F:    drivers/hwmon/k10temp.c
  
  K8TEMP HARDWARE MONITORING DRIVER
  M:    Rudolf Marek <r.marek@assembler.cz>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/k8temp
 +F:    Documentation/hwmon/k8temp.rst
  F:    drivers/hwmon/k8temp.c
  
  KASAN
@@@ -8731,7 -8707,6 +8731,7 @@@ F:      scripts/leaking_addresses.p
  LED SUBSYSTEM
  M:    Jacek Anaszewski <jacek.anaszewski@gmail.com>
  M:    Pavel Machek <pavel@ucw.cz>
 +R:    Dan Murphy <dmurphy@ti.com>
  L:    linux-leds@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds.git
  S:    Maintained
@@@ -9017,7 -8992,7 +9017,7 @@@ R:      Daniel Lustig <dlustig@nvidia.com
  L:    linux-kernel@vger.kernel.org
  L:    linux-arch@vger.kernel.org
  S:    Supported
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev
  F:    tools/memory-model/
  F:    Documentation/atomic_bitops.txt
  F:    Documentation/atomic_t.txt
@@@ -9068,21 -9043,21 +9068,21 @@@ LM78 HARDWARE MONITOR DRIVE
  M:    Jean Delvare <jdelvare@suse.com>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/lm78
 +F:    Documentation/hwmon/lm78.rst
  F:    drivers/hwmon/lm78.c
  
  LM83 HARDWARE MONITOR DRIVER
  M:    Jean Delvare <jdelvare@suse.com>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/lm83
 +F:    Documentation/hwmon/lm83.rst
  F:    drivers/hwmon/lm83.c
  
  LM90 HARDWARE MONITOR DRIVER
  M:    Jean Delvare <jdelvare@suse.com>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/lm90
 +F:    Documentation/hwmon/lm90.rst
  F:    Documentation/devicetree/bindings/hwmon/lm90.txt
  F:    drivers/hwmon/lm90.c
  F:    include/dt-bindings/thermal/lm90.h
@@@ -9091,7 -9066,7 +9091,7 @@@ LM95234 HARDWARE MONITOR DRIVE
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/lm95234
 +F:    Documentation/hwmon/lm95234.rst
  F:    drivers/hwmon/lm95234.c
  
  LME2510 MEDIA DRIVER
@@@ -9123,6 -9098,7 +9123,6 @@@ F:      arch/*/include/asm/spinlock*.
  F:    include/linux/rwlock*.h
  F:    include/linux/mutex*.h
  F:    include/linux/rwsem*.h
 -F:    arch/*/include/asm/rwsem.h
  F:    include/linux/seqlock.h
  F:    lib/locking*.[ch]
  F:    kernel/locking/
@@@ -9164,7 -9140,7 +9164,7 @@@ LTC4261 HARDWARE MONITOR DRIVE
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/ltc4261
 +F:    Documentation/hwmon/ltc4261.rst
  F:    drivers/hwmon/ltc4261.c
  
  LTC4306 I2C MULTIPLEXER DRIVER
@@@ -9395,7 -9371,7 +9395,7 @@@ MAX16065 HARDWARE MONITOR DRIVE
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/max16065
 +F:    Documentation/hwmon/max16065.rst
  F:    drivers/hwmon/max16065.c
  
  MAX2175 SDR TUNER DRIVER
@@@ -9411,14 -9387,14 +9411,14 @@@ F:   include/uapi/linux/max2175.
  MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER
  L:    linux-hwmon@vger.kernel.org
  S:    Orphan
 -F:    Documentation/hwmon/max6650
 +F:    Documentation/hwmon/max6650.rst
  F:    drivers/hwmon/max6650.c
  
  MAX6697 HARDWARE MONITOR DRIVER
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/max6697
 +F:    Documentation/hwmon/max6697.rst
  F:    Documentation/devicetree/bindings/hwmon/max6697.txt
  F:    drivers/hwmon/max6697.c
  F:    include/linux/platform_data/max6697.h
@@@ -9430,13 -9406,6 +9430,13 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/sound/max9860.txt
  F:    sound/soc/codecs/max9860.*
  
 +MAXBOTIX ULTRASONIC RANGER IIO DRIVER
 +M:    Andreas Klinger <ak@it-klinger.de>
 +L:    linux-iio@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/iio/proximity/maxbotix,mb1232.txt
 +F:    drivers/iio/proximity/mb1232.c
 +
  MAXIM MAX77802 PMIC REGULATOR DEVICE DRIVER
  M:    Javier Martinez Canillas <javier@dowhile0.org>
  L:    linux-kernel@vger.kernel.org
@@@ -9805,12 -9774,6 +9805,12 @@@ F:    drivers/media/platform/mtk-vpu
  F:    Documentation/devicetree/bindings/media/mediatek-vcodec.txt
  F:    Documentation/devicetree/bindings/media/mediatek-vpu.txt
  
 +MEDIATEK MMC/SD/SDIO DRIVER
 +M:    Chaotian Jing <chaotian.jing@mediatek.com>
 +S:    Maintained
 +F:    drivers/mmc/host/mtk-sd.c
 +F:    Documentation/devicetree/bindings/mmc/mtk-sd.txt
 +
  MEDIATEK MT76 WIRELESS LAN DRIVER
  M:    Felix Fietkau <nbd@nbd.name>
  M:    Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
@@@ -10077,7 -10040,7 +10077,7 @@@ F:   drivers/mfd/menf21bmc.
  F:    drivers/watchdog/menf21bmc_wdt.c
  F:    drivers/leds/leds-menf21bmc.c
  F:    drivers/hwmon/menf21bmc_hwmon.c
 -F:    Documentation/hwmon/menf21bmc
 +F:    Documentation/hwmon/menf21bmc.rst
  
  MEN Z069 WATCHDOG DRIVER
  M:    Johannes Thumshirn <jth@kernel.org>
@@@ -10181,7 -10144,7 +10181,7 @@@ F:   drivers/spi/spi-at91-usart.
  F:    Documentation/devicetree/bindings/mfd/atmel-usart.txt
  
  MICROCHIP KSZ SERIES ETHERNET SWITCH DRIVER
 -M:    Woojung Huh <Woojung.Huh@microchip.com>
 +M:    Woojung Huh <woojung.huh@microchip.com>
  M:    Microchip Linux Driver Support <UNGLinuxDriver@microchip.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
@@@ -10705,7 -10668,7 +10705,7 @@@ NCT6775 HARDWARE MONITOR DRIVE
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/nct6775
 +F:    Documentation/hwmon/nct6775.rst
  F:    drivers/hwmon/nct6775.c
  
  NET_FAILOVER MODULE
@@@ -11153,16 -11116,6 +11153,16 @@@ F: Documentation/ABI/stable/sysfs-bus-n
  F:    include/linux/nvmem-consumer.h
  F:    include/linux/nvmem-provider.h
  
 +NXP FXAS21002C DRIVER
 +M:    Rui Miguel Silva <rmfrfs@gmail.com>
 +L:    linux-iio@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/iio/gyroscope/fxas21002c.txt
 +F:    drivers/iio/gyro/fxas21002c_core.c
 +F:    drivers/iio/gyro/fxas21002c.h
 +F:    drivers/iio/gyro/fxas21002c_i2c.c
 +F:    drivers/iio/gyro/fxas21002c_spi.c
 +
  NXP SGTL5000 DRIVER
  M:    Fabio Estevam <festevam@gmail.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
@@@ -11809,7 -11762,7 +11809,7 @@@ PC87360 HARDWARE MONITORING DRIVE
  M:    Jim Cromie <jim.cromie@gmail.com>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/pc87360
 +F:    Documentation/hwmon/pc87360.rst
  F:    drivers/hwmon/pc87360.c
  
  PC8736x GPIO DRIVER
@@@ -11821,7 -11774,7 +11821,7 @@@ PC87427 HARDWARE MONITORING DRIVE
  M:    Jean Delvare <jdelvare@suse.com>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/pc87427
 +F:    Documentation/hwmon/pc87427.rst
  F:    drivers/hwmon/pc87427.c
  
  PCA9532 LED DRIVER
@@@ -12221,7 -12174,6 +12221,7 @@@ F:   arch/*/kernel/*/*/perf_event*.
  F:    arch/*/include/asm/perf_event.h
  F:    arch/*/kernel/perf_callchain.c
  F:    arch/*/events/*
 +F:    arch/*/events/*/*
  F:    tools/perf/
  
  PERSONALITY HANDLING
@@@ -12390,23 -12342,23 +12390,23 @@@ S:        Maintaine
  F:    Documentation/devicetree/bindings/hwmon/ibm,cffps1.txt
  F:    Documentation/devicetree/bindings/hwmon/max31785.txt
  F:    Documentation/devicetree/bindings/hwmon/ltc2978.txt
 -F:    Documentation/hwmon/adm1275
 -F:    Documentation/hwmon/ibm-cffps
 -F:    Documentation/hwmon/ir35221
 -F:    Documentation/hwmon/lm25066
 -F:    Documentation/hwmon/ltc2978
 -F:    Documentation/hwmon/ltc3815
 -F:    Documentation/hwmon/max16064
 -F:    Documentation/hwmon/max20751
 -F:    Documentation/hwmon/max31785
 -F:    Documentation/hwmon/max34440
 -F:    Documentation/hwmon/max8688
 -F:    Documentation/hwmon/pmbus
 -F:    Documentation/hwmon/pmbus-core
 -F:    Documentation/hwmon/tps40422
 -F:    Documentation/hwmon/ucd9000
 -F:    Documentation/hwmon/ucd9200
 -F:    Documentation/hwmon/zl6100
 +F:    Documentation/hwmon/adm1275.rst
 +F:    Documentation/hwmon/ibm-cffps.rst
 +F:    Documentation/hwmon/ir35221.rst
 +F:    Documentation/hwmon/lm25066.rst
 +F:    Documentation/hwmon/ltc2978.rst
 +F:    Documentation/hwmon/ltc3815.rst
 +F:    Documentation/hwmon/max16064.rst
 +F:    Documentation/hwmon/max20751.rst
 +F:    Documentation/hwmon/max31785.rst
 +F:    Documentation/hwmon/max34440.rst
 +F:    Documentation/hwmon/max8688.rst
 +F:    Documentation/hwmon/pmbus.rst
 +F:    Documentation/hwmon/pmbus-core.rst
 +F:    Documentation/hwmon/tps40422.rst
 +F:    Documentation/hwmon/ucd9000.rst
 +F:    Documentation/hwmon/ucd9200.rst
 +F:    Documentation/hwmon/zl6100.rst
  F:    drivers/hwmon/pmbus/
  F:    include/linux/pmbus.h
  
@@@ -12462,7 -12414,7 +12462,7 @@@ M:   Mark Rutland <mark.rutland@arm.com
  M:    Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
  L:    linux-arm-kernel@lists.infradead.org
  S:    Maintained
 -F:    drivers/firmware/psci*.c
 +F:    drivers/firmware/psci/
  F:    include/linux/psci.h
  F:    include/uapi/linux/psci.h
  
@@@ -12670,7 -12622,7 +12670,7 @@@ M:   Bartlomiej Zolnierkiewicz <b.zolnier
  L:    linux-hwmon@vger.kernel.org
  S:    Supported
  F:    Documentation/devicetree/bindings/hwmon/pwm-fan.txt
 -F:    Documentation/hwmon/pwm-fan
 +F:    Documentation/hwmon/pwm-fan.rst
  F:    drivers/hwmon/pwm-fan.c
  
  PWM IR Transmitter
@@@ -13088,9 -13040,9 +13088,9 @@@ M:   Josh Triplett <josh@joshtriplett.org
  R:    Steven Rostedt <rostedt@goodmis.org>
  R:    Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
  R:    Lai Jiangshan <jiangshanlai@gmail.com>
 -L:    linux-kernel@vger.kernel.org
 +L:    rcu@vger.kernel.org
  S:    Supported
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev
  F:    tools/testing/selftests/rcutorture
  
  RDC R-321X SoC
@@@ -13136,10 -13088,10 +13136,10 @@@ R:        Steven Rostedt <rostedt@goodmis.org
  R:    Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
  R:    Lai Jiangshan <jiangshanlai@gmail.com>
  R:    Joel Fernandes <joel@joelfernandes.org>
 -L:    linux-kernel@vger.kernel.org
 +L:    rcu@vger.kernel.org
  W:    http://www.rdrop.com/users/paulmck/RCU/
  S:    Supported
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev
  F:    Documentation/RCU/
  X:    Documentation/RCU/torture.txt
  F:    include/linux/rcu*
@@@ -13994,7 -13946,7 +13994,7 @@@ W:   https://selinuxproject.or
  W:    https://github.com/SELinuxProject
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/selinux.git
  S:    Supported
 -F:    include/linux/selinux*
 +F:    include/uapi/linux/selinux_netlink.h
  F:    security/selinux/
  F:    scripts/selinux/
  F:    Documentation/admin-guide/LSM/SELinux.rst
@@@ -14029,7 -13981,7 +14029,7 @@@ F:   drivers/media/rc/serial_ir.
  SFC NETWORK DRIVER
  M:    Solarflare linux maintainers <linux-net-drivers@solarflare.com>
  M:    Edward Cree <ecree@solarflare.com>
 -M:    Bert Kenward <bkenward@solarflare.com>
 +M:    Martin Habets <mhabets@solarflare.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/sfc/
@@@ -14291,10 -14243,10 +14291,10 @@@ M:        "Paul E. McKenney" <paulmck@linux.ib
  M:    Josh Triplett <josh@joshtriplett.org>
  R:    Steven Rostedt <rostedt@goodmis.org>
  R:    Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
 -L:    linux-kernel@vger.kernel.org
 +L:    rcu@vger.kernel.org
  W:    http://www.rdrop.com/users/paulmck/RCU/
  S:    Supported
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev
  F:    include/linux/srcu*.h
  F:    kernel/rcu/srcu*.c
  
@@@ -14335,21 -14287,21 +14335,21 @@@ SMM665 HARDWARE MONITOR DRIVE
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/smm665
 +F:    Documentation/hwmon/smm665.rst
  F:    drivers/hwmon/smm665.c
  
  SMSC EMC2103 HARDWARE MONITOR DRIVER
  M:    Steve Glendinning <steve.glendinning@shawell.net>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/emc2103
 +F:    Documentation/hwmon/emc2103.rst
  F:    drivers/hwmon/emc2103.c
  
  SMSC SCH5627 HARDWARE MONITOR DRIVER
  M:    Hans de Goede <hdegoede@redhat.com>
  L:    linux-hwmon@vger.kernel.org
  S:    Supported
 -F:    Documentation/hwmon/sch5627
 +F:    Documentation/hwmon/sch5627.rst
  F:    drivers/hwmon/sch5627.c
  
  SMSC UFX6000 and UFX7000 USB to VGA DRIVER
@@@ -14362,7 -14314,7 +14362,7 @@@ SMSC47B397 HARDWARE MONITOR DRIVE
  M:    Jean Delvare <jdelvare@suse.com>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/smsc47b397
 +F:    Documentation/hwmon/smsc47b397.rst
  F:    drivers/hwmon/smsc47b397.c
  
  SMSC911x ETHERNET DRIVER
@@@ -14520,15 -14472,16 +14520,15 @@@ T:        git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    drivers/media/i2c/imx355.c
  
 -SONY MEMORYSTICK CARD SUPPORT
 -M:    Alex Dubov <oakad@yahoo.com>
 -W:    http://tifmxx.berlios.de/
 -S:    Maintained
 -F:    drivers/memstick/host/tifm_ms.c
 -
 -SONY MEMORYSTICK STANDARD SUPPORT
 +SONY MEMORYSTICK SUBSYSTEM
  M:    Maxim Levitsky <maximlevitsky@gmail.com>
 +M:    Alex Dubov <oakad@yahoo.com>
 +M:    Ulf Hansson <ulf.hansson@linaro.org>
 +L:    linux-mmc@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc.git
  S:    Maintained
 -F:    drivers/memstick/core/ms_block.*
 +F:    drivers/memstick/
 +F:    include/linux/memstick.h
  
  SONY VAIO CONTROL DEVICE DRIVER
  M:    Mattia Dongili <malattia@linux.it>
@@@ -15553,11 -15506,9 +15553,11 @@@ S: Maintaine
  F:    drivers/net/ethernet/ti/cpsw*
  F:    drivers/net/ethernet/ti/davinci*
  
 -TI FLASH MEDIA INTERFACE DRIVER
 +TI FLASH MEDIA MEMORYSTICK/MMC DRIVERS
  M:    Alex Dubov <oakad@yahoo.com>
  S:    Maintained
 +W:    http://tifmxx.berlios.de/
 +F:    drivers/memstick/host/tifm_ms.c
  F:    drivers/misc/tifm*
  F:    drivers/mmc/host/tifm_sd.c
  F:    include/linux/tifm.h
@@@ -15709,7 -15660,7 +15709,7 @@@ TMP401 HARDWARE MONITOR DRIVE
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/tmp401
 +F:    Documentation/hwmon/tmp401.rst
  F:    drivers/hwmon/tmp401.c
  
  TMPFS (SHMEM FILESYSTEM)
@@@ -15742,7 -15693,7 +15742,7 @@@ M:   "Paul E. McKenney" <paulmck@linux.ib
  M:    Josh Triplett <josh@joshtriplett.org>
  L:    linux-kernel@vger.kernel.org
  S:    Supported
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev
  F:    Documentation/RCU/torture.txt
  F:    kernel/torture.c
  F:    kernel/rcu/rcutorture.c
@@@ -15984,6 -15935,12 +15984,12 @@@ F: drivers/uwb
  F:    include/linux/uwb.h
  F:    include/linux/uwb/
  
+ UNICODE SUBSYSTEM:
+ M:    Gabriel Krisman Bertazi <krisman@collabora.com>
+ L:    linux-fsdevel@vger.kernel.org
+ S:    Supported
+ F:    fs/unicode/
  UNICORE32 ARCHITECTURE:
  M:    Guan Xuetao <gxt@pku.edu.cn>
  W:    http://mprc.pku.edu.cn/~guanxuetao/linux
@@@ -16557,7 -16514,7 +16563,7 @@@ F:   drivers/char/virtio_console.
  F:    include/linux/virtio_console.h
  F:    include/uapi/linux/virtio_console.h
  
 -VIRTIO CORE, NET AND BLOCK DRIVERS
 +VIRTIO CORE AND NET DRIVERS
  M:    "Michael S. Tsirkin" <mst@redhat.com>
  M:    Jason Wang <jasowang@redhat.com>
  L:    virtualization@lists.linux-foundation.org
@@@ -16572,19 -16529,6 +16578,19 @@@ F: include/uapi/linux/virtio_*.
  F:    drivers/crypto/virtio/
  F:    mm/balloon_compaction.c
  
 +VIRTIO BLOCK AND SCSI DRIVERS
 +M:    "Michael S. Tsirkin" <mst@redhat.com>
 +M:    Jason Wang <jasowang@redhat.com>
 +R:    Paolo Bonzini <pbonzini@redhat.com>
 +R:    Stefan Hajnoczi <stefanha@redhat.com>
 +L:    virtualization@lists.linux-foundation.org
 +S:    Maintained
 +F:    drivers/block/virtio_blk.c
 +F:    drivers/scsi/virtio_scsi.c
 +F:    include/uapi/linux/virtio_blk.h
 +F:    include/uapi/linux/virtio_scsi.h
 +F:    drivers/vhost/scsi.c
 +
  VIRTIO CRYPTO DRIVER
  M:    Gonglei <arei.gonglei@huawei.com>
  L:    virtualization@lists.linux-foundation.org
@@@ -16747,7 -16691,7 +16753,7 @@@ VT1211 HARDWARE MONITOR DRIVE
  M:    Juerg Haefliger <juergh@gmail.com>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/vt1211
 +F:    Documentation/hwmon/vt1211.rst
  F:    drivers/hwmon/vt1211.c
  
  VT8231 HARDWARE MONITOR DRIVER
@@@ -16775,14 -16719,14 +16781,14 @@@ W83791D HARDWARE MONITORING DRIVE
  M:    Marc Hulsman <m.hulsman@tudelft.nl>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/w83791d
 +F:    Documentation/hwmon/w83791d.rst
  F:    drivers/hwmon/w83791d.c
  
  W83793 HARDWARE MONITORING DRIVER
  M:    Rudolf Marek <r.marek@assembler.cz>
  L:    linux-hwmon@vger.kernel.org
  S:    Maintained
 -F:    Documentation/hwmon/w83793
 +F:    Documentation/hwmon/w83793.rst
  F:    drivers/hwmon/w83793.c
  
  W83795 HARDWARE MONITORING DRIVER
@@@ -16891,7 -16835,7 +16897,7 @@@ L:   patches@opensource.cirrus.co
  T:    git https://github.com/CirrusLogic/linux-drivers.git
  W:    https://github.com/CirrusLogic/linux-drivers/wiki
  S:    Supported
 -F:    Documentation/hwmon/wm83??
 +F:    Documentation/hwmon/wm83??.rst
  F:    Documentation/devicetree/bindings/extcon/extcon-arizona.txt
  F:    Documentation/devicetree/bindings/regulator/arizona-regulator.txt
  F:    Documentation/devicetree/bindings/mfd/arizona.txt
@@@ -16981,7 -16925,7 +16987,7 @@@ M:   Tony Luck <tony.luck@intel.com
  M:    Borislav Petkov <bp@alien8.de>
  L:    linux-edac@vger.kernel.org
  S:    Maintained
 -F:    arch/x86/kernel/cpu/mcheck/*
 +F:    arch/x86/kernel/cpu/mce/*
  
  X86 MICROCODE UPDATE SUPPORT
  M:    Borislav Petkov <bp@alien8.de>
diff --combined fs/Makefile
index 5a51bc2489ba7bb55bee0594ee70dc4beb7ed187,ab21f060f6619bdaf5351e74d5770bd467759d88..c9aea23aba560c9246c4da0ce327a35f89c0790d
@@@ -13,7 -13,7 +13,7 @@@ obj-y :=      open.o read_write.o file_table
                seq_file.o xattr.o libfs.o fs-writeback.o \
                pnode.o splice.o sync.o utimes.o d_path.o \
                stack.o fs_struct.o statfs.o fs_pin.o nsfs.o \
 -              fs_types.o fs_context.o fs_parser.o
 +              fs_types.o fs_context.o fs_parser.o fsopen.o
  
  ifeq ($(CONFIG_BLOCK),y)
  obj-y +=      buffer.o block_dev.o direct-io.o mpage.o
@@@ -25,7 -25,7 +25,7 @@@ obj-$(CONFIG_PROC_FS) += proc_namespace
  
  obj-y                         += notify/
  obj-$(CONFIG_EPOLL)           += eventpoll.o
 -obj-$(CONFIG_ANON_INODES)     += anon_inodes.o
 +obj-y                         += anon_inodes.o
  obj-$(CONFIG_SIGNALFD)                += signalfd.o
  obj-$(CONFIG_TIMERFD)         += timerfd.o
  obj-$(CONFIG_EVENTFD)         += eventfd.o
@@@ -92,6 -92,7 +92,7 @@@ obj-$(CONFIG_EXPORTFS)                += exportfs
  obj-$(CONFIG_NFSD)            += nfsd/
  obj-$(CONFIG_LOCKD)           += lockd/
  obj-$(CONFIG_NLS)             += nls/
+ obj-$(CONFIG_UNICODE)         += unicode/
  obj-$(CONFIG_SYSV_FS)         += sysv/
  obj-$(CONFIG_CIFS)            += cifs/
  obj-$(CONFIG_HPFS_FS)         += hpfs/
diff --combined fs/ext4/ext4.h
index 0833b5fc0668ae74b80bd4e42c30a1afbba1e0ee,c18ab748d20d4538a5f8d5f6ffbd5f8ad883964f..ef755e5f6f2fcd19daa1dbf9d153ceb8aae552b7
@@@ -399,10 -399,11 +399,11 @@@ struct flex_groups 
  #define EXT4_EOFBLOCKS_FL             0x00400000 /* Blocks allocated beyond EOF */
  #define EXT4_INLINE_DATA_FL           0x10000000 /* Inode has inline data. */
  #define EXT4_PROJINHERIT_FL           0x20000000 /* Create with parents projid */
+ #define EXT4_CASEFOLD_FL              0x40000000 /* Casefolded file */
  #define EXT4_RESERVED_FL              0x80000000 /* reserved for ext4 lib */
  
- #define EXT4_FL_USER_VISIBLE          0x304BDFFF /* User visible flags */
- #define EXT4_FL_USER_MODIFIABLE               0x204BC0FF /* User modifiable flags */
+ #define EXT4_FL_USER_VISIBLE          0x704BDFFF /* User visible flags */
+ #define EXT4_FL_USER_MODIFIABLE               0x604BC0FF /* User modifiable flags */
  
  /* Flags we can manipulate with through EXT4_IOC_FSSETXATTR */
  #define EXT4_FL_XFLAG_VISIBLE         (EXT4_SYNC_FL | \
                           EXT4_SYNC_FL | EXT4_NODUMP_FL | EXT4_NOATIME_FL |\
                           EXT4_NOCOMPR_FL | EXT4_JOURNAL_DATA_FL |\
                           EXT4_NOTAIL_FL | EXT4_DIRSYNC_FL |\
-                          EXT4_PROJINHERIT_FL)
+                          EXT4_PROJINHERIT_FL | EXT4_CASEFOLD_FL)
  
  /* Flags that are appropriate for regular files (all but dir-specific ones). */
- #define EXT4_REG_FLMASK (~(EXT4_DIRSYNC_FL | EXT4_TOPDIR_FL))
+ #define EXT4_REG_FLMASK (~(EXT4_DIRSYNC_FL | EXT4_TOPDIR_FL | EXT4_CASEFOLD_FL))
  
  /* Flags that are appropriate for non-directories/regular files. */
  #define EXT4_OTHER_FLMASK (EXT4_NODUMP_FL | EXT4_NOATIME_FL)
@@@ -1313,7 -1314,9 +1314,9 @@@ struct ext4_super_block 
        __u8    s_first_error_time_hi;
        __u8    s_last_error_time_hi;
        __u8    s_pad[2];
-       __le32  s_reserved[96];         /* Padding to the end of the block */
+       __le16  s_encoding;             /* Filename charset encoding */
+       __le16  s_encoding_flags;       /* Filename charset encoding flags */
+       __le32  s_reserved[95];         /* Padding to the end of the block */
        __le32  s_checksum;             /* crc32c(superblock) */
  };
  
  /* Number of quota types we support */
  #define EXT4_MAXQUOTAS 3
  
+ #define EXT4_ENC_UTF8_12_1    1
+ /*
+  * Flags for ext4_sb_info.s_encoding_flags.
+  */
+ #define EXT4_ENC_STRICT_MODE_FL       (1 << 0)
+ #define ext4_has_strict_mode(sbi) \
+       (sbi->s_encoding_flags & EXT4_ENC_STRICT_MODE_FL)
  /*
   * fourth extended-fs super-block data in memory
   */
@@@ -1387,6 -1400,10 +1400,10 @@@ struct ext4_sb_info 
        struct kobject s_kobj;
        struct completion s_kobj_unregister;
        struct super_block *s_sb;
+ #ifdef CONFIG_UNICODE
+       struct unicode_map *s_encoding;
+       __u16 s_encoding_flags;
+ #endif
  
        /* Journaling */
        struct journal_s *s_journal;
@@@ -1592,9 -1609,6 +1609,6 @@@ static inline void ext4_clear_state_fla
  #define EXT4_SB(sb)   (sb)
  #endif
  
- /*
-  * Returns true if the inode is inode is encrypted
-  */
  #define NEXT_ORPHAN(inode) EXT4_I(inode)->i_dtime
  
  /*
  #define EXT4_FEATURE_INCOMPAT_LARGEDIR                0x4000 /* >2GB or 3-lvl htree */
  #define EXT4_FEATURE_INCOMPAT_INLINE_DATA     0x8000 /* data in inode */
  #define EXT4_FEATURE_INCOMPAT_ENCRYPT         0x10000
+ #define EXT4_FEATURE_INCOMPAT_CASEFOLD                0x20000
  
  extern void ext4_update_dynamic_rev(struct super_block *sb);
  
@@@ -1756,6 -1771,7 +1771,7 @@@ EXT4_FEATURE_INCOMPAT_FUNCS(csum_seed
  EXT4_FEATURE_INCOMPAT_FUNCS(largedir,         LARGEDIR)
  EXT4_FEATURE_INCOMPAT_FUNCS(inline_data,      INLINE_DATA)
  EXT4_FEATURE_INCOMPAT_FUNCS(encrypt,          ENCRYPT)
+ EXT4_FEATURE_INCOMPAT_FUNCS(casefold,         CASEFOLD)
  
  #define EXT2_FEATURE_COMPAT_SUPP      EXT4_FEATURE_COMPAT_EXT_ATTR
  #define EXT2_FEATURE_INCOMPAT_SUPP    (EXT4_FEATURE_INCOMPAT_FILETYPE| \
                                         EXT4_FEATURE_INCOMPAT_MMP | \
                                         EXT4_FEATURE_INCOMPAT_INLINE_DATA | \
                                         EXT4_FEATURE_INCOMPAT_ENCRYPT | \
+                                        EXT4_FEATURE_INCOMPAT_CASEFOLD | \
                                         EXT4_FEATURE_INCOMPAT_CSUM_SEED | \
                                         EXT4_FEATURE_INCOMPAT_LARGEDIR)
  #define EXT4_FEATURE_RO_COMPAT_SUPP   (EXT4_FEATURE_RO_COMPAT_SPARSE_SUPER| \
@@@ -2024,6 -2041,7 +2041,6 @@@ static inline u32 ext4_chksum(struct ex
        BUG_ON(crypto_shash_descsize(sbi->s_chksum_driver)!=sizeof(desc.ctx));
  
        desc.shash.tfm = sbi->s_chksum_driver;
 -      desc.shash.flags = 0;
        *(u32 *)desc.ctx = crc;
  
        BUG_ON(crypto_shash_update(&desc.shash, address, length));
@@@ -2376,8 -2394,8 +2393,8 @@@ extern int ext4_check_all_de(struct ino
  extern int ext4_sync_file(struct file *, loff_t, loff_t, int);
  
  /* hash.c */
- extern int ext4fs_dirhash(const char *name, int len, struct
-                         dx_hash_info *hinfo);
+ extern int ext4fs_dirhash(const struct inode *dir, const char *name, int len,
+                         struct dx_hash_info *hinfo);
  
  /* ialloc.c */
  extern struct inode *__ext4_new_inode(handle_t *, struct inode *, umode_t,
@@@ -2973,6 -2991,10 +2990,10 @@@ static inline void ext4_unlock_group(st
  /* dir.c */
  extern const struct file_operations ext4_dir_operations;
  
+ #ifdef CONFIG_UNICODE
+ extern const struct dentry_operations ext4_dentry_ops;
+ #endif
  /* file.c */
  extern const struct inode_operations ext4_file_inode_operations;
  extern const struct file_operations ext4_file_operations;
@@@ -3065,6 -3087,10 +3086,10 @@@ extern void initialize_dirent_tail(stru
  extern int ext4_handle_dirty_dirent_node(handle_t *handle,
                                         struct inode *inode,
                                         struct buffer_head *bh);
+ extern int ext4_ci_compare(const struct inode *parent,
+                          const struct qstr *name,
+                          const struct qstr *entry);
  #define S_SHIFT 12
  static const unsigned char ext4_type_by_mode[(S_IFMT >> S_SHIFT) + 1] = {
        [S_IFREG >> S_SHIFT]    = EXT4_FT_REG_FILE,
diff --combined fs/ext4/readpage.c
index 3629a74b7f947bd68ac695456df877f95882b732,9386b0446afb3ff7b77e17b8e31855c5d4eef84b..2a39c7cb144199b5978c6d0ef5847e48fb9fd291
@@@ -71,6 -71,7 +71,6 @@@ static inline bool ext4_bio_encrypted(s
  static void mpage_end_io(struct bio *bio)
  {
        struct bio_vec *bv;
 -      int i;
        struct bvec_iter_all iter_all;
  
        if (ext4_bio_encrypted(bio)) {
@@@ -81,7 -82,7 +81,7 @@@
                        return;
                }
        }
 -      bio_for_each_segment_all(bv, bio, i, iter_all) {
 +      bio_for_each_segment_all(bv, bio, iter_all) {
                struct page *page = bv->bv_page;
  
                if (!bio->bi_status) {
@@@ -126,9 -127,10 +126,10 @@@ int ext4_mpage_readpages(struct address
                int fully_mapped = 1;
                unsigned first_hole = blocks_per_page;
  
-               prefetchw(&page->flags);
                if (pages) {
                        page = lru_to_page(pages);
+                       prefetchw(&page->flags);
                        list_del(&page->lru);
                        if (add_to_page_cache_lru(page, mapping, page->index,
                                  readahead_gfp_mask(mapping)))
diff --combined fs/ext4/resize.c
index 38faf661e237a967169ad9afff301581580c4e25,4d5c0fc9d23a78533ed6fcca349f03550e1c2521..c0e9aef376a73723130c1c56526338150a0cc79b
@@@ -874,6 -874,7 +874,7 @@@ static int add_new_gdb(handle_t *handle
        err = ext4_handle_dirty_metadata(handle, NULL, gdb_bh);
        if (unlikely(err)) {
                ext4_std_error(sb, err);
+               iloc.bh = NULL;
                goto errout;
        }
        brelse(dind);
@@@ -1760,6 -1761,8 +1761,6 @@@ int ext4_group_extend(struct super_bloc
                ext4_msg(sb, KERN_ERR,
                         "filesystem too large to resize to %llu blocks safely",
                         n_blocks_count);
 -              if (sizeof(sector_t) < 8)
 -                      ext4_warning(sb, "CONFIG_LBDAF not enabled");
                return -EINVAL;
        }
  
diff --combined fs/ext4/super.c
index 0e63069b9d5bd75cb781c32912957ca36d3cc6f3,fc6fa2c93e77c193939d095435a84fc188c53479..3681cb737e9d938585e902af4b5a21511c968c2e
@@@ -42,6 -42,7 +42,7 @@@
  #include <linux/cleancache.h>
  #include <linux/uaccess.h>
  #include <linux/iversion.h>
+ #include <linux/unicode.h>
  
  #include <linux/kthread.h>
  #include <linux/freezer.h>
@@@ -1054,6 -1055,9 +1055,9 @@@ static void ext4_put_super(struct super
                crypto_free_shash(sbi->s_chksum_driver);
        kfree(sbi->s_blockgroup_lock);
        fs_put_dax(sbi->s_daxdev);
+ #ifdef CONFIG_UNICODE
+       utf8_unload(sbi->s_encoding);
+ #endif
        kfree(sbi);
  }
  
@@@ -1107,8 -1111,9 +1111,8 @@@ static int ext4_drop_inode(struct inod
        return drop;
  }
  
 -static void ext4_i_callback(struct rcu_head *head)
 +static void ext4_free_in_core_inode(struct inode *inode)
  {
 -      struct inode *inode = container_of(head, struct inode, i_rcu);
        kmem_cache_free(ext4_inode_cachep, EXT4_I(inode));
  }
  
@@@ -1123,6 -1128,7 +1127,6 @@@ static void ext4_destroy_inode(struct i
                                true);
                dump_stack();
        }
 -      call_rcu(&inode->i_rcu, ext4_i_callback);
  }
  
  static void init_once(void *foo)
@@@ -1400,7 -1406,6 +1404,7 @@@ static const struct quotactl_ops ext4_q
  
  static const struct super_operations ext4_sops = {
        .alloc_inode    = ext4_alloc_inode,
 +      .free_inode     = ext4_free_in_core_inode,
        .destroy_inode  = ext4_destroy_inode,
        .write_inode    = ext4_write_inode,
        .dirty_inode    = ext4_dirty_inode,
@@@ -1749,6 -1754,36 +1753,36 @@@ static const struct mount_opts 
        {Opt_err, 0, 0}
  };
  
+ #ifdef CONFIG_UNICODE
+ static const struct ext4_sb_encodings {
+       __u16 magic;
+       char *name;
+       char *version;
+ } ext4_sb_encoding_map[] = {
+       {EXT4_ENC_UTF8_12_1, "utf8", "12.1.0"},
+ };
+ static int ext4_sb_read_encoding(const struct ext4_super_block *es,
+                                const struct ext4_sb_encodings **encoding,
+                                __u16 *flags)
+ {
+       __u16 magic = le16_to_cpu(es->s_encoding);
+       int i;
+       for (i = 0; i < ARRAY_SIZE(ext4_sb_encoding_map); i++)
+               if (magic == ext4_sb_encoding_map[i].magic)
+                       break;
+       if (i >= ARRAY_SIZE(ext4_sb_encoding_map))
+               return -EINVAL;
+       *encoding = &ext4_sb_encoding_map[i];
+       *flags = le16_to_cpu(es->s_encoding_flags);
+       return 0;
+ }
+ #endif
  static int handle_mount_opt(struct super_block *sb, char *opt, int token,
                            substring_t *args, unsigned long *journal_devnum,
                            unsigned int *journal_ioprio, int is_remount)
@@@ -2705,9 -2740,13 +2739,9 @@@ static loff_t ext4_max_size(int blkbits
        loff_t res;
        loff_t upper_limit = MAX_LFS_FILESIZE;
  
 -      /* small i_blocks in vfs inode? */
 -      if (!has_huge_files || sizeof(blkcnt_t) < sizeof(u64)) {
 -              /*
 -               * CONFIG_LBDAF is not enabled implies the inode
 -               * i_block represent total blocks in 512 bytes
 -               * 32 == size of vfs inode i_blocks * 8
 -               */
 +      BUILD_BUG_ON(sizeof(blkcnt_t) < sizeof(u64));
 +
 +      if (!has_huge_files) {
                upper_limit = (1LL << 32) - 1;
  
                /* total blocks in file system block size */
@@@ -2748,11 -2787,11 +2782,11 @@@ static loff_t ext4_max_bitmap_size(int 
         * number of 512-byte sectors of the file.
         */
  
 -      if (!has_huge_files || sizeof(blkcnt_t) < sizeof(u64)) {
 +      if (!has_huge_files) {
                /*
 -               * !has_huge_files or CONFIG_LBDAF not enabled implies that
 -               * the inode i_block field represents total file blocks in
 -               * 2^32 512-byte sectors == size of vfs inode i_blocks * 8
 +               * !has_huge_files or implies that the inode i_block field
 +               * represents total file blocks in 2^32 512-byte sectors ==
 +               * size of vfs inode i_blocks * 8
                 */
                upper_limit = (1LL << 32) - 1;
  
@@@ -2875,6 -2914,15 +2909,15 @@@ static int ext4_feature_set_ok(struct s
                return 0;
        }
  
+ #ifndef CONFIG_UNICODE
+       if (ext4_has_feature_casefold(sb)) {
+               ext4_msg(sb, KERN_ERR,
+                        "Filesystem with casefold feature cannot be "
+                        "mounted without CONFIG_UNICODE");
+               return 0;
+       }
+ #endif
        if (readonly)
                return 1;
  
                                ~EXT4_FEATURE_RO_COMPAT_SUPP));
                return 0;
        }
 -      /*
 -       * Large file size enabled file system can only be mounted
 -       * read-write on 32-bit systems if kernel is built with CONFIG_LBDAF
 -       */
 -      if (ext4_has_feature_huge_file(sb)) {
 -              if (sizeof(blkcnt_t) < sizeof(u64)) {
 -                      ext4_msg(sb, KERN_ERR, "Filesystem with huge files "
 -                               "cannot be mounted RDWR without "
 -                               "CONFIG_LBDAF");
 -                      return 0;
 -              }
 -      }
        if (ext4_has_feature_bigalloc(sb) && !ext4_has_feature_extents(sb)) {
                ext4_msg(sb, KERN_ERR,
                         "Can't support bigalloc feature without "
@@@ -3496,6 -3556,37 +3539,37 @@@ int ext4_calculate_overhead(struct supe
        return 0;
  }
  
+ static void ext4_clamp_want_extra_isize(struct super_block *sb)
+ {
+       struct ext4_sb_info *sbi = EXT4_SB(sb);
+       struct ext4_super_block *es = sbi->s_es;
+       /* determine the minimum size of new large inodes, if present */
+       if (sbi->s_inode_size > EXT4_GOOD_OLD_INODE_SIZE &&
+           sbi->s_want_extra_isize == 0) {
+               sbi->s_want_extra_isize = sizeof(struct ext4_inode) -
+                                                    EXT4_GOOD_OLD_INODE_SIZE;
+               if (ext4_has_feature_extra_isize(sb)) {
+                       if (sbi->s_want_extra_isize <
+                           le16_to_cpu(es->s_want_extra_isize))
+                               sbi->s_want_extra_isize =
+                                       le16_to_cpu(es->s_want_extra_isize);
+                       if (sbi->s_want_extra_isize <
+                           le16_to_cpu(es->s_min_extra_isize))
+                               sbi->s_want_extra_isize =
+                                       le16_to_cpu(es->s_min_extra_isize);
+               }
+       }
+       /* Check if enough inode space is available */
+       if (EXT4_GOOD_OLD_INODE_SIZE + sbi->s_want_extra_isize >
+                                                       sbi->s_inode_size) {
+               sbi->s_want_extra_isize = sizeof(struct ext4_inode) -
+                                                      EXT4_GOOD_OLD_INODE_SIZE;
+               ext4_msg(sb, KERN_INFO,
+                        "required extra inode space not available");
+       }
+ }
  static void ext4_set_resv_clusters(struct super_block *sb)
  {
        ext4_fsblk_t resv_clusters;
@@@ -3722,6 -3813,43 +3796,43 @@@ static int ext4_fill_super(struct super
                           &journal_ioprio, 0))
                goto failed_mount;
  
+ #ifdef CONFIG_UNICODE
+       if (ext4_has_feature_casefold(sb) && !sbi->s_encoding) {
+               const struct ext4_sb_encodings *encoding_info;
+               struct unicode_map *encoding;
+               __u16 encoding_flags;
+               if (ext4_has_feature_encrypt(sb)) {
+                       ext4_msg(sb, KERN_ERR,
+                                "Can't mount with encoding and encryption");
+                       goto failed_mount;
+               }
+               if (ext4_sb_read_encoding(es, &encoding_info,
+                                         &encoding_flags)) {
+                       ext4_msg(sb, KERN_ERR,
+                                "Encoding requested by superblock is unknown");
+                       goto failed_mount;
+               }
+               encoding = utf8_load(encoding_info->version);
+               if (IS_ERR(encoding)) {
+                       ext4_msg(sb, KERN_ERR,
+                                "can't mount with superblock charset: %s-%s "
+                                "not supported by the kernel. flags: 0x%x.",
+                                encoding_info->name, encoding_info->version,
+                                encoding_flags);
+                       goto failed_mount;
+               }
+               ext4_msg(sb, KERN_INFO,"Using encoding defined by superblock: "
+                        "%s-%s with flags 0x%hx", encoding_info->name,
+                        encoding_info->version?:"\b", encoding_flags);
+               sbi->s_encoding = encoding;
+               sbi->s_encoding_flags = encoding_flags;
+       }
+ #endif
        if (test_opt(sb, DATA_FLAGS) == EXT4_MOUNT_JOURNAL_DATA) {
                printk_once(KERN_WARNING "EXT4-fs: Warning: mounting "
                            "with data=journal disables delayed "
        if (err) {
                ext4_msg(sb, KERN_ERR, "filesystem"
                         " too large to mount safely on this system");
 -              if (sizeof(sector_t) < 8)
 -                      ext4_msg(sb, KERN_WARNING, "CONFIG_LBDAF not enabled");
                goto failed_mount;
        }
  
                                 "data=, fs mounted w/o journal");
                        goto failed_mount_wq;
                }
-               sbi->s_def_mount_opt &= EXT4_MOUNT_JOURNAL_CHECKSUM;
+               sbi->s_def_mount_opt &= ~EXT4_MOUNT_JOURNAL_CHECKSUM;
                clear_opt(sb, JOURNAL_CHECKSUM);
                clear_opt(sb, DATA_FLAGS);
                sbi->s_journal = NULL;
@@@ -4354,6 -4484,12 +4465,12 @@@ no_journal
                iput(root);
                goto failed_mount4;
        }
+ #ifdef CONFIG_UNICODE
+       if (sbi->s_encoding)
+               sb->s_d_op = &ext4_dentry_ops;
+ #endif
        sb->s_root = d_make_root(root);
        if (!sb->s_root) {
                ext4_msg(sb, KERN_ERR, "get root dentry failed");
        } else if (ret)
                goto failed_mount4a;
  
-       /* determine the minimum size of new large inodes, if present */
-       if (sbi->s_inode_size > EXT4_GOOD_OLD_INODE_SIZE &&
-           sbi->s_want_extra_isize == 0) {
-               sbi->s_want_extra_isize = sizeof(struct ext4_inode) -
-                                                    EXT4_GOOD_OLD_INODE_SIZE;
-               if (ext4_has_feature_extra_isize(sb)) {
-                       if (sbi->s_want_extra_isize <
-                           le16_to_cpu(es->s_want_extra_isize))
-                               sbi->s_want_extra_isize =
-                                       le16_to_cpu(es->s_want_extra_isize);
-                       if (sbi->s_want_extra_isize <
-                           le16_to_cpu(es->s_min_extra_isize))
-                               sbi->s_want_extra_isize =
-                                       le16_to_cpu(es->s_min_extra_isize);
-               }
-       }
-       /* Check if enough inode space is available */
-       if (EXT4_GOOD_OLD_INODE_SIZE + sbi->s_want_extra_isize >
-                                                       sbi->s_inode_size) {
-               sbi->s_want_extra_isize = sizeof(struct ext4_inode) -
-                                                      EXT4_GOOD_OLD_INODE_SIZE;
-               ext4_msg(sb, KERN_INFO, "required extra inode space not"
-                        "available");
-       }
+       ext4_clamp_want_extra_isize(sb);
  
        ext4_set_resv_clusters(sb);
  
@@@ -4559,6 -4672,11 +4653,11 @@@ failed_mount2
  failed_mount:
        if (sbi->s_chksum_driver)
                crypto_free_shash(sbi->s_chksum_driver);
+ #ifdef CONFIG_UNICODE
+       utf8_unload(sbi->s_encoding);
+ #endif
  #ifdef CONFIG_QUOTA
        for (i = 0; i < EXT4_MAXQUOTAS; i++)
                kfree(sbi->s_qf_names[i]);
@@@ -5175,6 -5293,8 +5274,8 @@@ static int ext4_remount(struct super_bl
                goto restore_opts;
        }
  
+       ext4_clamp_want_extra_isize(sb);
        if ((old_opts.s_mount_opt & EXT4_MOUNT_JOURNAL_CHECKSUM) ^
            test_opt(sb, JOURNAL_CHECKSUM)) {
                ext4_msg(sb, KERN_ERR, "changing journal_checksum "
diff --combined include/linux/fs.h
index 0fa5b47509d5a58b5d59b056c80f4eff4d2d07c4,6261090e605bdde11e0cdf2acd42677c18bcf574..f7fdfe93e25d3e94cc4bc7b053ead12667607cc9
@@@ -158,20 -158,14 +158,20 @@@ typedef int (dio_iodone_t)(struct kioc
  #define FMODE_OPENED          ((__force fmode_t)0x80000)
  #define FMODE_CREATED         ((__force fmode_t)0x100000)
  
 +/* File is stream-like */
 +#define FMODE_STREAM          ((__force fmode_t)0x200000)
 +
  /* File was opened by fanotify and shouldn't generate fanotify events */
  #define FMODE_NONOTIFY                ((__force fmode_t)0x4000000)
  
  /* File is capable of returning -EAGAIN if I/O will block */
 -#define FMODE_NOWAIT  ((__force fmode_t)0x8000000)
 +#define FMODE_NOWAIT          ((__force fmode_t)0x8000000)
 +
 +/* File represents mount that needs unmounting */
 +#define FMODE_NEED_UNMOUNT    ((__force fmode_t)0x10000000)
  
  /* File does not contribute to nr_files count */
 -#define FMODE_NOACCOUNT       ((__force fmode_t)0x20000000)
 +#define FMODE_NOACCOUNT               ((__force fmode_t)0x20000000)
  
  /*
   * Flag for rw_copy_check_uvector and compat_rw_copy_check_uvector
@@@ -697,10 -691,7 +697,10 @@@ struct inode 
  #ifdef CONFIG_IMA
        atomic_t                i_readcount; /* struct files open RO */
  #endif
 -      const struct file_operations    *i_fop; /* former ->i_op->default_file_ops */
 +      union {
 +              const struct file_operations    *i_fop; /* former ->i_op->default_file_ops */
 +              void (*free_inode)(struct inode *);
 +      };
        struct file_lock_context        *i_flctx;
        struct address_space    i_data;
        struct list_head        i_devices;
@@@ -975,6 -966,7 +975,6 @@@ static inline struct file *get_file(str
  #define get_file_rcu_many(x, cnt)     \
        atomic_long_add_unless(&(x)->f_count, (cnt), 0)
  #define get_file_rcu(x) get_file_rcu_many((x), 1)
 -#define fput_atomic(x)        atomic_long_add_unless(&(x)->f_count, -1, 1)
  #define file_count(x) atomic_long_read(&(x)->f_count)
  
  #define       MAX_NON_LFS     ((1UL<<31) - 1)
@@@ -1098,7 -1090,6 +1098,7 @@@ struct file_lock 
                struct {
                        struct list_head link;  /* link in AFS vnode's pending_locks list */
                        int state;              /* state of grant or error if -ve */
 +                      unsigned int    debug_id;
                } afs;
        } fl_u;
  } __randomize_layout;
@@@ -1909,7 -1900,6 +1909,7 @@@ extern loff_t vfs_dedupe_file_range_one
  struct super_operations {
        struct inode *(*alloc_inode)(struct super_block *sb);
        void (*destroy_inode)(struct inode *);
 +      void (*free_inode)(struct inode *);
  
        void (*dirty_inode) (struct inode *, int flags);
        int (*write_inode) (struct inode *, struct writeback_control *wbc);
  #define S_DAX         0       /* Make all the DAX code disappear */
  #endif
  #define S_ENCRYPTED   16384   /* Encrypted file (using fs/crypto/) */
+ #define S_CASEFOLD    32768   /* Casefolded file */
  
  /*
   * Note that nosuid etc flags are inode-specific: setting some file-system
@@@ -2003,6 -1994,7 +2004,7 @@@ static inline bool sb_rdonly(const stru
  #define IS_NOSEC(inode)               ((inode)->i_flags & S_NOSEC)
  #define IS_DAX(inode)         ((inode)->i_flags & S_DAX)
  #define IS_ENCRYPTED(inode)   ((inode)->i_flags & S_ENCRYPTED)
+ #define IS_CASEFOLDED(inode)  ((inode)->i_flags & S_CASEFOLD)
  
  #define IS_WHITEOUT(inode)    (S_ISCHR(inode->i_mode) && \
                                 (inode)->i_rdev == WHITEOUT_DEV)
@@@ -2792,9 -2784,6 +2794,9 @@@ extern int vfs_fsync_range(struct file 
                           int datasync);
  extern int vfs_fsync(struct file *file, int datasync);
  
 +extern int sync_file_range(struct file *file, loff_t offset, loff_t nbytes,
 +                              unsigned int flags);
 +
  /*
   * Sync the bytes written if this was a synchronous write.  Expect ki_pos
   * to already be updated for the write, and will return either the amount
@@@ -3087,7 -3076,6 +3089,7 @@@ extern loff_t no_seek_end_llseek_size(s
  extern loff_t no_seek_end_llseek(struct file *, loff_t, int);
  extern int generic_file_open(struct inode * inode, struct file * filp);
  extern int nonseekable_open(struct inode * inode, struct file * filp);
 +extern int stream_open(struct inode * inode, struct file * filp);
  
  #ifdef CONFIG_BLOCK
  typedef void (dio_submit_t)(struct bio *bio, struct inode *inode,