Merge branch 'akpm' (patches from Andrew)
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 26 Jun 2015 16:52:05 +0000 (09:52 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 26 Jun 2015 16:52:05 +0000 (09:52 -0700)
Merge second patchbomb from Andrew Morton:

 - most of the rest of MM

 - lots of misc things

 - procfs updates

 - printk feature work

 - updates to get_maintainer, MAINTAINERS, checkpatch

 - lib/ updates

* emailed patches from Andrew Morton <akpm@linux-foundation.org>: (96 commits)
  exit,stats: /* obey this comment */
  coredump: add __printf attribute to cn_*printf functions
  coredump: use from_kuid/kgid when formatting corename
  fs/reiserfs: remove unneeded cast
  NILFS2: support NFSv2 export
  fs/befs/btree.c: remove unneeded initializations
  fs/minix: remove unneeded cast
  init/do_mounts.c: add create_dev() failure log
  kasan: remove duplicate definition of the macro KASAN_FREE_PAGE
  fs/efs: femove unneeded cast
  checkpatch: emit "NOTE: <types>" message only once after multiple files
  checkpatch: emit an error when there's a diff in a changelog
  checkpatch: validate MODULE_LICENSE content
  checkpatch: add multi-line handling for PREFER_ETHER_ADDR_COPY
  checkpatch: suggest using eth_zero_addr() and eth_broadcast_addr()
  checkpatch: fix processing of MEMSET issues
  checkpatch: suggest using ether_addr_equal*()
  checkpatch: avoid NOT_UNIFIED_DIFF errors on cover-letter.patch files
  checkpatch: remove local from codespell path
  checkpatch: add --showfile to allow input via pipe to show filenames
  ...

1  2 
MAINTAINERS
fs/ext4/super.c
fs/jbd2/journal.c
fs/reiserfs/super.c
init/Kconfig

diff --combined MAINTAINERS
index a01df3088b018863074a7947ed699e9f3a8d49ab,bd96a01ce11da74a404d40141c97a421c7d5007d..5f2956c24a9c2abe6be4d7d96914b340153ad8f3
@@@ -259,7 -259,7 +259,7 @@@ S: Maintaine
  F:    drivers/platform/x86/acer-wmi.c
  
  ACPI
- M:    Rafael J. Wysocki <rjw@rjwysocki.net>
+ M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
  M:    Len Brown <lenb@kernel.org>
  L:    linux-acpi@vger.kernel.org
  W:    https://01.org/linux-acpi
@@@ -280,7 -280,7 +280,7 @@@ F: tools/power/acpi
  ACPI COMPONENT ARCHITECTURE (ACPICA)
  M:    Robert Moore <robert.moore@intel.com>
  M:    Lv Zheng <lv.zheng@intel.com>
- M:    Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+ M:    "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
  L:    linux-acpi@vger.kernel.org
  L:    devel@acpica.org
  W:    https://acpica.org/
@@@ -984,7 -984,6 +984,7 @@@ L: linux-arm-kernel@lists.infradead.or
  T:    git git://github.com/ulli-kroll/linux.git
  S:    Maintained
  F:    arch/arm/mach-gemini/
 +F:    drivers/rtc/rtc-gemini.c
  
  ARM/CSR SIRFPRIMA2 MACHINE SUPPORT
  M:    Barry Song <baohua@kernel.org>
@@@ -1244,13 -1243,6 +1244,13 @@@ W:    http://www.digriz.org.uk/ts78xx/kern
  S:    Maintained
  F:    arch/arm/mach-orion5x/ts78xx-*
  
 +ARM/Mediatek RTC DRIVER
 +M:    Eddie Huang <eddie.huang@mediatek.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +L:    linux-mediatek@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    drivers/rtc/rtc-mt6397.c
 +
  ARM/Mediatek SoC support
  M:    Matthias Brugger <matthias.bgg@gmail.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1999,14 -1991,6 +1999,14 @@@ W:    http://bcache.evilpiepirate.or
  S:    Maintained:
  F:    drivers/md/bcache/
  
 +BDISP ST MEDIA DRIVER
 +M:    Fabien Dessenne <fabien.dessenne@st.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Supported
 +F:    drivers/media/platform/sti/bdisp
 +
  BEFS FILE SYSTEM
  S:    Orphan
  F:    Documentation/filesystems/befs.txt
@@@ -2091,7 -2075,6 +2091,7 @@@ M:      Jens Axboe <axboe@kernel.dk
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git
  S:    Maintained
  F:    block/
 +F:    kernel/trace/blktrace.c
  
  BLOCK2MTD DRIVER
  M:    Joern Engel <joern@lazybastard.org>
@@@ -2515,7 -2498,7 +2515,7 @@@ F:      arch/powerpc/oprofile/*cell
  F:    arch/powerpc/platforms/cell/
  
  CEPH DISTRIBUTED FILE SYSTEM CLIENT
- M:    Yan, Zheng <zyan@redhat.com>
+ M:    "Yan, Zheng" <zyan@redhat.com>
  M:    Sage Weil <sage@redhat.com>
  L:    ceph-devel@vger.kernel.org
  W:    http://ceph.com/
@@@ -2675,14 -2658,6 +2675,14 @@@ L:    platform-driver-x86@vger.kernel.or
  S:    Supported
  F:    drivers/platform/x86/classmate-laptop.c
  
 +COBALT MEDIA DRIVER
 +M:    Hans Verkuil <hans.verkuil@cisco.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Supported
 +F:    drivers/media/pci/cobalt/
 +
  COCCINELLE/Semantic Patches (SmPL)
  M:    Julia Lawall <Julia.Lawall@lip6.fr>
  M:    Gilles Muller <Gilles.Muller@lip6.fr>
@@@ -2829,7 -2804,7 +2829,7 @@@ S:      Maintaine
  F:    drivers/net/ethernet/ti/cpmac.c
  
  CPU FREQUENCY DRIVERS
- M:    Rafael J. Wysocki <rjw@rjwysocki.net>
+ M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
  M:    Viresh Kumar <viresh.kumar@linaro.org>
  L:    linux-pm@vger.kernel.org
  S:    Maintained
@@@ -2868,7 -2843,7 +2868,7 @@@ F:      drivers/cpuidle/cpuidle-exynos.
  F:    arch/arm/mach-exynos/pm.c
  
  CPUIDLE DRIVERS
- M:    Rafael J. Wysocki <rjw@rjwysocki.net>
+ M:    "Rafael J. Wysocki" <rjw@rjwysocki.net>
  M:    Daniel Lezcano <daniel.lezcano@linaro.org>
  L:    linux-pm@vger.kernel.org
  S:    Maintained
@@@ -2954,15 -2929,6 +2954,15 @@@ S:    Maintaine
  F:    drivers/media/common/cx2341x*
  F:    include/media/cx2341x*
  
 +CX24120 MEDIA DRIVER
 +M:    Jemma Denson <jdenson@gmail.com>
 +M:    Patrick Boettcher <patrick.boettcher@posteo.de>
 +L:    linux-media@vger.kernel.org
 +W:    http://linuxtv.org/
 +Q:    http://patchwork.linuxtv.org/project/linux-media/list/
 +S:    Maintained
 +F:    drivers/media/dvb-frontends/cx24120*
 +
  CX88 VIDEO4LINUX DRIVER
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
@@@ -3370,8 -3336,6 +3370,8 @@@ F:      drivers/hwmon/dme1737.
  DMI/SMBIOS SUPPORT
  M:    Jean Delvare <jdelvare@suse.de>
  S:    Maintained
 +T:    quilt http://jdelvare.nerim.net/devel/linux/jdelvare-dmi/
 +F:    Documentation/ABI/testing/sysfs-firmware-dmi-tables
  F:    drivers/firmware/dmi-id.c
  F:    drivers/firmware/dmi_scan.c
  F:    include/linux/dmi.h
@@@ -3531,14 -3495,6 +3531,14 @@@ L:    netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/wan/dscc4.c
  
 +DT3155 MEDIA DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Odd Fixes
 +F:    drivers/media/pci/dt3155/
 +
  DVB_USB_AF9015 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
  L:    linux-media@vger.kernel.org
@@@ -4103,7 -4059,7 +4103,7 @@@ F:      include/uapi/scsi/fc
  
  FILE LOCKING (flock() and fcntl()/lockf())
  M:    Jeff Layton <jlayton@poochiereds.net>
- M:    J. Bruce Fields <bfields@fieldses.org>
+ M:    "J. Bruce Fields" <bfields@fieldses.org>
  L:    linux-fsdevel@vger.kernel.org
  S:    Maintained
  F:    include/linux/fcntl.h
@@@ -4299,7 -4255,7 +4299,7 @@@ F:      sound/soc/fsl/imx
  F:    sound/soc/fsl/mpc8610_hpcd.c
  
  FREESCALE QORIQ MANAGEMENT COMPLEX DRIVER
- M:    J. German Rivera <German.Rivera@freescale.com>
+ M:    "J. German Rivera" <German.Rivera@freescale.com>
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  F:    drivers/staging/fsl-mc/
@@@ -4581,7 -4537,7 +4581,7 @@@ S:      Maintaine
  F:    drivers/media/usb/gspca/
  
  GUID PARTITION TABLE (GPT)
- M:    Davidlohr Bueso <davidlohr@hp.com>
+ M:    Davidlohr Bueso <dave@stgolabs.net>
  L:    linux-efi@vger.kernel.org
  S:    Maintained
  F:    block/partitions/efi.*
@@@ -4593,17 -4549,6 +4593,17 @@@ T:    git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    drivers/media/usb/stk1160/
  
 +H8/300 ARCHITECTURE
 +M:    Yoshinori Sato <ysato@users.sourceforge.jp>
 +L:    uclinux-h8-devel@lists.sourceforge.jp
 +W:    http://uclinux-h8.sourceforge.jp
 +T:    git git://git.sourceforge.jp/gitroot/uclinux-h8/linux.git
 +S:    Maintained
 +F:    arch/h8300/
 +F:    drivers/clocksource/h8300_*.c
 +F:    drivers/clk/h8300/
 +F:    drivers/irqchip/irq-renesas-h8*.c
 +
  HARD DRIVE ACTIVE PROTECTION SYSTEM (HDAPS) DRIVER
  M:    Frank Seidel <frank@f-seidel.de>
  L:    platform-driver-x86@vger.kernel.org
@@@ -4871,7 -4816,7 +4871,7 @@@ S:      Maintaine
  F:    fs/hugetlbfs/
  
  Hyper-V CORE AND DRIVERS
- M:    K. Y. Srinivasan <kys@microsoft.com>
+ M:    "K. Y. Srinivasan" <kys@microsoft.com>
  M:    Haiyang Zhang <haiyangz@microsoft.com>
  L:    devel@linuxdriverproject.org
  S:    Maintained
@@@ -5233,7 -5178,7 +5233,7 @@@ K:      \b(ABS|SYN)_MT
  
  INTEL ASoC BDW/HSW DRIVERS
  M:    Jie Yang <yang.jie@linux.intel.com>
- L:    alsa-devel@alsa-project.org
+ L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  S:    Supported
  F:    sound/soc/intel/sst-haswell*
  F:    sound/soc/intel/sst-dsp*
@@@ -6475,15 -6420,6 +6475,15 @@@ W:    http://linuxtv.or
  S:    Maintained
  F:    drivers/media/radio/radio-maxiradio*
  
 +MEDIA DRIVERS FOR RENESAS - VSP1
 +M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 +L:    linux-media@vger.kernel.org
 +L:    linux-sh@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Supported
 +F:    Documentation/devicetree/bindings/media/renesas,vsp1.txt
 +F:    drivers/media/platform/vsp1/
 +
  MEDIA INPUT INFRASTRUCTURE (V4L/DVB)
  M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  P:    LinuxTV.org Project
@@@ -6825,7 -6761,7 +6825,7 @@@ F:      drivers/net/ethernet/natsemi/natsemi
  NATIVE INSTRUMENTS USB SOUND INTERFACE DRIVER
  M:    Daniel Mack <zonque@gmail.com>
  S:    Maintained
- L:    alsa-devel@alsa-project.org
+ L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  W:    http://www.native-instruments.com
  F:    sound/usb/caiaq/
  
@@@ -7243,7 -7179,7 +7243,7 @@@ F:      arch/arm/mach-omap2/prm
  OMAP AUDIO SUPPORT
  M:    Peter Ujfalusi <peter.ujfalusi@ti.com>
  M:    Jarkko Nikula <jarkko.nikula@bitmer.com>
- L:    alsa-devel@alsa-project.org (subscribers-only)
+ L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  L:    linux-omap@vger.kernel.org
  S:    Maintained
  F:    sound/soc/omap/
@@@ -7945,7 -7881,7 +7945,7 @@@ F:      include/linux/power_supply.
  F:    drivers/power/
  
  PNP SUPPORT
- M:    Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+ M:    "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
  S:    Maintained
  F:    drivers/pnp/
  
@@@ -8034,7 -7970,6 +8034,7 @@@ F:      sound/ppc/snd_ps3
  
  PS3VRAM DRIVER
  M:    Jim Paris <jim@jtan.com>
 +M:    Geoff Levand <geoff@infradead.org>
  L:    linuxppc-dev@lists.ozlabs.org
  S:    Maintained
  F:    drivers/block/ps3vram.c
@@@ -8388,7 -8323,6 +8388,7 @@@ M:      Alessandro Zummo <a.zummo@towertech.
  M:    Alexandre Belloni <alexandre.belloni@free-electrons.com>
  L:    rtc-linux@googlegroups.com
  Q:    http://patchwork.ozlabs.org/project/rtc-linux/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux.git
  S:    Maintained
  F:    Documentation/rtc.txt
  F:    drivers/rtc/
@@@ -8951,7 -8885,7 +8951,7 @@@ F:      drivers/mmc/host/sdhci-spear.
  
  SECURITY SUBSYSTEM
  M:    James Morris <james.l.morris@oracle.com>
- M:    Serge E. Hallyn <serge@hallyn.com>
+ M:    "Serge E. Hallyn" <serge@hallyn.com>
  L:    linux-security-module@vger.kernel.org (suggested Cc:)
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git
  W:    http://kernsec.org/
@@@ -9171,7 -9105,7 +9171,7 @@@ F:      arch/arm/mach-davinci
  F:    drivers/i2c/busses/i2c-davinci.c
  
  TI DAVINCI SERIES MEDIA DRIVER
- M:    Lad, Prabhakar <prabhakar.csengg@gmail.com>
+ M:    "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
@@@ -9181,7 -9115,7 +9181,7 @@@ F:      drivers/media/platform/davinci
  F:    include/media/davinci/
  
  TI AM437X VPFE DRIVER
- M:    Lad, Prabhakar <prabhakar.csengg@gmail.com>
+ M:    "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
@@@ -9190,7 -9124,7 +9190,7 @@@ S:      Maintaine
  F:    drivers/media/platform/am437x/
  
  OV2659 OMNIVISION SENSOR DRIVER
- M:    Lad, Prabhakar <prabhakar.csengg@gmail.com>
+ M:    "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
@@@ -9755,7 -9689,7 +9755,7 @@@ F:      fs/sysv
  F:    include/linux/sysv_fs.h
  
  TARGET SUBSYSTEM
- M:    Nicholas A. Bellinger <nab@linux-iscsi.org>
+ M:    "Nicholas A. Bellinger" <nab@linux-iscsi.org>
  L:    linux-scsi@vger.kernel.org
  L:    target-devel@vger.kernel.org
  W:    http://www.linux-iscsi.org
@@@ -9897,7 -9831,7 +9897,7 @@@ F:      include/linux/if_team.
  F:    include/uapi/linux/if_team.h
  
  TECHNOLOGIC SYSTEMS TS-5500 PLATFORM SUPPORT
- M:    Savoir-faire Linux Inc. <kernel@savoirfairelinux.com>
+ M:    "Savoir-faire Linux Inc." <kernel@savoirfairelinux.com>
  S:    Maintained
  F:    arch/x86/platform/ts5500/
  
@@@ -10088,12 -10022,6 +10088,12 @@@ L: netdev@vger.kernel.or
  S:    Maintained
  F:    drivers/net/ethernet/ti/netcp*
  
 +TI TAS571X FAMILY ASoC CODEC DRIVER
 +M:    Kevin Cernekee <cernekee@chromium.org>
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 +S:    Odd Fixes
 +F:    sound/soc/codecs/tas571x*
 +
  TI TWL4030 SERIES SOC CODEC DRIVER
  M:    Peter Ujfalusi <peter.ujfalusi@ti.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
diff --combined fs/ext4/super.c
index a7b4b6e1026920823a149b2f124371cba092e387,5f3c43a66937c96cef34ae091f4eb0137bb2c78c..5c787647afe2a3817dfbf49949e195218199c8f6
@@@ -24,7 -24,6 +24,7 @@@
  #include <linux/slab.h>
  #include <linux/init.h>
  #include <linux/blkdev.h>
 +#include <linux/backing-dev.h>
  #include <linux/parser.h>
  #include <linux/buffer_head.h>
  #include <linux/exportfs.h>
@@@ -592,17 -591,14 +592,17 @@@ void __ext4_msg(struct super_block *sb
        va_end(args);
  }
  
 +#define ext4_warning_ratelimit(sb)                                    \
 +              ___ratelimit(&(EXT4_SB(sb)->s_warning_ratelimit_state), \
 +                           "EXT4-fs warning")
 +
  void __ext4_warning(struct super_block *sb, const char *function,
                    unsigned int line, const char *fmt, ...)
  {
        struct va_format vaf;
        va_list args;
  
 -      if (!___ratelimit(&(EXT4_SB(sb)->s_warning_ratelimit_state),
 -                        "EXT4-fs warning"))
 +      if (!ext4_warning_ratelimit(sb))
                return;
  
        va_start(args, fmt);
        va_end(args);
  }
  
 +void __ext4_warning_inode(const struct inode *inode, const char *function,
 +                        unsigned int line, const char *fmt, ...)
 +{
 +      struct va_format vaf;
 +      va_list args;
 +
 +      if (!ext4_warning_ratelimit(inode->i_sb))
 +              return;
 +
 +      va_start(args, fmt);
 +      vaf.fmt = fmt;
 +      vaf.va = &args;
 +      printk(KERN_WARNING "EXT4-fs warning (device %s): %s:%d: "
 +             "inode #%lu: comm %s: %pV\n", inode->i_sb->s_id,
 +             function, line, inode->i_ino, current->comm, &vaf);
 +      va_end(args);
 +}
 +
  void __ext4_grp_locked_error(const char *function, unsigned int line,
                             struct super_block *sb, ext4_group_t grp,
                             unsigned long ino, ext4_fsblk_t block,
@@@ -829,7 -807,6 +829,7 @@@ static void ext4_put_super(struct super
                dump_orphan_list(sb, sbi);
        J_ASSERT(list_empty(&sbi->s_orphan));
  
 +      sync_blockdev(sb->s_bdev);
        invalidate_bdev(sb->s_bdev);
        if (sbi->journal_bdev && sbi->journal_bdev != sb->s_bdev) {
                /*
@@@ -902,8 -879,9 +902,8 @@@ static struct inode *ext4_alloc_inode(s
        atomic_set(&ei->i_unwritten, 0);
        INIT_WORK(&ei->i_rsv_conversion_work, ext4_end_io_rsv_work);
  #ifdef CONFIG_EXT4_FS_ENCRYPTION
 -      ei->i_encryption_key.mode = EXT4_ENCRYPTION_MODE_INVALID;
 +      ei->i_crypt_info = NULL;
  #endif
 -
        return &ei->vfs_inode;
  }
  
@@@ -980,10 -958,6 +980,10 @@@ void ext4_clear_inode(struct inode *ino
                jbd2_free_inode(EXT4_I(inode)->jinode);
                EXT4_I(inode)->jinode = NULL;
        }
 +#ifdef CONFIG_EXT4_FS_ENCRYPTION
 +      if (EXT4_I(inode)->i_crypt_info)
 +              ext4_free_encryption_info(inode, EXT4_I(inode)->i_crypt_info);
 +#endif
  }
  
  static struct inode *ext4_nfs_get_inode(struct super_block *sb,
@@@ -3446,7 -3420,6 +3446,6 @@@ static int ext4_fill_super(struct super
        unsigned long journal_devnum = 0;
        unsigned long def_mount_opts;
        struct inode *root;
-       char *cp;
        const char *descr;
        int ret = -ENOMEM;
        int blocksize, clustersize;
        if (sb->s_bdev->bd_part)
                sbi->s_sectors_written_start =
                        part_stat_read(sb->s_bdev->bd_part, sectors[1]);
 -#ifdef CONFIG_EXT4_FS_ENCRYPTION
 -      /* Modes of operations for file and directory encryption. */
 -      sbi->s_file_encryption_mode = EXT4_ENCRYPTION_MODE_AES_256_XTS;
 -      sbi->s_dir_encryption_mode = EXT4_ENCRYPTION_MODE_INVALID;
 -#endif
  
        /* Cleanup superblock name */
-       for (cp = sb->s_id; (cp = strchr(cp, '/'));)
-               *cp = '!';
+       strreplace(sb->s_id, '/', '!');
  
        /* -EINVAL is default */
        ret = -EINVAL;
@@@ -4088,15 -4065,7 +4086,15 @@@ no_journal
                }
        }
  
 -      if (unlikely(sbi->s_mount_flags & EXT4_MF_TEST_DUMMY_ENCRYPTION) &&
 +      if ((DUMMY_ENCRYPTION_ENABLED(sbi) ||
 +           EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_ENCRYPT)) &&
 +          (blocksize != PAGE_CACHE_SIZE)) {
 +              ext4_msg(sb, KERN_ERR,
 +                       "Unsupported blocksize for fs encryption");
 +              goto failed_mount_wq;
 +      }
 +
 +      if (DUMMY_ENCRYPTION_ENABLED(sbi) &&
            !(sb->s_flags & MS_RDONLY) &&
            !EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_ENCRYPT)) {
                EXT4_SET_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_ENCRYPT);
@@@ -4972,9 -4941,6 +4970,9 @@@ static int ext4_remount(struct super_bl
                set_task_ioprio(sbi->s_journal->j_task, journal_ioprio);
        }
  
 +      if (*flags & MS_LAZYTIME)
 +              sb->s_flags |= MS_LAZYTIME;
 +
        if ((*flags & MS_RDONLY) != (sb->s_flags & MS_RDONLY)) {
                if (sbi->s_mount_flags & EXT4_MF_FS_ABORTED) {
                        err = -EROFS;
@@@ -5442,7 -5408,6 +5440,7 @@@ static ssize_t ext4_quota_write(struct 
        struct inode *inode = sb_dqopt(sb)->files[type];
        ext4_lblk_t blk = off >> EXT4_BLOCK_SIZE_BITS(sb);
        int err, offset = off & (sb->s_blocksize - 1);
 +      int retries = 0;
        struct buffer_head *bh;
        handle_t *handle = journal_current_handle();
  
                return -EIO;
        }
  
 -      bh = ext4_bread(handle, inode, blk, 1);
 +      do {
 +              bh = ext4_bread(handle, inode, blk,
 +                              EXT4_GET_BLOCKS_CREATE |
 +                              EXT4_GET_BLOCKS_METADATA_NOFAIL);
 +      } while (IS_ERR(bh) && (PTR_ERR(bh) == -ENOSPC) &&
 +               ext4_should_retry_alloc(inode->i_sb, &retries));
        if (IS_ERR(bh))
                return PTR_ERR(bh);
        if (!bh)
@@@ -5685,7 -5645,6 +5683,7 @@@ out7
  
  static void __exit ext4_exit_fs(void)
  {
 +      ext4_exit_crypto();
        ext4_destroy_lazyinit_thread();
        unregister_as_ext2();
        unregister_as_ext3();
diff --combined fs/jbd2/journal.c
index 179d7d8733f2c1bc19da65e66b2698e7a785e17f,5c187ded12d6f54d49f8269b04919c9a6f35878e..4ff3fad4e9e3f53ba62ded94045f2062337017c0
@@@ -371,7 -371,16 +371,7 @@@ int jbd2_journal_write_metadata_buffer(
         */
        J_ASSERT_BH(bh_in, buffer_jbddirty(bh_in));
  
 -retry_alloc:
 -      new_bh = alloc_buffer_head(GFP_NOFS);
 -      if (!new_bh) {
 -              /*
 -               * Failure is not an option, but __GFP_NOFAIL is going
 -               * away; so we retry ourselves here.
 -               */
 -              congestion_wait(BLK_RW_ASYNC, HZ/50);
 -              goto retry_alloc;
 -      }
 +      new_bh = alloc_buffer_head(GFP_NOFS|__GFP_NOFAIL);
  
        /* keep subsequent assertions sane */
        atomic_set(&new_bh->b_count, 1);
@@@ -876,10 -885,9 +876,10 @@@ int jbd2_journal_get_log_tail(journal_
   *
   * Requires j_checkpoint_mutex
   */
 -void __jbd2_update_log_tail(journal_t *journal, tid_t tid, unsigned long block)
 +int __jbd2_update_log_tail(journal_t *journal, tid_t tid, unsigned long block)
  {
        unsigned long freed;
 +      int ret;
  
        BUG_ON(!mutex_is_locked(&journal->j_checkpoint_mutex));
  
         * space and if we lose sb update during power failure we'd replay
         * old transaction with possibly newly overwritten data.
         */
 -      jbd2_journal_update_sb_log_tail(journal, tid, block, WRITE_FUA);
 +      ret = jbd2_journal_update_sb_log_tail(journal, tid, block, WRITE_FUA);
 +      if (ret)
 +              goto out;
 +
        write_lock(&journal->j_state_lock);
        freed = block - journal->j_tail;
        if (block < journal->j_tail)
        journal->j_tail_sequence = tid;
        journal->j_tail = block;
        write_unlock(&journal->j_state_lock);
 +
 +out:
 +      return ret;
  }
  
  /*
@@@ -1135,7 -1137,6 +1135,6 @@@ journal_t * jbd2_journal_init_dev(struc
  {
        journal_t *journal = journal_init_common();
        struct buffer_head *bh;
-       char *p;
        int n;
  
        if (!journal)
        journal->j_blk_offset = start;
        journal->j_maxlen = len;
        bdevname(journal->j_dev, journal->j_devname);
-       p = journal->j_devname;
-       while ((p = strchr(p, '/')))
-               *p = '!';
+       strreplace(journal->j_devname, '/', '!');
        jbd2_stats_proc_init(journal);
        n = journal->j_blocksize / sizeof(journal_block_tag_t);
        journal->j_wbufsize = n;
@@@ -1202,10 -1201,7 +1199,7 @@@ journal_t * jbd2_journal_init_inode (st
        journal->j_dev = journal->j_fs_dev = inode->i_sb->s_bdev;
        journal->j_inode = inode;
        bdevname(journal->j_dev, journal->j_devname);
-       p = journal->j_devname;
-       while ((p = strchr(p, '/')))
-               *p = '!';
-       p = journal->j_devname + strlen(journal->j_devname);
+       p = strreplace(journal->j_devname, '/', '!');
        sprintf(p, "-%lu", journal->j_inode->i_ino);
        jbd_debug(1,
                  "journal %p: inode %s/%ld, size %Ld, bits %d, blksize %ld\n",
@@@ -1329,7 -1325,7 +1323,7 @@@ static int journal_reset(journal_t *jou
        return jbd2_journal_start_thread(journal);
  }
  
 -static void jbd2_write_superblock(journal_t *journal, int write_op)
 +static int jbd2_write_superblock(journal_t *journal, int write_op)
  {
        struct buffer_head *bh = journal->j_sb_buffer;
        journal_superblock_t *sb = journal->j_superblock;
                printk(KERN_ERR "JBD2: Error %d detected when updating "
                       "journal superblock for %s.\n", ret,
                       journal->j_devname);
 +              jbd2_journal_abort(journal, ret);
        }
 +
 +      return ret;
  }
  
  /**
   * Update a journal's superblock information about log tail and write it to
   * disk, waiting for the IO to complete.
   */
 -void jbd2_journal_update_sb_log_tail(journal_t *journal, tid_t tail_tid,
 +int jbd2_journal_update_sb_log_tail(journal_t *journal, tid_t tail_tid,
                                     unsigned long tail_block, int write_op)
  {
        journal_superblock_t *sb = journal->j_superblock;
 +      int ret;
  
        BUG_ON(!mutex_is_locked(&journal->j_checkpoint_mutex));
        jbd_debug(1, "JBD2: updating superblock (start %lu, seq %u)\n",
        sb->s_sequence = cpu_to_be32(tail_tid);
        sb->s_start    = cpu_to_be32(tail_block);
  
 -      jbd2_write_superblock(journal, write_op);
 +      ret = jbd2_write_superblock(journal, write_op);
 +      if (ret)
 +              goto out;
  
        /* Log is no longer empty */
        write_lock(&journal->j_state_lock);
        WARN_ON(!sb->s_sequence);
        journal->j_flags &= ~JBD2_FLUSHED;
        write_unlock(&journal->j_state_lock);
 +
 +out:
 +      return ret;
  }
  
  /**
@@@ -1957,14 -1944,7 +1951,14 @@@ int jbd2_journal_flush(journal_t *journ
                return -EIO;
  
        mutex_lock(&journal->j_checkpoint_mutex);
 -      jbd2_cleanup_journal_tail(journal);
 +      if (!err) {
 +              err = jbd2_cleanup_journal_tail(journal);
 +              if (err < 0) {
 +                      mutex_unlock(&journal->j_checkpoint_mutex);
 +                      goto out;
 +              }
 +              err = 0;
 +      }
  
        /* Finally, mark the journal as really needing no recovery.
         * This sets s_start==0 in the underlying superblock, which is
        J_ASSERT(journal->j_head == journal->j_tail);
        J_ASSERT(journal->j_tail_sequence == journal->j_transaction_sequence);
        write_unlock(&journal->j_state_lock);
 -      return 0;
 +out:
 +      return err;
  }
  
  /**
@@@ -2345,7 -2324,7 +2339,7 @@@ static int jbd2_journal_init_journal_he
        jbd2_journal_head_cache = kmem_cache_create("jbd2_journal_head",
                                sizeof(struct journal_head),
                                0,              /* offset */
 -                              SLAB_TEMPORARY, /* flags */
 +                              SLAB_TEMPORARY | SLAB_DESTROY_BY_RCU,
                                NULL);          /* ctor */
        retval = 0;
        if (!jbd2_journal_head_cache) {
@@@ -2377,8 -2356,10 +2371,8 @@@ static struct journal_head *journal_all
        if (!ret) {
                jbd_debug(1, "out of memory for journal_head\n");
                pr_notice_ratelimited("ENOMEM in %s, retrying.\n", __func__);
 -              while (!ret) {
 -                      yield();
 -                      ret = kmem_cache_zalloc(jbd2_journal_head_cache, GFP_NOFS);
 -              }
 +              ret = kmem_cache_zalloc(jbd2_journal_head_cache,
 +                              GFP_NOFS | __GFP_NOFAIL);
        }
        return ret;
  }
diff --combined fs/reiserfs/super.c
index 3e0af317fcc3eb5e9af88b8f03e00de2f0153747,d766bfac06cb9d8337d65d58d30710d8b5c9ba08..0e4cf728126f2b164b6f0b2f878d4ab26ad4dbb8
@@@ -21,7 -21,6 +21,7 @@@
  #include "xattr.h"
  #include <linux/init.h>
  #include <linux/blkdev.h>
 +#include <linux/backing-dev.h>
  #include <linux/buffer_head.h>
  #include <linux/exportfs.h>
  #include <linux/quotaops.h>
@@@ -589,8 -588,7 +589,7 @@@ static struct kmem_cache *reiserfs_inod
  static struct inode *reiserfs_alloc_inode(struct super_block *sb)
  {
        struct reiserfs_inode_info *ei;
-       ei = (struct reiserfs_inode_info *)
-           kmem_cache_alloc(reiserfs_inode_cachep, GFP_KERNEL);
+       ei = kmem_cache_alloc(reiserfs_inode_cachep, GFP_KERNEL);
        if (!ei)
                return NULL;
        atomic_set(&ei->openers, 0);
diff --combined init/Kconfig
index 7260b27ebbabeb4537bc747cc604858e070baf00,6a930b7494ef2c4b6324c32bbc90354227274b7a..f0c2e681b5069c96cac09f48c28eb34374c59c5c
@@@ -1127,15 -1127,11 +1127,16 @@@ config DEBUG_BLK_CGROU
        Enable some debugging help. Currently it exports additional stat
        files in a cgroup which can be useful for debugging.
  
 +config CGROUP_WRITEBACK
 +      bool
 +      depends on MEMCG && BLK_CGROUP
 +      default y
 +
  endif # CGROUPS
  
  config CHECKPOINT_RESTORE
        bool "Checkpoint/restore support" if EXPERT
+       select PROC_CHILDREN
        default n
        help
          Enables additional kernel features in a sake of checkpoint/restore.