)]}'
{
  "log": [
    {
      "commit": "6784725ab0b9473ce44bfad91a256bd72b5cddc1",
      "tree": "f31e2bfc4795c2ee490b0eb9fb752be58060568f",
      "parents": [
        "554828ee0db41618d101d9549db8808af9fd9d65",
        "47be61845c775643f1aa4d2a54343549f943c94c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 28 12:59:05 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 28 12:59:05 2016 -0700"
      },
      "message": "Merge branch \u0027work.misc\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs updates from Al Viro:\n \"Assorted cleanups and fixes.\n\n  Probably the most interesting part long-term is -\u003ed_init() - that will\n  have a bunch of followups in (at least) ceph and lustre, but we\u0027ll\n  need to sort the barrier-related rules before it can get used for\n  really non-trivial stuff.\n\n  Another fun thing is the merge of -\u003ed_iput() callers (dentry_iput()\n  and dentry_unlink_inode()) and a bunch of -\u003ed_compare() ones (all\n  except the one in __d_lookup_lru())\"\n\n* \u0027work.misc\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (26 commits)\n  fs/dcache.c: avoid soft-lockup in dput()\n  vfs: new d_init method\n  vfs: Update lookup_dcache() comment\n  bdev: get rid of -\u003ebd_inodes\n  Remove last traces of -\u003esync_page\n  new helper: d_same_name()\n  dentry_cmp(): use lockless_dereference() instead of smp_read_barrier_depends()\n  vfs: clean up documentation\n  vfs: document -\u003ed_real()\n  vfs: merge .d_select_inode() into .d_real()\n  unify dentry_iput() and dentry_unlink_inode()\n  binfmt_misc: -\u003es_root is not going anywhere\n  drop redundant -\u003eowner initializations\n  ufs: get rid of redundant checks\n  orangefs: constify inode_operations\n  missed comment updates from -\u003edirect_IO() prototype change\n  file_inode(f)-\u003ei_mapping is f-\u003ef_mapping\n  trim fsnotify hooks a bit\n  9p: new helper - v9fs_parent_fid()\n  debugfs: -\u003ed_parent is never NULL or negative\n  ...\n"
    },
    {
      "commit": "0e06f5c0deeef0332a5da2ecb8f1fcf3e024d958",
      "tree": "e0f0af4aadf10c713c5cf1b65356844b3c9b3215",
      "parents": [
        "f7816ad0f878dacd5f0120476f9b836ccf8699ea",
        "8f19b0c058d93a678a99dd6fec03af2e769943f2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 19:55:54 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 19:55:54 2016 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (patches from Andrew)\n\nMerge updates from Andrew Morton:\n\n - a few misc bits\n\n - ocfs2\n\n - most(?) of MM\n\n* emailed patches from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (125 commits)\n  thp: fix comments of __pmd_trans_huge_lock()\n  cgroup: remove unnecessary 0 check from css_from_id()\n  cgroup: fix idr leak for the first cgroup root\n  mm: memcontrol: fix documentation for compound parameter\n  mm: memcontrol: remove BUG_ON in uncharge_list\n  mm: fix build warnings in \u003clinux/compaction.h\u003e\n  mm, thp: convert from optimistic swapin collapsing to conservative\n  mm, thp: fix comment inconsistency for swapin readahead functions\n  thp: update Documentation/{vm/transhuge,filesystems/proc}.txt\n  shmem: split huge pages beyond i_size under memory pressure\n  thp: introduce CONFIG_TRANSPARENT_HUGE_PAGECACHE\n  khugepaged: add support of collapse for tmpfs/shmem pages\n  shmem: make shmem_inode_info::lock irq-safe\n  khugepaged: move up_read(mmap_sem) out of khugepaged_alloc_page()\n  thp: extract khugepaged from mm/huge_memory.c\n  shmem, thp: respect MADV_{NO,}HUGEPAGE for file mappings\n  shmem: add huge pages support\n  shmem: get_unmapped_area align huge page\n  shmem: prepare huge\u003d mount option and sysfs knob\n  mm, rmap: account shmem thp pages\n  ...\n"
    },
    {
      "commit": "396d10993f8d2ef410a6ca6a42724dc0211a8b42",
      "tree": "b28e4cfe46162077803e1e2d13471edf6532b722",
      "parents": [
        "59ebc44e8dac359812f317473c4f05cd1432f5d2",
        "7bc9491645118c9461bd21099c31755ff6783593"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 18:35:55 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 18:35:55 2016 -0700"
      },
      "message": "Merge tag \u0027ext4_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\nPull ext4 updates from Ted Ts\u0027o:\n \"The major change this cycle is deleting ext4\u0027s copy of the file system\n  encryption code and switching things over to using the copies in\n  fs/crypto.  I\u0027ve updated the MAINTAINERS file to add an entry for\n  fs/crypto listing Jaeguk Kim and myself as the maintainers.\n\n  There are also a number of bug fixes, most notably for some problems\n  found by American Fuzzy Lop (AFL) courtesy of Vegard Nossum.  Also\n  fixed is a writeback deadlock detected by generic/130, and some\n  potential races in the metadata checksum code\"\n\n* tag \u0027ext4_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (21 commits)\n  ext4: verify extent header depth\n  ext4: short-cut orphan cleanup on error\n  ext4: fix reference counting bug on block allocation error\n  MAINTAINRES: fs-crypto maintainers update\n  ext4 crypto: migrate into vfs\u0027s crypto engine\n  ext2: fix filesystem deadlock while reading corrupted xattr block\n  ext4: fix project quota accounting without quota limits enabled\n  ext4: validate s_reserved_gdt_blocks on mount\n  ext4: remove unused page_idx\n  ext4: don\u0027t call ext4_should_journal_data() on the journal inode\n  ext4: Fix WARN_ON_ONCE in ext4_commit_super()\n  ext4: fix deadlock during page writeback\n  ext4: correct error value of function verifying dx checksum\n  ext4: avoid modifying checksum fields directly during checksum verification\n  ext4: check for extents that wrap around\n  jbd2: make journal y2038 safe\n  jbd2: track more dependencies on transaction commit\n  jbd2: move lockdep tracking to journal_s\n  jbd2: move lockdep instrumentation for jbd2 handles\n  ext4: respect the nobarrier mount option in nojournal mode\n  ...\n"
    },
    {
      "commit": "8a5c743e308dd2b90ad10d1faaa7a1b09173a132",
      "tree": "ba679ecefc77b4a80bd35b00e55ddc1457b14e07",
      "parents": [
        "e5e3f4c4f0e95ecbad2f8d2f4f6a29bb8a90226b"
      ],
      "author": {
        "name": "Michal Hocko",
        "email": "mhocko@suse.com",
        "time": "Tue Jul 26 15:24:53 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:19:19 2016 -0700"
      },
      "message": "mm, memcg: use consistent gfp flags during readahead\n\nVladimir has noticed that we might declare memcg oom even during\nreadahead because read_pages only uses GFP_KERNEL (with mapping_gfp\nrestriction) while __do_page_cache_readahead uses\npage_cache_alloc_readahead which adds __GFP_NORETRY to prevent from\nOOMs.  This gfp mask discrepancy is really unfortunate and easily\nfixable.  Drop page_cache_alloc_readahead() which only has one user and\noutsource the gfp_mask logic into readahead_gfp_mask and propagate this\nmask from __do_page_cache_readahead down to read_pages.\n\nThis alone would have only very limited impact as most filesystems are\nimplementing -\u003ereadpages and the common implementation mpage_readpages\ndoes GFP_KERNEL (with mapping_gfp restriction) again.  We can tell it to\nuse readahead_gfp_mask instead as this function is called only during\nreadahead as well.  The same applies to read_cache_pages.\n\next4 has its own ext4_mpage_readpages but the path which has pages !\u003d\nNULL can use the same gfp mask.  Btrfs, cifs, f2fs and orangefs are\ndoing a very similar pattern to mpage_readpages so the same can be\napplied to them as well.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[mhocko@suse.com: restrict gfp mask in mpage_alloc]\n  Link: http://lkml.kernel.org/r/20160610074223.GC32285@dhcp22.suse.cz\nLink: http://lkml.kernel.org/r/1465301556-26431-1-git-send-email-mhocko@kernel.org\nSigned-off-by: Michal Hocko \u003cmhocko@suse.com\u003e\nCc: Vladimir Davydov \u003cvdavydov@parallels.com\u003e\nCc: Chris Mason \u003cclm@fb.com\u003e\nCc: Steve French \u003csfrench@samba.org\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Mike Marshall \u003chubcap@omnibond.com\u003e\nCc: Jaegeuk Kim \u003cjaegeuk@kernel.org\u003e\nCc: Changman Lee \u003ccm224.lee@samsung.com\u003e\nCc: Chao Yu \u003cyuchao0@huawei.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6b524995a71d49ae032dba308d117dbf2a18d175",
      "tree": "27d01b429b1f4fa92afec2adda233f1e1eab63d5",
      "parents": [
        "221c7dc881b3a2a6267d6246f8aca072514e98c0"
      ],
      "author": {
        "name": "Ross Zwisler",
        "email": "ross.zwisler@linux.intel.com",
        "time": "Tue Jul 26 15:21:05 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:19:19 2016 -0700"
      },
      "message": "dax: remote unused fault wrappers\n\nRemove the unused wrappers dax_fault() and dax_pmd_fault().  After this\nremoval, rename __dax_fault() and __dax_pmd_fault() to dax_fault() and\ndax_pmd_fault() respectively, and update all callers.\n\nThe dax_fault() and dax_pmd_fault() wrappers were initially intended to\ncapture some filesystem independent functionality around page faults\n(calling sb_start_pagefault() \u0026 sb_end_pagefault(), updating file mtime\nand ctime).\n\nHowever, the following commits:\n\n   5726b27b09cc (\"ext2: Add locking for DAX faults\")\n   ea3d7209ca01 (\"ext4: fix races between page faults and hole punching\")\n\nadded locking to the ext2 and ext4 filesystems after these common\noperations but before __dax_fault() and __dax_pmd_fault() were called.\nThis means that these wrappers are no longer used, and are unlikely to\nbe used in the future.\n\nXFS has had locking analogous to what was recently added to ext2 and\next4 since DAX support was initially introduced by:\n\n   6b698edeeef0 (\"xfs: add DAX file operations support\")\n\nLink: http://lkml.kernel.org/r/20160714214049.20075-2-ross.zwisler@linux.intel.com\nSigned-off-by: Ross Zwisler \u003cross.zwisler@linux.intel.com\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andreas Dilger \u003cadilger.kernel@dilger.ca\u003e\nCc: Dan Williams \u003cdan.j.williams@intel.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: Jonathan Corbet \u003ccorbet@lwn.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7bc9491645118c9461bd21099c31755ff6783593",
      "tree": "5719fbb9a8fd3a1c135465ae625d7d127b6814d8",
      "parents": [
        "c65d5c6c81a1f27dec5f627f67840726fcd146de"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@oracle.com",
        "time": "Fri Jul 15 00:22:07 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 15 00:22:07 2016 -0400"
      },
      "message": "ext4: verify extent header depth\n\nAlthough the extent tree depth of 5 should enough be for the worst\ncase of 2*32 extents of length 1, the extent tree code does not\ncurrently to merge nodes which are less than half-full with a sibling\nnode, or to shrink the tree depth if possible.  So it\u0027s possible, at\nleast in theory, for the tree depth to be greater than 5.  However,\neven in the worst case, a tree depth of 32 is highly unlikely, and if\nthe file system is maliciously corrupted, an insanely large eh_depth\ncan cause memory allocation failures that will trigger kernel warnings\n(here, eh_depth \u003d 65280):\n\n    JBD2: ext4.exe wants too many credits credits:195849 rsv_credits:0 max:256\n    ------------[ cut here ]------------\n    WARNING: CPU: 0 PID: 50 at fs/jbd2/transaction.c:293 start_this_handle+0x569/0x580\n    CPU: 0 PID: 50 Comm: ext4.exe Not tainted 4.7.0-rc5+ #508\n    Stack:\n     604a8947 625badd8 0002fd09 00000000\n     60078643 00000000 62623910 601bf9bc\n     62623970 6002fc84 626239b0 900000125\n    Call Trace:\n     [\u003c6001c2dc\u003e] show_stack+0xdc/0x1a0\n     [\u003c601bf9bc\u003e] dump_stack+0x2a/0x2e\n     [\u003c6002fc84\u003e] __warn+0x114/0x140\n     [\u003c6002fdff\u003e] warn_slowpath_null+0x1f/0x30\n     [\u003c60165829\u003e] start_this_handle+0x569/0x580\n     [\u003c60165d4e\u003e] jbd2__journal_start+0x11e/0x220\n     [\u003c60146690\u003e] __ext4_journal_start_sb+0x60/0xa0\n     [\u003c60120a81\u003e] ext4_truncate+0x131/0x3a0\n     [\u003c60123677\u003e] ext4_setattr+0x757/0x840\n     [\u003c600d5d0f\u003e] notify_change+0x16f/0x2a0\n     [\u003c600b2b16\u003e] do_truncate+0x76/0xc0\n     [\u003c600c3e56\u003e] path_openat+0x806/0x1300\n     [\u003c600c55c9\u003e] do_filp_open+0x89/0xf0\n     [\u003c600b4074\u003e] do_sys_open+0x134/0x1e0\n     [\u003c600b4140\u003e] SyS_open+0x20/0x30\n     [\u003c6001ea68\u003e] handle_syscall+0x88/0x90\n     [\u003c600295fd\u003e] userspace+0x3fd/0x500\n     [\u003c6001ac55\u003e] fork_handler+0x85/0x90\n\n    ---[ end trace 08b0b88b6387a244 ]---\n\n[ Commit message modified and the extent tree depath check changed\nfrom 5 to 32 -- tytso ]\n\nCc: Darrick J. Wong \u003cdarrick.wong@oracle.com\u003e\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@oracle.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c65d5c6c81a1f27dec5f627f67840726fcd146de",
      "tree": "49a39173dfb7c5c1e511a6d36452cb1f0ebf51cd",
      "parents": [
        "554a5ccc4e4a20c5f3ec859de0842db4b4b9c77e"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@oracle.com",
        "time": "Thu Jul 14 23:21:35 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Jul 14 23:21:35 2016 -0400"
      },
      "message": "ext4: short-cut orphan cleanup on error\n\nIf we encounter a filesystem error during orphan cleanup, we should stop.\nOtherwise, we may end up in an infinite loop where the same inode is\nprocessed again and again.\n\n    EXT4-fs (loop0): warning: checktime reached, running e2fsck is recommended\n    EXT4-fs error (device loop0): ext4_mb_generate_buddy:758: group 2, block bitmap and bg descriptor inconsistent: 6117 vs 0 free clusters\n    Aborting journal on device loop0-8.\n    EXT4-fs (loop0): Remounting filesystem read-only\n    EXT4-fs error (device loop0) in ext4_free_blocks:4895: Journal has aborted\n    EXT4-fs error (device loop0) in ext4_do_update_inode:4893: Journal has aborted\n    EXT4-fs error (device loop0) in ext4_do_update_inode:4893: Journal has aborted\n    EXT4-fs error (device loop0) in ext4_ext_remove_space:3068: IO failure\n    EXT4-fs error (device loop0) in ext4_ext_truncate:4667: Journal has aborted\n    EXT4-fs error (device loop0) in ext4_orphan_del:2927: Journal has aborted\n    EXT4-fs error (device loop0) in ext4_do_update_inode:4893: Journal has aborted\n    EXT4-fs (loop0): Inode 16 (00000000618192a0): orphan list check failed!\n    [...]\n    EXT4-fs (loop0): Inode 16 (0000000061819748): orphan list check failed!\n    [...]\n    EXT4-fs (loop0): Inode 16 (0000000061819bf0): orphan list check failed!\n    [...]\n\nSee-also: c9eb13a9105 (\"ext4: fix hang when processing corrupted orphaned inode list\")\nCc: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@oracle.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "554a5ccc4e4a20c5f3ec859de0842db4b4b9c77e",
      "tree": "eabafe736e7e667f02a1e7b6f8a0e1721099beb7",
      "parents": [
        "598c7d7abc832e35677b851f6afb93141c09993b"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@oracle.com",
        "time": "Thu Jul 14 23:02:47 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Jul 14 23:02:47 2016 -0400"
      },
      "message": "ext4: fix reference counting bug on block allocation error\n\nIf we hit this error when mounted with errors\u003dcontinue or\nerrors\u003dremount-ro:\n\n    EXT4-fs error (device loop0): ext4_mb_mark_diskspace_used:2940: comm ext4.exe: Allocating blocks 5090-6081 which overlap fs metadata\n\nthen ext4_mb_new_blocks() will call ext4_mb_release_context() and try to\ncontinue. However, ext4_mb_release_context() is the wrong thing to call\nhere since we are still actually using the allocation context.\n\nInstead, just error out. We could retry the allocation, but there is a\npossibility of getting stuck in an infinite loop instead, so this seems\nsafer.\n\n[ Fixed up so we don\u0027t return EAGAIN to userspace. --tytso ]\n\nFixes: 8556e8f3b6 (\"ext4: Don\u0027t allow new groups to be added during block allocation\")\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@oracle.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "a7550b30ab709ffb9bbe48669adf7d8556f3698f",
      "tree": "5ed986d93b2df41cad68bdfa0851604bb039d1d1",
      "parents": [
        "ff0031d848a0cd7002606f9feef958de8d5edf19"
      ],
      "author": {
        "name": "Jaegeuk Kim",
        "email": "jaegeuk@kernel.org",
        "time": "Sun Jul 10 14:01:03 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 10 14:01:03 2016 -0400"
      },
      "message": "ext4 crypto: migrate into vfs\u0027s crypto engine\n\nThis patch removes the most parts of internal crypto codes.\nAnd then, it modifies and adds some ext4-specific crypt codes to use the generic\nfacility.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk@kernel.org\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "079788d01e7ba9d7366d7bd2a0db9cab5944e85b",
      "tree": "edadef9bd88b7f49d8304bf23ce705feacd14409",
      "parents": [
        "5b9554dc5bf008ae7f68a52e3d7e76c0920938a2"
      ],
      "author": {
        "name": "Wang Shilong",
        "email": "wshilong@ddn.com",
        "time": "Tue Jul 05 21:33:52 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 05 21:33:52 2016 -0400"
      },
      "message": "ext4: fix project quota accounting without quota limits enabled\n\nWe should always transfer quota accounting, regardless of whether\nquota limits are enabled.\n\nSteps to reproduce:\n  # mkfs.ext4 /dev/sda4 -O quota,project\n  # mount /dev/sda4 /mnt/test\n  # cp /bin/bash /mnt/test\n  # chattr -p 123 /mnt/test/bash\n  # quota -v -P 123\n\nSigned-off-by: Wang Shilong \u003cwshilong@ddn.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5b9554dc5bf008ae7f68a52e3d7e76c0920938a2",
      "tree": "0e77ba0fce0b9b68920ae7f7d1561ffcb690ba04",
      "parents": [
        "de9e9181bc066d63d78b768e95b5d949e2a8673a"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 05 20:01:52 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 05 20:01:52 2016 -0400"
      },
      "message": "ext4: validate s_reserved_gdt_blocks on mount\n\nIf s_reserved_gdt_blocks is extremely large, it\u0027s possible for\next4_init_block_bitmap(), which is called when ext4 sets up an\nuninitialized block bitmap, to corrupt random kernel memory.  Add the\nsame checks which e2fsck has --- it must never be larger than\nblocksize / sizeof(__u32) --- and then add a backup check in\next4_init_block_bitmap() in case the superblock gets modified after\nthe file system is mounted.\n\nReported-by: Vegard Nossum \u003cvegard.nossum@oracle.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "de9e9181bc066d63d78b768e95b5d949e2a8673a",
      "tree": "3a7035132ba567639033e75ba05f9689ae4fcd17",
      "parents": [
        "6a7fd522a7c94cdef0a3b08acf8e6702056e635c"
      ],
      "author": {
        "name": "yalin wang",
        "email": "yalin.wang2010@gmail.com",
        "time": "Tue Jul 05 16:32:32 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 05 16:32:32 2016 -0400"
      },
      "message": "ext4: remove unused page_idx\n\nSigned-off-by: yalin wang \u003cyalin.wang2010@gmail.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nReviewed-by: Jan Kara \u003cjack@suse.com\u003e\n"
    },
    {
      "commit": "6a7fd522a7c94cdef0a3b08acf8e6702056e635c",
      "tree": "38db0854a3b90a21447f7d015c6df7525e2b7ec8",
      "parents": [
        "4743f83990614af6adb09ea7aa3c37b78c4031ab"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@oracle.com",
        "time": "Mon Jul 04 11:03:00 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 04 11:03:00 2016 -0400"
      },
      "message": "ext4: don\u0027t call ext4_should_journal_data() on the journal inode\n\nIf ext4_fill_super() fails early, it\u0027s possible for ext4_evict_inode()\nto call ext4_should_journal_data() before superblock options and flags\nare fully set up.  In that case, the iput() on the journal inode can\nend up causing a BUG().\n\nWork around this problem by reordering the tests so we only call\next4_should_journal_data() after we know it\u0027s not the journal inode.\n\nFixes: 2d859db3e4 (\"ext4: fix data corruption in inodes with journalled data\")\nFixes: 2b405bfa84 (\"ext4: fix data\u003djournal fast mount/umount hang\")\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@oracle.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "4743f83990614af6adb09ea7aa3c37b78c4031ab",
      "tree": "86784086a26c2d2181270426145540310de8acd0",
      "parents": [
        "646caa9c8e196880b41cd3e3d33a2ebc752bdb85"
      ],
      "author": {
        "name": "Pranay Kr. Srivastava",
        "email": "pranjas@gmail.com",
        "time": "Mon Jul 04 10:24:52 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 04 10:24:52 2016 -0400"
      },
      "message": "ext4: Fix WARN_ON_ONCE in ext4_commit_super()\n\nIf there are racing calls to ext4_commit_super() it\u0027s possible for\nanother writeback of the superblock to result in the buffer being\nmarked with an error after we check if the buffer is marked as having\na write error and the buffer up-to-date flag is set again.  If that\nhappens mark_buffer_dirty() can end up throwing a WARN_ON_ONCE.\n\nFix this by moving this check to write before we call\nwrite_buffer_dirty(), and keeping the buffer locked during this whole\nsequence.\n\nSigned-off-by: Pranay Kr. Srivastava \u003cpranjas@gmail.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "646caa9c8e196880b41cd3e3d33a2ebc752bdb85",
      "tree": "28d3c6dcf43b1ba8e8d1b5eff334b9c07b098db2",
      "parents": [
        "fa96454069b85a7e5d10f38b7d95edcd5dc64b9a"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jul 04 10:14:01 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 04 10:14:01 2016 -0400"
      },
      "message": "ext4: fix deadlock during page writeback\n\nCommit 06bd3c36a733 (ext4: fix data exposure after a crash) uncovered a\ndeadlock in ext4_writepages() which was previously much harder to hit.\nAfter this commit xfstest generic/130 reproduces the deadlock on small\nfilesystems.\n\nThe problem happens when ext4_do_update_inode() sets LARGE_FILE feature\nand marks current inode handle as synchronous. That subsequently results\nin ext4_journal_stop() called from ext4_writepages() to block waiting for\ntransaction commit while still holding page locks, reference to io_end,\nand some prepared bio in mpd structure each of which can possibly block\ntransaction commit from completing and thus results in deadlock.\n\nFix the problem by releasing page locks, io_end reference, and\nsubmitting prepared bio before calling ext4_journal_stop().\n\n[ Changed to defer the call to ext4_journal_stop() only if the handle\n  is synchronous.  --tytso ]\n\nReported-and-tested-by: Eryu Guan \u003ceguan@redhat.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCC: stable@vger.kernel.org\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "fa96454069b85a7e5d10f38b7d95edcd5dc64b9a",
      "tree": "c3e810170e7e389b0bdd6583d0a7b2c01352d04f",
      "parents": [
        "b47820edd1634dc1208f9212b7ecfb4230610a23"
      ],
      "author": {
        "name": "Daeho Jeong",
        "email": "daeho.jeong@samsung.com",
        "time": "Sun Jul 03 21:11:08 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 03 21:11:08 2016 -0400"
      },
      "message": "ext4: correct error value of function verifying dx checksum\n\next4_dx_csum_verify() returns the success return value in two checksum\nverification failure cases. We need to set the return values to zero\nas failure like ext4_dirent_csum_verify() returning zero when failing\nto find a checksum dirent at the tail.\n\nSigned-off-by: Daeho Jeong \u003cdaeho.jeong@samsung.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nReviewed-by: Darrick J. Wong \u003cdarrick.wong@oracle.com\u003e\n"
    },
    {
      "commit": "b47820edd1634dc1208f9212b7ecfb4230610a23",
      "tree": "7d02e4756db46ae94ec43fdcd1adfd38156e34a5",
      "parents": [
        "f70749ca42943faa4d4dcce46dfdcaadb1d0c4b6"
      ],
      "author": {
        "name": "Daeho Jeong",
        "email": "daeho.jeong@samsung.com",
        "time": "Sun Jul 03 17:51:39 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 03 17:51:39 2016 -0400"
      },
      "message": "ext4: avoid modifying checksum fields directly during checksum verification\n\nWe temporally change checksum fields in buffers of some types of\nmetadata into \u00270\u0027 for verifying the checksum values. By doing this\nwithout locking the buffer, some metadata\u0027s checksums, which are\nbeing committed or written back to the storage, could be damaged.\nIn our test, several metadata blocks were found with damaged metadata\nchecksum value during recovery process. When we only verify the\nchecksum value, we have to avoid modifying checksum fields directly.\n\nSigned-off-by: Daeho Jeong \u003cdaeho.jeong@samsung.com\u003e\nSigned-off-by: Youngjin Gil \u003cyoungjin.gil@samsung.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nReviewed-by: Darrick J. Wong \u003cdarrick.wong@oracle.com\u003e\n"
    },
    {
      "commit": "f70749ca42943faa4d4dcce46dfdcaadb1d0c4b6",
      "tree": "f4f3877c9b353fb99102c10f9ac200739bb94e97",
      "parents": [
        "abcfb5d979892fc8b12574551fc907c05fe1b11b"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@oracle.com",
        "time": "Thu Jun 30 11:53:46 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Jun 30 11:53:46 2016 -0400"
      },
      "message": "ext4: check for extents that wrap around\n\nAn extent with lblock \u003d 4294967295 and len \u003d 1 will pass the\next4_valid_extent() test:\n\n\text4_lblk_t last \u003d lblock + len - 1;\n\n\tif (len \u003d\u003d 0 || lblock \u003e last)\n\t\treturn 0;\n\nsince last \u003d 4294967295 + 1 - 1 \u003d 4294967295. This would later trigger\nthe BUG_ON(es-\u003ees_lblk + es-\u003ees_len \u003c es-\u003ees_lblk) in ext4_es_end().\n\nWe can simplify it by removing the - 1 altogether and changing the test\nto use lblock + len \u003c\u003d lblock, since now if len \u003d 0, then lblock + 0 \u003d\u003d\nlblock and it fails, and if len \u003e 0 then lblock + len \u003e lblock in order\nto pass (i.e. it doesn\u0027t overflow).\n\nFixes: 5946d0893 (\"ext4: check for overlapping extents in ext4_valid_extent_entries()\")\nFixes: 2f974865f (\"ext4: check for zero length extent explicitly\")\nCc: Eryu Guan \u003cguaneryu@gmail.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Phil Turnbull \u003cphil.turnbull@oracle.com\u003e\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@oracle.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "78d962510796fdf39ccc5efd23d2eea2eca1ed99",
      "tree": "1f247c26f37e34f79260123286f42a0e9971d70b",
      "parents": [
        "d08854f5bcf3ea0cabc6fd2fc49c2d97e00c7c88"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jun 26 18:25:01 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jun 26 18:25:01 2016 -0400"
      },
      "message": "ext4: respect the nobarrier mount option in nojournal mode\n\nAlso, if we are going to issue the barrier, we should do this after we\nwrite out the parent directories if necessary.\n\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "d08854f5bcf3ea0cabc6fd2fc49c2d97e00c7c88",
      "tree": "50365a520f03df76963fb61fc12be9689a718d58",
      "parents": [
        "1a695a905c18548062509178b98bc91e67510864"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jun 26 18:24:01 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jun 26 18:24:01 2016 -0400"
      },
      "message": "ext4: optimize ext4_should_retry_alloc() to improve ENOSPC performance\n\nIf there are no pending blocks to be released after a commit, forcing\na journal commit has no hope of helping.  It\u0027s possible that a commit\nhad just completed, so if there are now free blocks available for\nallocation, it\u0027s worth retrying the commit.\n\nReported-by: Chao Yu \u003cyuchao0@huawei.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "60a40096a3b289c28429221c12a5a6890350d919",
      "tree": "a7c75a46cd1cc05c3754f532849f575876e89a9d",
      "parents": [
        "9114832581645e48622152a4ef21b88920c0167b"
      ],
      "author": {
        "name": "Mike Christie",
        "email": "mchristi@redhat.com",
        "time": "Wed Jun 08 15:49:40 2016 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@fb.com",
        "time": "Wed Jun 08 15:01:08 2016 -0600"
      },
      "message": "ext4: use bio op helprs in ext4 crypto code\n\nThis was missed from my last patchset.\n\nThis patch has ext4 crypto code use the bio op helper\nto set the operation. The operation (discard, write, writesame,\netc) is now defined seperately from the other REQ bits. They\nstill share the bi_rw field to save space, so we use these\nhelpers so modules do not have to worry about setting/overwriting\ninfo.\n\nJens, I am not sure how you handle patches on top of patches\nin the next branches. If you merge patches that fix issues\nin previous patches in next, then this patch could be part\nof\n\ncommit 95fe6c1a209ef89d9f94dd04a0ad72be1487d5d5\nAuthor: Mike Christie \u003cmchristi@redhat.com\u003e\nDate:   Sun Jun 5 14:31:48 2016 -0500\n\n    block, fs, mm, drivers: use bio set/get op accessors\n\nSigned-off-by: Mike Christie \u003cmchristi@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@fb.com\u003e\n"
    },
    {
      "commit": "95fe6c1a209ef89d9f94dd04a0ad72be1487d5d5",
      "tree": "4f0b5eabb7d38efe2f17e61207c628a1de8bb6ea",
      "parents": [
        "c8d93247f1d0cf478222a7f4fc37d453d6193d04"
      ],
      "author": {
        "name": "Mike Christie",
        "email": "mchristi@redhat.com",
        "time": "Sun Jun 05 14:31:48 2016 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@fb.com",
        "time": "Tue Jun 07 13:41:38 2016 -0600"
      },
      "message": "block, fs, mm, drivers: use bio set/get op accessors\n\nThis patch converts the simple bi_rw use cases in the block,\ndrivers, mm and fs code to set/get the bio operation using\nbio_set_op_attrs/bio_op\n\nThese should be simple one or two liner cases, so I just did them\nin one patch. The next patches handle the more complicated\ncases in a module per patch.\n\nSigned-off-by: Mike Christie \u003cmchristi@redhat.com\u003e\nReviewed-by: Hannes Reinecke \u003chare@suse.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@fb.com\u003e\n"
    },
    {
      "commit": "dfec8a14fc9043039e3c04807caf39dc71102816",
      "tree": "306adbd461707daf2ba64766964c534ff7ce4a8c",
      "parents": [
        "2a222ca992c35aee1e83af428f3dd26a3f5d5d94"
      ],
      "author": {
        "name": "Mike Christie",
        "email": "mchristi@redhat.com",
        "time": "Sun Jun 05 14:31:44 2016 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@fb.com",
        "time": "Tue Jun 07 13:41:38 2016 -0600"
      },
      "message": "fs: have ll_rw_block users pass in op and flags separately\n\nThis has ll_rw_block users pass in the operation and flags separately,\nso ll_rw_block can setup the bio op and bi_rw flags on the bio that\nis submitted.\n\nSigned-off-by: Mike Christie \u003cmchristi@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Hannes Reinecke \u003chare@suse.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@fb.com\u003e\n"
    },
    {
      "commit": "2a222ca992c35aee1e83af428f3dd26a3f5d5d94",
      "tree": "a5ff0a4f59f8fc44a276dd054ea04314eec1a043",
      "parents": [
        "f21508211d2b16e65821abd171378fa6ece126fe"
      ],
      "author": {
        "name": "Mike Christie",
        "email": "mchristi@redhat.com",
        "time": "Sun Jun 05 14:31:43 2016 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@fb.com",
        "time": "Tue Jun 07 13:41:38 2016 -0600"
      },
      "message": "fs: have submit_bh users pass in op and flags separately\n\nThis has submit_bh users pass in the operation and flags separately,\nso submit_bh_wbc can setup the bio op and bi_rw flags on the bio that\nis submitted.\n\nSigned-off-by: Mike Christie \u003cmchristi@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Hannes Reinecke \u003chare@suse.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@fb.com\u003e\n"
    },
    {
      "commit": "4e49ea4a3d276365bf7396c9b77b4d1d5923835a",
      "tree": "a49531413109137c3a6e40f02db7eb7969b2b672",
      "parents": [
        "af8c34ce6ae32addda3788d54a7e340cad22516b"
      ],
      "author": {
        "name": "Mike Christie",
        "email": "mchristi@redhat.com",
        "time": "Sun Jun 05 14:31:41 2016 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@fb.com",
        "time": "Tue Jun 07 13:41:38 2016 -0600"
      },
      "message": "block/fs/drivers: remove rw argument from submit_bio\n\nThis has callers of submit_bio/submit_bio_wait set the bio-\u003ebi_rw\ninstead of passing it in. This makes that use the same as\ngeneric_make_request and how we set the other bio fields.\n\nSigned-off-by: Mike Christie \u003cmchristi@redhat.com\u003e\n\nFixed up fs/ext4/crypto.c\n\nSigned-off-by: Jens Axboe \u003caxboe@fb.com\u003e\n"
    },
    {
      "commit": "84c60b1388249a0167d5fe8160f84e66a1221ba8",
      "tree": "fb1f798db05b349733563e4a317c5a7e1be68f41",
      "parents": [
        "e0d508f1092db9a56cc6ed617f473a2704f7f683"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 27 22:40:31 2016 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun May 29 19:08:00 2016 -0400"
      },
      "message": "drop redundant -\u003eowner initializations\n\nit\u0027s not needed for file_operations of inodes located on fs defined\nin the hosting module and for file_operations that go into procfs.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d102a56edba7a3f236454716fa09920e66772044",
      "tree": "bfed5508d09028bbf180507b21b8ab25c6980eac",
      "parents": [
        "0121a32201dcc72933fb6019c41661e2f8a02fc5",
        "3767e255b390d72f9a33c08d9e86c5f21f25860f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 27 17:14:05 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 27 17:14:05 2016 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs fixes from Al Viro:\n \"Followups to the parallel lookup work:\n\n   - update docs\n\n   - restore killability of the places that used to take -\u003ei_mutex\n     killably now that we have down_write_killable() merged\n\n   - Additionally, it turns out that I missed a prerequisite for\n     security_d_instantiate() stuff - -\u003egetxattr() wasn\u0027t the only thing\n     that could be called before dentry is attached to inode; with smack\n     we needed the same treatment applied to -\u003esetxattr() as well\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:\n  switch -\u003esetxattr() to passing dentry and inode separately\n  switch xattr_handler-\u003eset() to passing dentry and inode separately\n  restore killability of old mutex_lock_killable(\u0026inode-\u003ei_mutex) users\n  add down_write_killable_nested()\n  update D/f/directory-locking\n"
    },
    {
      "commit": "5930122683dff58f0846b0f0405b4bd598a3ba6a",
      "tree": "e7823a7eefaafb7b6ddc61a7ccc1a1892998310f",
      "parents": [
        "002354112f1e3cc7400ef48b853aefb90e801588"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 27 10:19:30 2016 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 27 15:39:43 2016 -0400"
      },
      "message": "switch xattr_handler-\u003eset() to passing dentry and inode separately\n\npreparation for similar switch in -\u003esetxattr() (see the next commit for\nrationale).\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "315227f6da389f3a560f27f7777080857278e1b4",
      "tree": "11306e1e8d8b66044ab48901b90141b5362c12e3",
      "parents": [
        "a10c38a4f385f5d7c173a263ff6bb2d36021b3bb",
        "40543f62cbdce42633e3fe10923099feee272e1f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 19:34:26 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 19:34:26 2016 -0700"
      },
      "message": "Merge tag \u0027dax-misc-for-4.7\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm\n\nPull misc DAX updates from Vishal Verma:\n \"DAX error handling for 4.7\n\n   - Until now, dax has been disabled if media errors were found on any\n     device.  This enables the use of DAX in the presence of these\n     errors by making all sector-aligned zeroing go through the driver.\n\n   - The driver (already) has the ability to clear errors on writes that\n     are sent through the block layer using \u0027DSMs\u0027 defined in ACPI 6.1.\n\n  Other misc changes:\n\n   - When mounting DAX filesystems, check to make sure the partition is\n     page aligned.  This is a requirement for DAX, and previously, we\n     allowed such unaligned mounts to succeed, but subsequent\n     reads/writes would fail.\n\n   - Misc/cleanup fixes from Jan that remove unused code from DAX\n     related to zeroing, writeback, and some size checks\"\n\n* tag \u0027dax-misc-for-4.7\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:\n  dax: fix a comment in dax_zero_page_range and dax_truncate_page\n  dax: for truncate/hole-punch, do zeroing through the driver if possible\n  dax: export a low-level __dax_zero_page_range helper\n  dax: use sb_issue_zerout instead of calling dax_clear_sectors\n  dax: enable dax in the presence of known media errors (badblocks)\n  dax: fallback from pmd to pte on error\n  block: Update blkdev_dax_capable() for consistency\n  xfs: Add alignment check for DAX mount\n  ext2: Add alignment check for DAX mount\n  ext4: Add alignment check for DAX mount\n  block: Add bdev_dax_supported() for dax mount checks\n  block: Add vfs_msg() interface\n  dax: Remove redundant inode size checks\n  dax: Remove pointless writeback from dax_do_io()\n  dax: Remove zeroing from dax_io()\n  dax: Remove dead zeroing code from fault handlers\n  ext2: Avoid DAX zeroing to corrupt data\n  ext2: Fix block zeroing in ext2_get_blocks() for DAX\n  dax: Remove complete_unwritten argument\n  DAX: move RADIX_DAX_ definitions to dax.c\n"
    },
    {
      "commit": "0e01df100b6bf22a1de61b66657502a6454153c5",
      "tree": "aae8f9787efc3014696b3e5ae854c1cf9e472bdd",
      "parents": [
        "a56f489502e28caac56c8a0735549740f0ae0711",
        "12735f881952c32b31bc4e433768f18489f79ec9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 24 12:55:26 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 24 12:55:26 2016 -0700"
      },
      "message": "Merge tag \u0027ext4_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\nPull ext4 updates from Ted Ts\u0027o:\n \"Fix a number of bugs, most notably a potential stale data exposure\n  after a crash and a potential BUG_ON crash if a file has the data\n  journalling flag enabled while it has dirty delayed allocation blocks\n  that haven\u0027t been written yet.  Also fix a potential crash in the new\n  project quota code and a maliciously corrupted file system.\n\n  In addition, fix some DAX-specific bugs, including when there is a\n  transient ENOSPC situation and races between writes via direct I/O and\n  an mmap\u0027ed segment that could lead to lost I/O.\n\n  Finally the usual set of miscellaneous cleanups\"\n\n* tag \u0027ext4_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (23 commits)\n  ext4: pre-zero allocated blocks for DAX IO\n  ext4: refactor direct IO code\n  ext4: fix race in transient ENOSPC detection\n  ext4: handle transient ENOSPC properly for DAX\n  dax: call get_blocks() with create \u003d\u003d 1 for write faults to unwritten extents\n  ext4: remove unmeetable inconsisteny check from ext4_find_extent()\n  jbd2: remove excess descriptions for handle_s\n  ext4: remove unnecessary bio get/put\n  ext4: silence UBSAN in ext4_mb_init()\n  ext4: address UBSAN warning in mb_find_order_for_block()\n  ext4: fix oops on corrupted filesystem\n  ext4: fix check of dqget() return value in ext4_ioctl_setproject()\n  ext4: clean up error handling when orphan list is corrupted\n  ext4: fix hang when processing corrupted orphaned inode list\n  ext4: remove trailing \\n from ext4_warning/ext4_error calls\n  ext4: fix races between changing inode journal mode and ext4_writepages\n  ext4: handle unwritten or delalloc buffers before enabling data journaling\n  ext4: fix jbd2 handle extension in ext4_ext_truncate_extend_restart()\n  ext4: do not ask jbd2 to write data for delalloc buffers\n  jbd2: add support for avoiding data writes during transaction commits\n  ...\n"
    },
    {
      "commit": "8da4b8c48e7b43cb16d05e1dbb34ad9f73ab7efd",
      "tree": "ac716b243f71c117360535610790d1c6b9164590",
      "parents": [
        "b8b572789cde5118b2cee49d426d48fcf5b30e47"
      ],
      "author": {
        "name": "Andy Shevchenko",
        "email": "andriy.shevchenko@linux.intel.com",
        "time": "Fri May 20 17:01:00 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 20 17:58:30 2016 -0700"
      },
      "message": "lib/uuid.c: move generate_random_uuid() to uuid.c\n\nLet\u0027s gather the UUID related functions under one hood.\n\nSigned-off-by: Andy Shevchenko \u003candriy.shevchenko@linux.intel.com\u003e\nReviewed-by: Matt Fleming \u003cmatt@codeblueprint.co.uk\u003e\nCc: Dmitry Kasatkin \u003cdmitry.kasatkin@gmail.com\u003e\nCc: Mimi Zohar \u003czohar@linux.vnet.ibm.com\u003e\nCc: Rasmus Villemoes \u003clinux@rasmusvillemoes.dk\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c2e7b207058d4ff6a9010430763fb561f307eb67",
      "tree": "8983947c4d62365de3d98113662ff9e643a42a0f",
      "parents": [
        "c52b76185b7a1b300e5f15ff871c8f45ced3dee9",
        "24368aad47dc65b45040d6a31bfd6df1d6f3ec97"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 17 15:05:23 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 17 15:05:23 2016 -0700"
      },
      "message": "Merge branch \u0027work.preadv2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs cleanups from Al Viro:\n \"More cleanups from Christoph\"\n\n* \u0027work.preadv2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:\n  nfsd: use RWF_SYNC\n  fs: add RWF_DSYNC aand RWF_SYNC\n  ceph: use generic_write_sync\n  fs: simplify the generic_write_sync prototype\n  fs: add IOCB_SYNC and IOCB_DSYNC\n  direct-io: remove the offset argument to dio_complete\n  direct-io: eliminate the offset argument to -\u003edirect_IO\n  xfs: eliminate the pos variable in xfs_file_dio_aio_write\n  filemap: remove the pos argument to generic_file_direct_write\n  filemap: remove pos variables in generic_file_read_iter\n"
    },
    {
      "commit": "87eefeb4e80b1526be83e670a08d059a003b7d0e",
      "tree": "a88b87b6b1b30d24fd83a61ba52510ca1d81b25f",
      "parents": [
        "2d96afc8f70ef86c66a0b5d80c24a27d6dd13df3"
      ],
      "author": {
        "name": "Toshi Kani",
        "email": "toshi.kani@hpe.com",
        "time": "Tue May 10 10:23:54 2016 -0600"
      },
      "committer": {
        "name": "Vishal Verma",
        "email": "vishal.l.verma@intel.com",
        "time": "Tue May 17 00:44:11 2016 -0600"
      },
      "message": "ext4: Add alignment check for DAX mount\n\nWhen a partition is not aligned by 4KB, mount -o dax succeeds,\nbut any read/write access to the filesystem fails, except for\nmetadata update.\n\nCall bdev_dax_supported() to perform proper precondition checks\nwhich includes this partition alignment check.\n\nReported-by: Micah Parrish \u003cmicah.parrish@hpe.com\u003e\nSigned-off-by: Toshi Kani \u003ctoshi.kani@hpe.com\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Andreas Dilger \u003cadilger.kernel@dilger.ca\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Dan Williams \u003cdan.j.williams@intel.com\u003e\nCc: Ross Zwisler \u003cross.zwisler@linux.intel.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Boaz Harrosh \u003cboaz@plexistor.com\u003e\nSigned-off-by: Vishal Verma \u003cvishal.l.verma@intel.com\u003e\n"
    },
    {
      "commit": "0e0162bb8c008fa7742f69d4d4982c8a37b88f95",
      "tree": "4b230ab63b5698a44d2948e70a6cc22405c351e9",
      "parents": [
        "ae05327a00fd47c34dfe25294b359a3f3fef96e8",
        "38b78a5f18584db6fa7441e0f4531b283b0e6725"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue May 17 02:17:59 2016 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue May 17 02:17:59 2016 -0400"
      },
      "message": "Merge branch \u0027ovl-fixes\u0027 into for-linus\n\nBackmerge to resolve a conflict in ovl_lookup_real();\n\"ovl_lookup_real(): use lookup_one_len_unlocked()\" instead,\nbut it was too late in the cycle to rebase.\n"
    },
    {
      "commit": "02fbd139759feb1f331cebd858523b5d774082e6",
      "tree": "841ff90012518ce3c37ecb1cca0367db7568d18a",
      "parents": [
        "e4b2749158631e6d74bf14d2ef3804d780e2f770"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed May 11 11:58:48 2016 +0200"
      },
      "committer": {
        "name": "Vishal Verma",
        "email": "vishal.l.verma@intel.com",
        "time": "Mon May 16 18:11:51 2016 -0600"
      },
      "message": "dax: Remove complete_unwritten argument\n\nFault handlers currently take complete_unwritten argument to convert\nunwritten extents after PTEs are updated. However no filesystem uses\nthis anymore as the code is racy. Remove the unused argument.\n\nReviewed-by: Ross Zwisler \u003cross.zwisler@linux.intel.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Vishal Verma \u003cvishal.l.verma@intel.com\u003e\n"
    },
    {
      "commit": "12735f881952c32b31bc4e433768f18489f79ec9",
      "tree": "dd23e6d522644d094af930a68132d8071a5de05c",
      "parents": [
        "914f82a32d026884743fb3de9f6f0a5908a9d5dd"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri May 13 00:51:15 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 13 00:51:15 2016 -0400"
      },
      "message": "ext4: pre-zero allocated blocks for DAX IO\n\nCurrently ext4 treats DAX IO the same way as direct IO. I.e., it\nallocates unwritten extents before IO is done and converts unwritten\nextents afterwards. However this way DAX IO can race with page fault to\nthe same area:\n\next4_ext_direct_IO()\t\t\t\tdax_fault()\n  dax_io()\n    get_block() - allocates unwritten extent\n    copy_from_iter_pmem()\n\t\t\t\t\t\t  get_block() - converts\n\t\t\t\t\t\t    unwritten block to\n\t\t\t\t\t\t    written and zeroes it\n\t\t\t\t\t\t    out\n  ext4_convert_unwritten_extents()\n\nSo data written with DAX IO gets lost. Similarly dax_new_buf() called\nfrom dax_io() can overwrite data that has been already written to the\nblock via mmap.\n\nFix the problem by using pre-zeroed blocks for DAX IO the same way as we\nuse them for DAX mmap. The downside of this solution is that every\nallocating write writes each block twice (once zeros, once data). Fixing\nthe race with locking is possible as well however we would need to\nlock-out faults for the whole range written to by DAX IO. And that is\nnot easy to do without locking-out faults for the whole file which seems\ntoo aggressive.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "914f82a32d026884743fb3de9f6f0a5908a9d5dd",
      "tree": "7f56a9e69a6e6df90a27750c9bfc08a604a4ed10",
      "parents": [
        "dbc427ce4028580f1244b5b57ca1cbea31aad1e7"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri May 13 00:44:16 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 13 00:44:16 2016 -0400"
      },
      "message": "ext4: refactor direct IO code\n\nCurrently ext4 direct IO handling is split between ext4_ext_direct_IO()\nand ext4_ind_direct_IO(). However the extent based function calls into\nthe indirect based one for some cases and for example it is not able to\nhandle file extending. Previously it was not also properly handling\nretries in case of ENOSPC errors. With DAX things would get even more\ncontrieved so just refactor the direct IO code and instead of indirect /\nextent split do the split to read vs writes.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "dbc427ce4028580f1244b5b57ca1cbea31aad1e7",
      "tree": "fdd255a0ae575121ae8810eb2f9052b6f8f0c5b3",
      "parents": [
        "7cb476f834d0dc2092e04eeafe9cbe509f6380eb"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri May 13 00:42:40 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 13 00:42:40 2016 -0400"
      },
      "message": "ext4: fix race in transient ENOSPC detection\n\nWhen there are blocks to free in the running transaction, block\nallocator can return ENOSPC although the filesystem has some blocks to\nfree. We use ext4_should_retry_alloc() to force commit of the current\ntransaction and return whether anything was committed so that it makes\nsense to retry the allocation. However the transaction may get committed\nafter block allocation fails but before we call\next4_should_retry_alloc(). So ext4_should_retry_alloc() returns false\nbecause there is nothing to commit and we wrongly return ENOSPC.\n\nFix the race by unconditionally returning 1 from ext4_should_retry_alloc()\nwhen we tried to commit a transaction. This should not add any\nunnecessary retries since we had a transaction running a while ago when\ntrying to allocate blocks and we want to retry the allocation once that\ntransaction has committed anyway.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7cb476f834d0dc2092e04eeafe9cbe509f6380eb",
      "tree": "de6ace4539f5160c037f747305ac70c82db557e2",
      "parents": [
        "aef39ab1534d1a07061e0ee7e428499e127232eb"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri May 13 00:38:16 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 13 00:38:16 2016 -0400"
      },
      "message": "ext4: handle transient ENOSPC properly for DAX\n\next4_dax_get_blocks() was accidentally omitted fixing get blocks\nhandlers to properly handle transient ENOSPC errors. Fix it now to use\next4_get_blocks_trans() helper which takes care of these errors.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ae05327a00fd47c34dfe25294b359a3f3fef96e8",
      "tree": "edcaac0eda8abcfaad9e9bd2b6ea72dd7306d374",
      "parents": [
        "9717a91b01feda644f45fd63624a641385ef8f2d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 12 20:36:01 2016 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 12 20:36:01 2016 -0400"
      },
      "message": "ext4: switch to -\u003eiterate_shared()\n\nNote that we need relax_dir() equivalent for directories\nlocked shared.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "816cd71b0c723a7296d14aadb8ff1ba42f6181d2",
      "tree": "661cecb56cc3ef7e89fe458459cd8dc9aaa09853",
      "parents": [
        "466c3fb618b8520b75be37fcb115e9610663b945"
      ],
      "author": {
        "name": "Nicolai Stange",
        "email": "nicstange@gmail.com",
        "time": "Thu May 05 22:43:04 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 05 22:43:04 2016 -0400"
      },
      "message": "ext4: remove unmeetable inconsisteny check from ext4_find_extent()\n\next4_find_extent(), stripped down to the parts relevant to this patch,\nreads as\n\n  ppos \u003d 0;\n  i \u003d depth;\n  while (i) {\n    --i;\n    ++ppos;\n    if (unlikely(ppos \u003e depth)) {\n      ...\n      ret \u003d -EFSCORRUPTED;\n      goto err;\n    }\n  }\n\nDue to the loop\u0027s bounds, the condition ppos \u003e depth can never be met.\n\nRemove this dead code.\n\nSigned-off-by: Nicolai Stange \u003cnicstange@gmail.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "32157de29a3140bfaa74c6e0fae18c78fe84a5df",
      "tree": "6c7c431e96c4c03b9f7b068e48db4d69adce44cd",
      "parents": [
        "935244cd54b86ca46e69bc6604d2adfb1aec2d42"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@fb.com",
        "time": "Thu May 05 22:09:49 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 05 22:09:49 2016 -0400"
      },
      "message": "ext4: remove unnecessary bio get/put\n\next4_io_submit() used to check for EOPNOTSUPP after bio submission,\nwhich is why it had to get an extra reference to the bio before\nsubmitting it. But since we no longer touch the bio after submission,\nget rid of the redundant get/put of the bio. If we do get the extra\nreference, we enter the slower path of having to flag this bio as now\nhaving external references.\n\nSigned-off-by: Jens Axboe \u003caxboe@fb.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "935244cd54b86ca46e69bc6604d2adfb1aec2d42",
      "tree": "870253dbfdb7e77a71a85ee1357817a7699855b2",
      "parents": [
        "b5cb316cdf3a3f5f6125412b0f6065185240cfdc"
      ],
      "author": {
        "name": "Nicolai Stange",
        "email": "nicstange@gmail.com",
        "time": "Thu May 05 19:46:19 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 05 19:46:19 2016 -0400"
      },
      "message": "ext4: silence UBSAN in ext4_mb_init()\n\nCurrently, in ext4_mb_init(), there\u0027s a loop like the following:\n\n  do {\n    ...\n    offset +\u003d 1 \u003c\u003c (sb-\u003es_blocksize_bits - i);\n    i++;\n  } while (i \u003c\u003d sb-\u003es_blocksize_bits + 1);\n\nNote that the updated offset is used in the loop\u0027s next iteration only.\n\nHowever, at the last iteration, that is at i \u003d\u003d sb-\u003es_blocksize_bits + 1,\nthe shift count becomes equal to (unsigned)-1 \u003e 31 (c.f. C99 6.5.7(3))\nand UBSAN reports\n\n  UBSAN: Undefined behaviour in fs/ext4/mballoc.c:2621:15\n  shift exponent 4294967295 is too large for 32-bit type \u0027int\u0027\n  [...]\n  Call Trace:\n   [\u003cffffffff818c4d25\u003e] dump_stack+0xbc/0x117\n   [\u003cffffffff818c4c69\u003e] ? _atomic_dec_and_lock+0x169/0x169\n   [\u003cffffffff819411ab\u003e] ubsan_epilogue+0xd/0x4e\n   [\u003cffffffff81941cac\u003e] __ubsan_handle_shift_out_of_bounds+0x1fb/0x254\n   [\u003cffffffff81941ab1\u003e] ? __ubsan_handle_load_invalid_value+0x158/0x158\n   [\u003cffffffff814b6dc1\u003e] ? kmem_cache_alloc+0x101/0x390\n   [\u003cffffffff816fc13b\u003e] ? ext4_mb_init+0x13b/0xfd0\n   [\u003cffffffff814293c7\u003e] ? create_cache+0x57/0x1f0\n   [\u003cffffffff8142948a\u003e] ? create_cache+0x11a/0x1f0\n   [\u003cffffffff821c2168\u003e] ? mutex_lock+0x38/0x60\n   [\u003cffffffff821c23ab\u003e] ? mutex_unlock+0x1b/0x50\n   [\u003cffffffff814c26ab\u003e] ? put_online_mems+0x5b/0xc0\n   [\u003cffffffff81429677\u003e] ? kmem_cache_create+0x117/0x2c0\n   [\u003cffffffff816fcc49\u003e] ext4_mb_init+0xc49/0xfd0\n   [...]\n\nObserve that the mentioned shift exponent, 4294967295, equals (unsigned)-1.\n\nUnless compilers start to do some fancy transformations (which at least\nGCC 6.0.0 doesn\u0027t currently do), the issue is of cosmetic nature only: the\nsuch calculated value of offset is never used again.\n\nSilence UBSAN by introducing another variable, offset_incr, holding the\nnext increment to apply to offset and adjust that one by right shifting it\nby one position per loop iteration.\n\nBugzilla: https://bugzilla.kernel.org/show_bug.cgi?id\u003d114701\nBugzilla: https://bugzilla.kernel.org/show_bug.cgi?id\u003d112161\n\nCc: stable@vger.kernel.org\nSigned-off-by: Nicolai Stange \u003cnicstange@gmail.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b5cb316cdf3a3f5f6125412b0f6065185240cfdc",
      "tree": "73741ce9475852c6dc786ea151f09b9fb1e56783",
      "parents": [
        "74177f55b70e2f2be770dd28684dd6d17106a4ba"
      ],
      "author": {
        "name": "Nicolai Stange",
        "email": "nicstange@gmail.com",
        "time": "Thu May 05 17:38:03 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 05 17:38:03 2016 -0400"
      },
      "message": "ext4: address UBSAN warning in mb_find_order_for_block()\n\nCurrently, in mb_find_order_for_block(), there\u0027s a loop like the following:\n\n  while (order \u003c\u003d e4b-\u003ebd_blkbits + 1) {\n    ...\n    bb +\u003d 1 \u003c\u003c (e4b-\u003ebd_blkbits - order);\n  }\n\nNote that the updated bb is used in the loop\u0027s next iteration only.\n\nHowever, at the last iteration, that is at order \u003d\u003d e4b-\u003ebd_blkbits + 1,\nthe shift count becomes negative (c.f. C99 6.5.7(3)) and UBSAN reports\n\n  UBSAN: Undefined behaviour in fs/ext4/mballoc.c:1281:11\n  shift exponent -1 is negative\n  [...]\n  Call Trace:\n   [\u003cffffffff818c4d35\u003e] dump_stack+0xbc/0x117\n   [\u003cffffffff818c4c79\u003e] ? _atomic_dec_and_lock+0x169/0x169\n   [\u003cffffffff819411bb\u003e] ubsan_epilogue+0xd/0x4e\n   [\u003cffffffff81941cbc\u003e] __ubsan_handle_shift_out_of_bounds+0x1fb/0x254\n   [\u003cffffffff81941ac1\u003e] ? __ubsan_handle_load_invalid_value+0x158/0x158\n   [\u003cffffffff816e93a0\u003e] ? ext4_mb_generate_from_pa+0x590/0x590\n   [\u003cffffffff816502c8\u003e] ? ext4_read_block_bitmap_nowait+0x598/0xe80\n   [\u003cffffffff816e7b7e\u003e] mb_find_order_for_block+0x1ce/0x240\n   [...]\n\nUnless compilers start to do some fancy transformations (which at least\nGCC 6.0.0 doesn\u0027t currently do), the issue is of cosmetic nature only: the\nsuch calculated value of bb is never used again.\n\nSilence UBSAN by introducing another variable, bb_incr, holding the next\nincrement to apply to bb and adjust that one by right shifting it by one\nposition per loop iteration.\n\nBugzilla: https://bugzilla.kernel.org/show_bug.cgi?id\u003d114701\nBugzilla: https://bugzilla.kernel.org/show_bug.cgi?id\u003d112161\n\nCc: stable@vger.kernel.org\nSigned-off-by: Nicolai Stange \u003cnicstange@gmail.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "74177f55b70e2f2be770dd28684dd6d17106a4ba",
      "tree": "6676d8f0c46da81c1f49afb7592faae33c61eb32",
      "parents": [
        "ff0bc08454917964291f72ee5b8eca66de4bc250"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu May 05 11:10:15 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 05 11:10:15 2016 -0400"
      },
      "message": "ext4: fix oops on corrupted filesystem\n\nWhen filesystem is corrupted in the right way, it can happen\next4_mark_iloc_dirty() in ext4_orphan_add() returns error and we\nsubsequently remove inode from the in-memory orphan list. However this\ndeletion is done with list_del(\u0026EXT4_I(inode)-\u003ei_orphan) and thus we\nleave i_orphan list_head with a stale content. Later we can look at this\ncontent causing list corruption, oops, or other issues. The reported\ntrace looked like:\n\nWARNING: CPU: 0 PID: 46 at lib/list_debug.c:53 __list_del_entry+0x6b/0x100()\nlist_del corruption, 0000000061c1d6e0-\u003enext is LIST_POISON1\n0000000000100100)\nCPU: 0 PID: 46 Comm: ext4.exe Not tainted 4.1.0-rc4+ #250\nStack:\n 60462947 62219960 602ede24 62219960\n 602ede24 603ca293 622198f0 602f02eb\n 62219950 6002c12c 62219900 601b4d6b\nCall Trace:\n [\u003c6005769c\u003e] ? vprintk_emit+0x2dc/0x5c0\n [\u003c602ede24\u003e] ? printk+0x0/0x94\n [\u003c600190bc\u003e] show_stack+0xdc/0x1a0\n [\u003c602ede24\u003e] ? printk+0x0/0x94\n [\u003c602ede24\u003e] ? printk+0x0/0x94\n [\u003c602f02eb\u003e] dump_stack+0x2a/0x2c\n [\u003c6002c12c\u003e] warn_slowpath_common+0x9c/0xf0\n [\u003c601b4d6b\u003e] ? __list_del_entry+0x6b/0x100\n [\u003c6002c254\u003e] warn_slowpath_fmt+0x94/0xa0\n [\u003c602f4d09\u003e] ? __mutex_lock_slowpath+0x239/0x3a0\n [\u003c6002c1c0\u003e] ? warn_slowpath_fmt+0x0/0xa0\n [\u003c60023ebf\u003e] ? set_signals+0x3f/0x50\n [\u003c600a205a\u003e] ? kmem_cache_free+0x10a/0x180\n [\u003c602f4e88\u003e] ? mutex_lock+0x18/0x30\n [\u003c601b4d6b\u003e] __list_del_entry+0x6b/0x100\n [\u003c601177ec\u003e] ext4_orphan_del+0x22c/0x2f0\n [\u003c6012f27c\u003e] ? __ext4_journal_start_sb+0x2c/0xa0\n [\u003c6010b973\u003e] ? ext4_truncate+0x383/0x390\n [\u003c6010bc8b\u003e] ext4_write_begin+0x30b/0x4b0\n [\u003c6001bb50\u003e] ? copy_from_user+0x0/0xb0\n [\u003c601aa840\u003e] ? iov_iter_fault_in_readable+0xa0/0xc0\n [\u003c60072c4f\u003e] generic_perform_write+0xaf/0x1e0\n [\u003c600c4166\u003e] ? file_update_time+0x46/0x110\n [\u003c60072f0f\u003e] __generic_file_write_iter+0x18f/0x1b0\n [\u003c6010030f\u003e] ext4_file_write_iter+0x15f/0x470\n [\u003c60094e10\u003e] ? unlink_file_vma+0x0/0x70\n [\u003c6009b180\u003e] ? unlink_anon_vmas+0x0/0x260\n [\u003c6008f169\u003e] ? free_pgtables+0xb9/0x100\n [\u003c600a6030\u003e] __vfs_write+0xb0/0x130\n [\u003c600a61d5\u003e] vfs_write+0xa5/0x170\n [\u003c600a63d6\u003e] SyS_write+0x56/0xe0\n [\u003c6029fcb0\u003e] ? __libc_waitpid+0x0/0xa0\n [\u003c6001b698\u003e] handle_syscall+0x68/0x90\n [\u003c6002633d\u003e] userspace+0x4fd/0x600\n [\u003c6002274f\u003e] ? save_registers+0x1f/0x40\n [\u003c60028bd7\u003e] ? arch_prctl+0x177/0x1b0\n [\u003c60017bd5\u003e] fork_handler+0x85/0x90\n\nFix the problem by using list_del_init() as we always should with\ni_orphan list.\n\nCC: stable@vger.kernel.org\nReported-by: Vegard Nossum \u003cvegard.nossum@oracle.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ff0bc08454917964291f72ee5b8eca66de4bc250",
      "tree": "8293c7b58cf4a690da807a37c7bb281dc7723536",
      "parents": [
        "7827a7f6ebfcb7f388dc47fddd48567a314701ba"
      ],
      "author": {
        "name": "Seth Forshee",
        "email": "seth.forshee@canonical.com",
        "time": "Thu May 05 10:52:38 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu May 05 10:52:38 2016 -0400"
      },
      "message": "ext4: fix check of dqget() return value in ext4_ioctl_setproject()\n\nA failed call to dqget() returns an ERR_PTR() and not null. Fix\nthe check in ext4_ioctl_setproject() to handle this correctly.\n\nFixes: 9b7365fc1c82 (\"ext4: add FS_IOC_FSSETXATTR/FS_IOC_FSGETXATTR interface support\")\nCc: stable@vger.kernel.org # v4.5\nSigned-off-by: Seth Forshee \u003cseth.forshee@canonical.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "84695ffee7987ee1e581be4c4696e47e1a29403b",
      "tree": "78ca09a96ecd6a6b5f4fae744c381968635af68d",
      "parents": [
        "bf16200689118d19de1b8d2a3c314fc21f5dc7bb",
        "ce23e640133484eebc20ca7b7668388213e11327"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon May 02 19:45:47 2016 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon May 02 19:45:47 2016 -0400"
      },
      "message": "Merge getxattr prototype change into work.lookups\n\nThe rest of work.xattr stuff isn\u0027t needed for this branch\n"
    },
    {
      "commit": "e259221763a40403d5bb232209998e8c45804ab8",
      "tree": "6f940ba17f38b693e495ad5267b1988dd66c9c0f",
      "parents": [
        "dde0c2e79848298cc25621ad080d47f94dbd7cce"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Apr 07 08:52:01 2016 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun May 01 19:58:39 2016 -0400"
      },
      "message": "fs: simplify the generic_write_sync prototype\n\nThe kiocb already has the new position, so use that.  The only interesting\ncase is AIO, where we currently don\u0027t bother updating ki_pos.  We\u0027re about\nto free the kiocb after we\u0027re done, so we might as well update it to make\neveryone\u0027s life simpler.\n\nWhile we\u0027re at it also return the bytes written argument passed in if\nwe were successful so that the boilerplate error switch code in the\ncallers can go away.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "dde0c2e79848298cc25621ad080d47f94dbd7cce",
      "tree": "678f9ff7cba4bb170db9985266efd62521561f46",
      "parents": [
        "716b9bc0cb50b1c2c15ef6a255c88508350e3462"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Apr 07 08:52:00 2016 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun May 01 19:58:39 2016 -0400"
      },
      "message": "fs: add IOCB_SYNC and IOCB_DSYNC\n\nThis will allow us to do per-I/O sync file writes, as required by a lot\nof fileservers or storage targets.\n\nXXX: Will need a few additional audits for O_DSYNC\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c8b8e32d700fe943a935e435ae251364d016c497",
      "tree": "956e582a123c6b2761e80901bdaaedc5ba4137e3",
      "parents": [
        "13712713caba0c1b8c2c0070a4c1f4487def8dee"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Apr 07 08:51:58 2016 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun May 01 19:58:39 2016 -0400"
      },
      "message": "direct-io: eliminate the offset argument to -\u003edirect_IO\n\nIncluding blkdev_direct_IO and dax_do_io.  It has to be ki_pos to actually\nwork, so eliminate the superflous argument.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7827a7f6ebfcb7f388dc47fddd48567a314701ba",
      "tree": "0d5e3e7f7078ebb7c8080d60952f0fd407984ea8",
      "parents": [
        "c9eb13a9105e2e418f72e46a2b6da3f49e696902"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Apr 30 00:49:54 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Apr 30 00:49:54 2016 -0400"
      },
      "message": "ext4: clean up error handling when orphan list is corrupted\n\nInstead of just printing warning messages, if the orphan list is\ncorrupted, declare the file system is corrupted.  If there are any\nreserved inodes in the orphaned inode list, declare the file system\ncorrupted and stop right away to avoid doing more potential damage to\nthe file system.\n\nCc: stable@vger.kernel.org\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c9eb13a9105e2e418f72e46a2b6da3f49e696902",
      "tree": "f7c98c4a9720744af5957c76b483a6f1ba0e7dd8",
      "parents": [
        "8d2ae1cbe8a984d7a755755fb53955de2f60a2f9"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Apr 30 00:48:54 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Apr 30 00:48:54 2016 -0400"
      },
      "message": "ext4: fix hang when processing corrupted orphaned inode list\n\nIf the orphaned inode list contains inode #5, ext4_iget() returns a\nbad inode (since the bootloader inode should never be referenced\ndirectly).  Because of the bad inode, we end up processing the inode\nrepeatedly and this hangs the machine.\n\nThis can be reproduced via:\n\n   mke2fs -t ext4 /tmp/foo.img 100\n   debugfs -w -R \"ssv last_orphan 5\" /tmp/foo.img\n   mount -o loop /tmp/foo.img /mnt\n\n(But don\u0027t do this if you are using an unpatched kernel if you care\nabout the system staying functional.  :-)\n\nThis bug was found by the port of American Fuzzy Lop into the kernel\nto find file system problems[1].  (Since it *only* happens if inode #5\nshows up on the orphan list --- 3, 7, 8, etc. won\u0027t do it, it\u0027s not\nsurprising that AFL needed two hours before it found it.)\n\n[1] http://events.linuxfoundation.org/sites/events/files/slides/AFL%20filesystem%20fuzzing%2C%20Vault%202016_0.pdf\n\nCc: stable@vger.kernel.org\nReported by: Vegard Nossum \u003cvegard.nossum@oracle.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8d2ae1cbe8a984d7a755755fb53955de2f60a2f9",
      "tree": "c4054ce7fbd132f2d6e8af11e697ea78df1b792f",
      "parents": [
        "c8585c6fcaf2011de54c3592e80a634a2b9e1a7f"
      ],
      "author": {
        "name": "Jakub Wilk",
        "email": "jwilk@jwilk.net",
        "time": "Wed Apr 27 01:11:21 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Apr 27 01:11:21 2016 -0400"
      },
      "message": "ext4: remove trailing \\n from ext4_warning/ext4_error calls\n\nMessages passed to ext4_warning() or ext4_error() don\u0027t need trailing\nnewlines, because these function add the newlines themselves.\n\nSigned-off-by: Jakub Wilk \u003cjwilk@jwilk.net\u003e\n"
    },
    {
      "commit": "c8585c6fcaf2011de54c3592e80a634a2b9e1a7f",
      "tree": "66b440a3e710ab4b63ae20200735a594bffb74cd",
      "parents": [
        "4c54659269ecb799133758330e7ea2a6fa4c65ca"
      ],
      "author": {
        "name": "Daeho Jeong",
        "email": "daeho.jeong@samsung.com",
        "time": "Mon Apr 25 23:22:35 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 25 23:22:35 2016 -0400"
      },
      "message": "ext4: fix races between changing inode journal mode and ext4_writepages\n\nIn ext4, there is a race condition between changing inode journal mode\nand ext4_writepages(). While ext4_writepages() is executed on a\nnon-journalled mode inode, the inode\u0027s journal mode could be enabled\nby ioctl() and then, some pages dirtied after switching the journal\nmode will be still exposed to ext4_writepages() in non-journaled mode.\nTo resolve this problem, we use fs-wide per-cpu rw semaphore by Jan\nKara\u0027s suggestion because we don\u0027t want to waste ext4_inode_info\u0027s\nspace for this extra rare case.\n\nSigned-off-by: Daeho Jeong \u003cdaeho.jeong@samsung.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "4c54659269ecb799133758330e7ea2a6fa4c65ca",
      "tree": "2c5a12ba530b09e1c18642fe06e3bb55fbec59fc",
      "parents": [
        "7b8081912d75df1d910d6969f0a374b66ef242bf"
      ],
      "author": {
        "name": "Daeho Jeong",
        "email": "daeho.jeong@samsung.com",
        "time": "Mon Apr 25 23:21:00 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 25 23:21:00 2016 -0400"
      },
      "message": "ext4: handle unwritten or delalloc buffers before enabling data journaling\n\nWe already allocate delalloc blocks before changing the inode mode into\n\"per-file data journal\" mode to prevent delalloc blocks from remaining\nnot allocated, but another issue concerned with \"BH_Unwritten\" status\nstill exists. For example, by fallocate(), several buffers\u0027 status\nchange into \"BH_Unwritten\", but these buffers cannot be processed by\next4_alloc_da_blocks(). So, they still remain in unwritten status after\nper-file data journaling is enabled and they cannot be changed into\nwritten status any more and, if they are journaled and eventually\ncheckpointed, these unwritten buffer will cause a kernel panic by the\nbelow BUG_ON() function of submit_bh_wbc() when they are submitted\nduring checkpointing.\n\nstatic int submit_bh_wbc(int rw, struct buffer_head *bh,...\n{\n        ...\n        BUG_ON(buffer_unwritten(bh));\n\nMoreover, when \"dioread_nolock\" option is enabled, the status of a\nbuffer is changed into \"BH_Unwritten\" after write_begin() completes and\nthe \"BH_Unwritten\" status will be cleared after I/O is done. Therefore,\nif a buffer\u0027s status is changed into unwrutten but the buffer\u0027s I/O is\nnot submitted and completed, it can cause the same problem after\nenabling per-file data journaling. You can easily generate this bug by\nexecuting the following command.\n\n./kvm-xfstests -C 10000 -m nodelalloc,dioread_nolock generic/269\n\nTo resolve these problems and define a boundary between the previous\nmode and per-file data journaling mode, we need to flush and wait all\nthe I/O of buffers of a file before enabling per-file data journaling\nof the file.\n\nSigned-off-by: Daeho Jeong \u003cdaeho.jeong@samsung.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "7b8081912d75df1d910d6969f0a374b66ef242bf",
      "tree": "4bb558bb911daa64cb61061cb4e81b2129df5b2e",
      "parents": [
        "ee0876bc69ee8d24d524fb2e9e41e3682aaebb11"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 25 23:13:17 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 25 23:13:17 2016 -0400"
      },
      "message": "ext4: fix jbd2 handle extension in ext4_ext_truncate_extend_restart()\n\nThe function jbd2_journal_extend() takes as its argument the number of\nnew credits to be added to the handle.  We weren\u0027t taking into account\nthe currently unused handle credits; worse, we would try to extend the\nhandle by N credits when it had N credits available.\n\nIn the case where jbd2_journal_extend() fails because the transaction\nis too large, when jbd2_journal_restart() gets called, the N credits\nowned by the handle gets returned to the transaction, and the\ntransaction commit is asynchronously requested, and then\nstart_this_handle() will be able to successfully attach the handle to\nthe current transaction since the required credits are now available.\n\nThis is mostly harmless, but since ext4_ext_truncate_extend_restart()\nreturns EAGAIN, the truncate machinery will once again try to call\next4_ext_truncate_extend_restart(), which will do the above sequence\nover and over again until the transaction has committed.\n\nThis was found while I was debugging a lockup in caused by running\nxfstests generic/074 in the data\u003djournal case.  I\u0027m still not sure why\nwe ended up looping forever, which suggests there may still be another\nbug hiding in the transaction accounting machinery, but this commit\nprevents us from looping in the first place.\n\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ee0876bc69ee8d24d524fb2e9e41e3682aaebb11",
      "tree": "4a3b6725cf029b704f47018ff8fbce41a84be1b3",
      "parents": [
        "41617e1a8dec9fe082ba5dec26bacb154eb55482"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Sun Apr 24 00:56:08 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 24 00:56:08 2016 -0400"
      },
      "message": "ext4: do not ask jbd2 to write data for delalloc buffers\n\nCurrently we ask jbd2 to write all dirty allocated buffers before\ncommitting a transaction when doing writeback of delay allocated blocks.\nHowever this is unnecessary since we move all pages to writeback state\nbefore dropping a transaction handle and then submit all the necessary\nIO. We still need the transaction commit to wait for all the outstanding\nwriteback before flushing disk caches during transaction commit to avoid\ndata exposure issues though. Use the new jbd2 capability and ask it to\nonly wait for outstanding writeback during transaction commit when\nwriting back data in ext4_writepages().\n\nTested-by: \"HUANG Weller (CM/ESW12-CN)\" \u003cWeller.Huang@cn.bosch.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "41617e1a8dec9fe082ba5dec26bacb154eb55482",
      "tree": "cad9847e725526c8af355f116ec5cf317dc2d24c",
      "parents": [
        "3957ef53a5033bd519b19cf375061be1929bdb5f"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Sun Apr 24 00:56:07 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 24 00:56:07 2016 -0400"
      },
      "message": "jbd2: add support for avoiding data writes during transaction commits\n\nCurrently when filesystem needs to make sure data is on permanent\nstorage before committing a transaction it adds inode to transaction\u0027s\ninode list. During transaction commit, jbd2 writes back all dirty\nbuffers that have allocated underlying blocks and waits for the IO to\nfinish. However when doing writeback for delayed allocated data, we\nallocate blocks and immediately submit the data. Thus asking jbd2 to\nwrite dirty pages just unnecessarily adds more work to jbd2 possibly\nwriting back other redirtied blocks.\n\nAdd support to jbd2 to allow filesystem to ask jbd2 to only wait for\noutstanding data writes before committing a transaction and thus avoid\nunnecessary writes.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "3957ef53a5033bd519b19cf375061be1929bdb5f",
      "tree": "5110c15e5d91514ce94a1d6468e0b4d6154eb31b",
      "parents": [
        "06bd3c36a733ac27962fea7d6f47168841376824"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Sun Apr 24 00:56:05 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 24 00:56:05 2016 -0400"
      },
      "message": "ext4: remove EXT4_STATE_ORDERED_MODE\n\nThis flag is just duplicating what ext4_should_order_data() tells you\nand is used in a single place. Furthermore it doesn\u0027t reflect changes to\ninode data journalling flag so it may be possibly misleading. Just\nremove it.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "06bd3c36a733ac27962fea7d6f47168841376824",
      "tree": "e4f4abc0b8a5bc40cd51905329f44a9cdfbc80a0",
      "parents": [
        "1f60fbe7274918adb8db2f616e321890730ab7e3"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Sun Apr 24 00:56:03 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 24 00:56:03 2016 -0400"
      },
      "message": "ext4: fix data exposure after a crash\n\nHuang has reported that in his powerfail testing he is seeing stale\nblock contents in some of recently allocated blocks although he mounts\next4 in data\u003dordered mode. After some investigation I have found out\nthat indeed when delayed allocation is used, we don\u0027t add inode to\ntransaction\u0027s list of inodes needing flushing before commit. Originally\nwe were doing that but commit f3b59291a69d removed the logic with a\nflawed argument that it is not needed.\n\nThe problem is that although for delayed allocated blocks we write their\ncontents immediately after allocating them, there is no guarantee that\nthe IO scheduler or device doesn\u0027t reorder things and thus transaction\nallocating blocks and attaching them to inode can reach stable storage\nbefore actual block contents. Actually whenever we attach freshly\nallocated blocks to inode using a written extent, we should add inode to\ntransaction\u0027s ordered inode list to make sure we properly wait for block\ncontents to be written before committing the transaction. So that is\nwhat we do in this patch. This also handles other cases where stale data\nexposure was possible - like filling hole via mmap in\ndata\u003dordered,nodelalloc mode.\n\nThe only exception to the above rule are extending direct IO writes where\nblkdev_direct_IO() waits for IO to complete before increasing i_size and\nthus stale data exposure is not possible. For now we don\u0027t complicate\nthe code with optimizing this special case since the overhead is pretty\nlow. In case this is observed to be a performance problem we can always\nhandle it using a special flag to ext4_map_blocks().\n\nCC: stable@vger.kernel.org\nFixes: f3b59291a69d0b734be1fc8be489fef2dd846d3d\nReported-by: \"HUANG Weller (CM/ESW12-CN)\" \u003cWeller.Huang@cn.bosch.com\u003e\nTested-by: \"HUANG Weller (CM/ESW12-CN)\" \u003cWeller.Huang@cn.bosch.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1f60fbe7274918adb8db2f616e321890730ab7e3",
      "tree": "4e41c7a0fd5204cad9e651baa23207bf4dafe256",
      "parents": [
        "c3b46c73264b03000d1e18b22f5caf63332547c9"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Apr 23 22:50:07 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Apr 23 22:50:07 2016 -0400"
      },
      "message": "ext4: allow readdir()\u0027s of large empty directories to be interrupted\n\nIf a directory has a large number of empty blocks, iterating over all\nof them can take a long time, leading to scheduler warnings and users\ngetting irritated when they can\u0027t kill a process in the middle of one\nof these long-running readdir operations.  Fix this by adding checks to\next4_readdir() and ext4_htree_fill_tree().\n\nThis was reverted earlier due to a typo in the original commit where I\nexperimented with using signal_pending() instead of\nfatal_signal_pending().  The test was in the wrong place if we were\ngoing to return signal_pending() since we would end up returning\nduplicant entries.  See 9f2394c9be47 for a more detailed explanation.\n\nAdded fix as suggested by Linus to check for signal_pending() in\nin the filldir() functions.\n\nReported-by: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nGoogle-Bug-Id: 27880676\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "03a8bb0e53d9562276045bdfcf2b5de2e4cff5a1",
      "tree": "558c4c5fe4471d2570a23bb16dbe85c8ee0999ed",
      "parents": [
        "b32e4482aadfd1322357f46d4ed8a990603664d9"
      ],
      "author": {
        "name": "Jaegeuk Kim",
        "email": "jaegeuk@kernel.org",
        "time": "Tue Apr 12 16:05:36 2016 -0700"
      },
      "committer": {
        "name": "Jaegeuk Kim",
        "email": "jaegeuk@kernel.org",
        "time": "Tue Apr 12 20:01:35 2016 -0700"
      },
      "message": "ext4/fscrypto: avoid RCU lookup in d_revalidate\n\nAs Al pointed, d_revalidate should return RCU lookup before using d_inode.\nThis was originally introduced by:\ncommit 34286d666230 (\"fs: rcu-walk aware d_revalidate method\").\n\nReported-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk@kernel.org\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: stable \u003cstable@vger.kernel.org\u003e\n"
    },
    {
      "commit": "b296821a7c42fa58baa17513b2b7b30ae66f3336",
      "tree": "5cb6593218b793ff77df1c21ea74b756af9c8540",
      "parents": [
        "79a628d14ec7ee9adfdc3ce04343d5ff7ec20c18"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Apr 10 20:48:24 2016 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Apr 10 20:48:24 2016 -0400"
      },
      "message": "xattr_handler: pass dentry and inode as separate arguments of -\u003eget()\n\n... and do not assume they are already attached to each other\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9f2394c9be47a754bae9e4b6d382bdd4d77d0a11",
      "tree": "6ace4923e1038f45aa57acb5f1c1166cad61c5c3",
      "parents": [
        "5b5b7fd185e997ebc18f76b98b9f4ff148d3f5bb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 10 16:52:24 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 10 16:52:24 2016 -0700"
      },
      "message": "Revert \"ext4: allow readdir()\u0027s of large empty directories to be interrupted\"\n\nThis reverts commit 1028b55bafb7611dda1d8fed2aeca16a436b7dff.\n\nIt\u0027s broken: it makes ext4 return an error at an invalid point, causing\nthe readdir wrappers to write the the position of the last successful\ndirectory entry into the position field, which means that the next\nreaddir will now return that last successful entry _again_.\n\nYou can only return fatal errors (that terminate the readdir directory\nwalk) from within the filesystem readdir functions, the \"normal\" errors\n(that happen when the readdir buffer fills up, for example) happen in\nthe iterorator where we know the position of the actual failing entry.\n\nI do have a very different patch that does the \"signal_pending()\"\nhandling inside the iterator function where it is allowable, but while\nthat one passes all the sanity checks, I screwed up something like four\ntimes while emailing it out, so I\u0027m not going to commit it today.\n\nSo my track record is not good enough, and the stars will have to align\nbetter before that one gets committed.  And it would be good to get some\nreview too, of course, since celestial alignments are always an iffy\ndebugging model.\n\nIOW, let\u0027s just revert the commit that caused the problem for now.\n\nReported-by: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fc64005c93090c052637f63578d810b037abb1a1",
      "tree": "7762f9680fd773cf265465b0e5f95e4732b90def",
      "parents": [
        "04c57f4501909b60353031cfe5b991751d745658"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Apr 10 01:33:30 2016 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Apr 10 17:11:51 2016 -0400"
      },
      "message": "don\u0027t bother with -\u003ed_inode-\u003ei_sb - it\u0027s always equal to -\u003ed_sb\n\n... and neither can ever be NULL\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "93061f390f107c37bad7e3bf9eb07bda58a4a99f",
      "tree": "6cd3ad605900fa7145a700c22062fabe36ccff95",
      "parents": [
        "1c915b3ac4ecf6ff67573eed24458d862e842cb6",
        "c325a67c72903e1cc30e990a15ce745bda0dbfde"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 07 17:22:20 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 07 17:22:20 2016 -0700"
      },
      "message": "Merge tag \u0027ext4_for_linus_stable\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\nPull ext4 bugfixes from Ted Ts\u0027o:\n \"These changes contains a fix for overlayfs interacting with some\n  (badly behaved) dentry code in various file systems.  These have been\n  reviewed by Al and the respective file system mtinainers and are going\n  through the ext4 tree for convenience.\n\n  This also has a few ext4 encryption bug fixes that were discovered in\n  Android testing (yes, we will need to get these sync\u0027ed up with the\n  fs/crypto code; I\u0027ll take care of that).  It also has some bug fixes\n  and a change to ignore the legacy quota options to allow for xfstests\n  regression testing of ext4\u0027s internal quota feature and to be more\n  consistent with how xfs handles this case\"\n\n* tag \u0027ext4_for_linus_stable\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:\n  ext4: ignore quota mount options if the quota feature is enabled\n  ext4 crypto: fix some error handling\n  ext4: avoid calling dquot_get_next_id() if quota is not enabled\n  ext4: retry block allocation for failed DIO and DAX writes\n  ext4: add lockdep annotations for i_data_sem\n  ext4: allow readdir()\u0027s of large empty directories to be interrupted\n  btrfs: fix crash/invalid memory access on fsync when using overlayfs\n  ext4 crypto: use dget_parent() in ext4_d_revalidate()\n  ext4: use file_dentry()\n  ext4: use dget_parent() in ext4_file_open()\n  nfs: use file_dentry()\n  fs: add file_dentry()\n  ext4 crypto: don\u0027t let data integrity writebacks fail with ENOMEM\n  ext4: check if in-inode xattr is corrupted in ext4_expand_extra_isize_ea()\n"
    },
    {
      "commit": "ea1754a084760e68886f5b725c8eaada9cc57155",
      "tree": "2e14936a959a661ee68d4490cb9b82b94bb27ab9",
      "parents": [
        "09cbfeaf1a5a67bfb3201e0c83c810cecb2efa5a"
      ],
      "author": {
        "name": "Kirill A. Shutemov",
        "email": "kirill.shutemov@linux.intel.com",
        "time": "Fri Apr 01 15:29:48 2016 +0300"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 04 10:41:08 2016 -0700"
      },
      "message": "mm, fs: remove remaining PAGE_CACHE_* and page_cache_{get,release} usage\n\nMostly direct substitution with occasional adjustment or removing\noutdated comments.\n\nSigned-off-by: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "09cbfeaf1a5a67bfb3201e0c83c810cecb2efa5a",
      "tree": "6cdf210c9c0f981cd22544feeba701892ec19464",
      "parents": [
        "c05c2ec96bb8b7310da1055c7b9d786a3ec6dc0c"
      ],
      "author": {
        "name": "Kirill A. Shutemov",
        "email": "kirill.shutemov@linux.intel.com",
        "time": "Fri Apr 01 15:29:47 2016 +0300"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 04 10:41:08 2016 -0700"
      },
      "message": "mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros\n\nPAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} macros were introduced *long* time\nago with promise that one day it will be possible to implement page\ncache with bigger chunks than PAGE_SIZE.\n\nThis promise never materialized.  And unlikely will.\n\nWe have many places where PAGE_CACHE_SIZE assumed to be equal to\nPAGE_SIZE.  And it\u0027s constant source of confusion on whether\nPAGE_CACHE_* or PAGE_* constant should be used in a particular case,\nespecially on the border between fs and mm.\n\nGlobal switching to PAGE_CACHE_SIZE !\u003d PAGE_SIZE would cause to much\nbreakage to be doable.\n\nLet\u0027s stop pretending that pages in page cache are special.  They are\nnot.\n\nThe changes are pretty straight-forward:\n\n - \u003cfoo\u003e \u003c\u003c (PAGE_CACHE_SHIFT - PAGE_SHIFT) -\u003e \u003cfoo\u003e;\n\n - \u003cfoo\u003e \u003e\u003e (PAGE_CACHE_SHIFT - PAGE_SHIFT) -\u003e \u003cfoo\u003e;\n\n - PAGE_CACHE_{SIZE,SHIFT,MASK,ALIGN} -\u003e PAGE_{SIZE,SHIFT,MASK,ALIGN};\n\n - page_cache_get() -\u003e get_page();\n\n - page_cache_release() -\u003e put_page();\n\nThis patch contains automated changes generated with coccinelle using\nscript below.  For some reason, coccinelle doesn\u0027t patch header files.\nI\u0027ve called spatch for them manually.\n\nThe only adjustment after coccinelle is revert of changes to\nPAGE_CAHCE_ALIGN definition: we are going to drop it later.\n\nThere are few places in the code where coccinelle didn\u0027t reach.  I\u0027ll\nfix them manually in a separate patch.  Comments and documentation also\nwill be addressed with the separate patch.\n\nvirtual patch\n\n@@\nexpression E;\n@@\n- E \u003c\u003c (PAGE_CACHE_SHIFT - PAGE_SHIFT)\n+ E\n\n@@\nexpression E;\n@@\n- E \u003e\u003e (PAGE_CACHE_SHIFT - PAGE_SHIFT)\n+ E\n\n@@\n@@\n- PAGE_CACHE_SHIFT\n+ PAGE_SHIFT\n\n@@\n@@\n- PAGE_CACHE_SIZE\n+ PAGE_SIZE\n\n@@\n@@\n- PAGE_CACHE_MASK\n+ PAGE_MASK\n\n@@\nexpression E;\n@@\n- PAGE_CACHE_ALIGN(E)\n+ PAGE_ALIGN(E)\n\n@@\nexpression E;\n@@\n- page_cache_get(E)\n+ get_page(E)\n\n@@\nexpression E;\n@@\n- page_cache_release(E)\n+ put_page(E)\n\nSigned-off-by: Kirill A. Shutemov \u003ckirill.shutemov@linux.intel.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c325a67c72903e1cc30e990a15ce745bda0dbfde",
      "tree": "9f89f45b2b835db915531d80c6c68ad5aea3d314",
      "parents": [
        "4762cc3fbbd89e5fd316d6e4d3244a8984444f8d"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 03 17:03:37 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 03 17:03:37 2016 -0400"
      },
      "message": "ext4: ignore quota mount options if the quota feature is enabled\n\nPreviously, ext4 would fail the mount if the file system had the quota\nfeature enabled and quota mount options (used for the older quota\nsetups) were present.  This broke xfstests, since xfs silently ignores\nthe usrquote and grpquota mount options if they are specified.  This\ncommit changes things so that we are consistent with xfs; having the\nmount options specified is harmless, so no sense break users by\nforbidding them.\n\nCc: stable@vger.kernel.org\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "4762cc3fbbd89e5fd316d6e4d3244a8984444f8d",
      "tree": "8ae24f431df3dd5ddf7d88c2b0e909dc7b1fa0f9",
      "parents": [
        "8f0e8746b4d57303d84f7b161a201e94fe22638f"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Sat Apr 02 18:13:38 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Apr 02 18:13:38 2016 -0400"
      },
      "message": "ext4 crypto: fix some error handling\n\nWe should be testing for -ENOMEM but the minus sign is missing.\n\nFixes: c9af28fdd449 (\u0027ext4 crypto: don\u0027t let data integrity writebacks fail with ENOMEM\u0027)\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "8f0e8746b4d57303d84f7b161a201e94fe22638f",
      "tree": "67526f43bcc7847531e7a8d2ff6fdd34c59543e4",
      "parents": [
        "e84dfbe2bf170c626778079e5b94435b05b8d572"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Apr 01 12:00:03 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Apr 01 12:00:03 2016 -0400"
      },
      "message": "ext4: avoid calling dquot_get_next_id() if quota is not enabled\n\nThis should be fixed in the quota layer so we can test with the quota\nmutex held, but for now, we need this to avoid tests from crashing the\nkernel aborting the regression test suite.\n\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e84dfbe2bf170c626778079e5b94435b05b8d572",
      "tree": "d00b3abe754efacc314909b85ceede6d922c533c",
      "parents": [
        "daf647d2dd58cec59570d7698a45b98e580f2076"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Apr 01 02:07:22 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Apr 01 02:07:22 2016 -0400"
      },
      "message": "ext4: retry block allocation for failed DIO and DAX writes\n\nCurrently if block allocation for DIO or DAX write fails due to ENOSPC,\nwe just returned it to userspace. However these ENOSPC errors can be\ntransient because the transaction freeing blocks has not yet committed.\nThis demonstrates as failures of generic/102 test when the filesystem is\nmounted with \u0027dax\u0027 mount option.\n\nFix the problem by properly retrying the allocation in case of ENOSPC\nerror in get blocks functions used for direct IO.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nTested-by: Ross Zwisler \u003cross.zwisler@linux.intel.com\u003e                                                                               \n"
    },
    {
      "commit": "daf647d2dd58cec59570d7698a45b98e580f2076",
      "tree": "91d950bb640b3e16c36bf09265d46bd07dd0fba0",
      "parents": [
        "1028b55bafb7611dda1d8fed2aeca16a436b7dff"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Apr 01 01:31:28 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Apr 01 01:31:28 2016 -0400"
      },
      "message": "ext4: add lockdep annotations for i_data_sem\n\nWith the internal Quota feature, mke2fs creates empty quota inodes and\nquota usage tracking is enabled as soon as the file system is mounted.\nSince quotacheck is no longer preallocating all of the blocks in the\nquota inode that are likely needed to be written to, we are now seeing\na lockdep false positive caused by needing to allocate a quota block\nfrom inside ext4_map_blocks(), while holding i_data_sem for a data\ninode.  This results in this complaint:\n\n  Possible unsafe locking scenario:\n\n        CPU0                    CPU1\n        ----                    ----\n   lock(\u0026ei-\u003ei_data_sem);\n                                lock(\u0026s-\u003es_dquot.dqio_mutex);\n                                lock(\u0026ei-\u003ei_data_sem);\n   lock(\u0026s-\u003es_dquot.dqio_mutex);\n\nGoogle-Bug-Id: 27907753\n\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "b8a7a3a6674725d7ca0ff6e322f6c1cab6e6a11d",
      "tree": "5f442f636d5a2c2a95ae53a9bb067b320108974b",
      "parents": [
        "8861964f4c7caecbacc89bcb6b513b40cf097a02"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruenba@redhat.com",
        "time": "Thu Mar 24 14:38:37 2016 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 31 00:30:15 2016 -0400"
      },
      "message": "posix_acl: Inode acl caching fixes\n\nWhen get_acl() is called for an inode whose ACL is not cached yet, the\nget_acl inode operation is called to fetch the ACL from the filesystem.\nThe inode operation is responsible for updating the cached acl with\nset_cached_acl().  This is done without locking at the VFS level, so\nanother task can call set_cached_acl() or forget_cached_acl() before the\nget_acl inode operation gets to calling set_cached_acl(), and then\nget_acl\u0027s call to set_cached_acl() results in caching an outdate ACL.\n\nPrevent this from happening by setting the cached ACL pointer to a\ntask-specific sentinel value before calling the get_acl inode operation.\nMove the responsibility for updating the cached ACL from the get_acl\ninode operations to get_acl().  There, only set the cached ACL if the\nsentinel value hasn\u0027t changed.\n\nThe sentinel values are chosen to have odd values.  Likewise, the value\nof ACL_NOT_CACHED is odd.  In contrast, ACL object pointers always have\nan even value (ACLs are aligned in memory).  This allows to distinguish\nuncached ACLs values from ACL objects.\n\nIn addition, switch from guarding inode-\u003ei_acl and inode-\u003ei_default_acl\nupates by the inode-\u003ei_lock spinlock to using xchg() and cmpxchg().\n\nFilesystems that do not want ACLs returned from their get_acl inode\noperations to be cached must call forget_cached_acl() to prevent the VFS\nfrom doing so.\n\n(Patch written by Al Viro and Andreas Gruenbacher.)\n\nSigned-off-by: Andreas Gruenbacher \u003cagruenba@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1028b55bafb7611dda1d8fed2aeca16a436b7dff",
      "tree": "c6881992855b87775897afe3712e6c72811856a0",
      "parents": [
        "de17e793b104d690e1d007dfc5cb6b4f649598ca"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 30 22:36:24 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 30 22:36:24 2016 -0400"
      },
      "message": "ext4: allow readdir()\u0027s of large empty directories to be interrupted\n\nIf a directory has a large number of empty blocks, iterating over all\nof them can take a long time, leading to scheduler warnings and users\ngetting irritated when they can\u0027t kill a process in the middle of one\nof these long-running readdir operations.  Fix this by adding checks to\next4_readdir() and ext4_htree_fill_tree().\n\nReported-by: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nGoogle-Bug-Id: 27880676\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "3d43bcfef5f0548845a425365011c499875491b0",
      "tree": "d2d0be7090b3e17401a70788e93a2668866c831b",
      "parents": [
        "c0a37d48788475d0a2cf4fbfaa28559a9de612fc"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 26 16:15:42 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 26 16:15:42 2016 -0400"
      },
      "message": "ext4 crypto: use dget_parent() in ext4_d_revalidate()\n\nThis avoids potential problems caused by a race where the inode gets\nrenamed out from its parent directory and the parent directory is\ndeleted while ext4_d_revalidate() is running.\n\nFixes: 28b4c263961c\nReported-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: stable@vger.kernel.org\n\n"
    },
    {
      "commit": "c0a37d48788475d0a2cf4fbfaa28559a9de612fc",
      "tree": "64c24a6576795c43e118427c9838892421f529ca",
      "parents": [
        "9dd78d8c9a7bd4bc341f5864db32d4331b8eae4c"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@redhat.com",
        "time": "Sat Mar 26 16:14:42 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 26 16:14:42 2016 -0400"
      },
      "message": "ext4: use file_dentry()\n\nEXT4 may be used as lower layer of overlayfs and accessing f_path.dentry\ncan lead to a crash.\n\nFix by replacing direct access of file-\u003ef_path.dentry with the\nfile_dentry() accessor, which will always return a native object.\n\nReported-by: Daniel Axtens \u003cdja@axtens.net\u003e\nFixes: 4bacc9c9234c (\"overlayfs: Make f_path always point to the overlay and f_inode to the underlay\")\nFixes: ff978b09f973 (\"ext4 crypto: move context consistency check to ext4_file_open()\")\nSigned-off-by: Miklos Szeredi \u003cmszeredi@redhat.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \u003cstable@vger.kernel.org\u003e # v4.5\n"
    },
    {
      "commit": "9dd78d8c9a7bd4bc341f5864db32d4331b8eae4c",
      "tree": "2f70946530b1e90ab39560b206827e460c1444d5",
      "parents": [
        "be62a1a8fd116f5cd9e53726601f970e16e17558"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@redhat.com",
        "time": "Sat Mar 26 16:14:41 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 26 16:14:41 2016 -0400"
      },
      "message": "ext4: use dget_parent() in ext4_file_open()\n\nIn f_op-\u003eopen() lock on parent is not held, so there\u0027s no guarantee that\nparent dentry won\u0027t go away at any time.\n\nEven after this patch there\u0027s no guarantee that \u0027dir\u0027 will stay the parent\nof \u0027inode\u0027, but at least it won\u0027t be freed while being used.\n\nFixes: ff978b09f973 (\"ext4 crypto: move context consistency check to ext4_file_open()\")\nSigned-off-by: Miklos Szeredi \u003cmszeredi@redhat.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: \u003cstable@vger.kernel.org\u003e # v4.5\n"
    },
    {
      "commit": "c9af28fdd44922a6c10c9f8315718408af98e315",
      "tree": "b5bc491b5d141ba710bc6da44b00125b8d5d589c",
      "parents": [
        "9e92f48c34eb2b9af9d12f892e2fe1fce5e8ce35"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 26 16:14:34 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 26 16:14:34 2016 -0400"
      },
      "message": "ext4 crypto: don\u0027t let data integrity writebacks fail with ENOMEM\n\nWe don\u0027t want the writeback triggered from the journal commit (in\ndata\u003dwriteback mode) to cause the journal to abort due to\ngeneric_writepages() returning an ENOMEM error.  In addition, if\nfsync() fails with ENOMEM, most applications will probably not do the\nright thing.\n\nSo if we are doing a data integrity sync, and ext4_encrypt() returns\nENOMEM, we will submit any queued I/O to date, and then retry the\nallocation using GFP_NOFAIL.\n\nGoogle-Bug-Id: 27641567\n\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "121cef8f17d80e97838ea2f88715417e675e4403",
      "tree": "abb5b964a9b46db982e78ce546095cef8b7b257a",
      "parents": [
        "6d8bedff926b7d31fa68e7f81c2f13fdc29fe157"
      ],
      "author": {
        "name": "Andy Lutomirski",
        "email": "luto@kernel.org",
        "time": "Tue Mar 22 14:25:04 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 15:36:02 2016 -0700"
      },
      "message": "ext4: in ext4_dir_llseek, check syscall bitness directly\n\next4 treats directory offsets differently for 32-bit and 64-bit callers.\nCheck the caller type using in_compat_syscall, not is_compat_task.  This\nchanges behavior on SPARC slightly.\n\nSigned-off-by: Andy Lutomirski \u003cluto@kernel.org\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Andreas Dilger \u003cadilger.kernel@dilger.ca\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9e92f48c34eb2b9af9d12f892e2fe1fce5e8ce35",
      "tree": "fd069c88e42791d7ed0ab087bc5389b98b574458",
      "parents": [
        "243d50678583100855862bc084b8b307eea67f68"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Mar 22 16:13:15 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Mar 22 16:13:15 2016 -0400"
      },
      "message": "ext4: check if in-inode xattr is corrupted in ext4_expand_extra_isize_ea()\n\nWe aren\u0027t checking to see if the in-inode extended attribute is\ncorrupted before we try to expand the inode\u0027s extra isize fields.\n\nThis can lead to potential crashes caused by the BUG_ON() check in\next4_xattr_shift_entries().\n\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "77d913178c248d436a15151be5214ef2bf06a465",
      "tree": "92c16e294858eab0042abc77389e4bd2f4770264",
      "parents": [
        "53d2e6976bd4042672ed7b90dfbf4b31635b7dcf",
        "ab73ef46398e2c0159f3a71de834586422d2a44a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 21 12:22:37 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 21 12:22:37 2016 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs\n\nPull UDF and quota updates from Jan Kara:\n \"This contains a rewrite of UDF handling of filename encoding to fix\n  remaining overflow issues from Andrew Gabbasov and quota changes to\n  support new Q_[X]GETNEXTQUOTA quotactl for VFS quota formats\"\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:\n  quota: Fix possible GPF due to uninitialised pointers\n  ext4: Make Q_GETNEXTQUOTA work for quota in hidden inodes\n  quota: Forbid Q_GETQUOTA and Q_GETNEXTQUOTA for frozen filesystem\n  quota: Fix possible races during quota loading\n  ocfs2: Implement get_next_id()\n  quota_v2: Implement get_next_id() for V2 quota format\n  quota: Add support for -\u003eget_nextdqblk() for VFS quota\n  udf: Merge linux specific translation into CS0 conversion function\n  udf: Remove struct ustr as non-needed intermediate storage\n  udf: Use separate buffer for copying split names\n  udf: Adjust UDF_NAME_LEN to better reflect actual restrictions\n  udf: Join functions for UTF8 and NLS conversions\n  udf: Parameterize output length in udf_put_filename\n  quota: Allow Q_GETQUOTA for frozen filesystem\n  quota: Fixup comments about return value of Q_[X]GETNEXTQUOTA\n"
    },
    {
      "commit": "53d2e6976bd4042672ed7b90dfbf4b31635b7dcf",
      "tree": "1d137e044c52433df6b4785fed1c7aafbb9333bc",
      "parents": [
        "d407574e7948210223a7adca5ff26e3b0ec8143e",
        "2cdb958aba6afbced5bc563167813b972b6acbfe"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 21 11:53:05 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 21 11:53:05 2016 -0700"
      },
      "message": "Merge tag \u0027xfs-for-linus-4.6-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs\n\nPull xfs updates from Dave Chinner:\n \"There\u0027s quite a lot in this request, and there\u0027s some cross-over with\n  ext4, dax and quota code due to the nature of the changes being made.\n\n  As for the rest of the XFS changes, there are lots of little things\n  all over the place, which add up to a lot of changes in the end.\n\n  The major changes are that we\u0027ve reduced the size of the struct\n  xfs_inode by ~100 bytes (gives an inode cache footprint reduction of\n  \u003e10%), the writepage code now only does a single set of mapping tree\n  lockups so uses less CPU, delayed allocation reservations won\u0027t\n  overrun under random write loads anymore, and we added compile time\n  verification for on-disk structure sizes so we find out when a commit\n  or platform/compiler change breaks the on disk structure as early as\n  possible.\n\n  Change summary:\n\n   - error propagation for direct IO failures fixes for both XFS and\n     ext4\n   - new quota interfaces and XFS implementation for iterating all the\n     quota IDs in the filesystem\n   - locking fixes for real-time device extent allocation\n   - reduction of duplicate information in the xfs and vfs inode, saving\n     roughly 100 bytes of memory per cached inode.\n   - buffer flag cleanup\n   - rework of the writepage code to use the generic write clustering\n     mechanisms\n   - several fixes for inode flag based DAX enablement\n   - rework of remount option parsing\n   - compile time verification of on-disk format structure sizes\n   - delayed allocation reservation overrun fixes\n   - lots of little error handling fixes\n   - small memory leak fixes\n   - enable xfsaild freezing again\"\n\n* tag \u0027xfs-for-linus-4.6-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs: (66 commits)\n  xfs: always set rvalp in xfs_dir2_node_trim_free\n  xfs: ensure committed is initialized in xfs_trans_roll\n  xfs: borrow indirect blocks from freed extent when available\n  xfs: refactor delalloc indlen reservation split into helper\n  xfs: update freeblocks counter after extent deletion\n  xfs: debug mode forced buffered write failure\n  xfs: remove impossible condition\n  xfs: check sizes of XFS on-disk structures at compile time\n  xfs: ioends require logically contiguous file offsets\n  xfs: use named array initializers for log item dumping\n  xfs: fix computation of inode btree maxlevels\n  xfs: reinitialise per-AG structures if geometry changes during recovery\n  xfs: remove xfs_trans_get_block_res\n  xfs: fix up inode32/64 (re)mount handling\n  xfs: fix format specifier , should be %llx and not %llu\n  xfs: sanitize remount options\n  xfs: convert mount option parsing to tokens\n  xfs: fix two memory leaks in xfs_attr_list.c error paths\n  xfs: XFS_DIFLAG2_DAX limited by PAGE_SIZE\n  xfs: dynamically switch modes when XFS_DIFLAG2_DAX is set/cleared\n  ...\n"
    },
    {
      "commit": "faeb20ecfa398b043c3224607f512c009c51653d",
      "tree": "ffd185ffb5e499a76f261c700de72241e6781ecf",
      "parents": [
        "364e8dd9d636fea7def862919aac092b19b7c581",
        "0304688676bdfc8159e165313d71da19c118ba27"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 17 16:31:18 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 17 16:31:18 2016 -0700"
      },
      "message": "Merge tag \u0027ext4_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\nPull ext4 updates from Ted Ts\u0027o:\n \"Performance improvements in SEEK_DATA and xattr scalability\n  improvements, plus a lot of clean ups and bug fixes\"\n\n* tag \u0027ext4_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (38 commits)\n  ext4: clean up error handling in the MMP support\n  jbd2: do not fail journal because of frozen_buffer allocation failure\n  ext4: use __GFP_NOFAIL in ext4_free_blocks()\n  ext4: fix compile error while opening the macro DOUBLE_CHECK\n  ext4: print ext4 mount option data_err\u003dabort correctly\n  ext4: fix NULL pointer dereference in ext4_mark_inode_dirty()\n  ext4: drop unneeded BUFFER_TRACE in ext4_delete_inline_entry()\n  ext4: fix misspellings in comments.\n  jbd2: fix FS corruption possibility in jbd2_journal_destroy() on umount path\n  ext4: more efficient SEEK_DATA implementation\n  ext4: cleanup handling of bh-\u003eb_state in DAX mmap\n  ext4: return hole from ext4_map_blocks()\n  ext4: factor out determining of hole size\n  ext4: fix setting of referenced bit in ext4_es_lookup_extent()\n  ext4: remove i_ioend_count\n  ext4: simplify io_end handling for AIO DIO\n  ext4: move trans handling and completion deferal out of _ext4_get_block\n  ext4: rename and split get blocks functions\n  ext4: use i_mutex to serialize unaligned AIO DIO\n  ext4: pack ioend structure better\n  ...\n"
    },
    {
      "commit": "70477371dc350746d10431d74f0f213a8d59924c",
      "tree": "6271978b6e4ee4b1e6f22775ad7fc0930c09d3ee",
      "parents": [
        "09fd671ccb2475436bd5f597f751ca4a7d177aea",
        "34074205bb9f04b416efb3cbedcd90f418c86200"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 17 11:22:54 2016 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 17 11:22:54 2016 -0700"
      },
      "message": "Merge branch \u0027linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6\n\nPull crypto update from Herbert Xu:\n \"Here is the crypto update for 4.6:\n\n  API:\n   - Convert remaining crypto_hash users to shash or ahash, also convert\n     blkcipher/ablkcipher users to skcipher.\n   - Remove crypto_hash interface.\n   - Remove crypto_pcomp interface.\n   - Add crypto engine for async cipher drivers.\n   - Add akcipher documentation.\n   - Add skcipher documentation.\n\n  Algorithms:\n   - Rename crypto/crc32 to avoid name clash with lib/crc32.\n   - Fix bug in keywrap where we zero the wrong pointer.\n\n  Drivers:\n   - Support T5/M5, T7/M7 SPARC CPUs in n2 hwrng driver.\n   - Add PIC32 hwrng driver.\n   - Support BCM6368 in bcm63xx hwrng driver.\n   - Pack structs for 32-bit compat users in qat.\n   - Use crypto engine in omap-aes.\n   - Add support for sama5d2x SoCs in atmel-sha.\n   - Make atmel-sha available again.\n   - Make sahara hashing available again.\n   - Make ccp hashing available again.\n   - Make sha1-mb available again.\n   - Add support for multiple devices in ccp.\n   - Improve DMA performance in caam.\n   - Add hashing support to rockchip\"\n\n* \u0027linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (116 commits)\n  crypto: qat - remove redundant arbiter configuration\n  crypto: ux500 - fix checks of error code returned by devm_ioremap_resource()\n  crypto: atmel - fix checks of error code returned by devm_ioremap_resource()\n  crypto: qat - Change the definition of icp_qat_uof_regtype\n  hwrng: exynos - use __maybe_unused to hide pm functions\n  crypto: ccp - Add abstraction for device-specific calls\n  crypto: ccp - CCP versioning support\n  crypto: ccp - Support for multiple CCPs\n  crypto: ccp - Remove check for x86 family and model\n  crypto: ccp - memset request context to zero during import\n  lib/mpi: use \"static inline\" instead of \"extern inline\"\n  lib/mpi: avoid assembler warning\n  hwrng: bcm63xx - fix non device tree compatibility\n  crypto: testmgr - allow rfc3686 aes-ctr variants in fips mode.\n  crypto: qat - The AE id should be less than the maximal AE number\n  lib/mpi: Endianness fix\n  crypto: rockchip - add hash support for crypto engine in rk3288\n  crypto: xts - fix compile errors\n  crypto: doc - add skcipher API documentation\n  crypto: doc - update AEAD AD handling\n  ...\n"
    },
    {
      "commit": "0304688676bdfc8159e165313d71da19c118ba27",
      "tree": "029ff2743a674d77d37e2c27d1c651b72fb4500e",
      "parents": [
        "490c1b444ce653d0784a9a5fa4d11287029feeb9"
      ],
      "author": {
        "name": "vikram.jadhav07",
        "email": "vikramjadhavpucsd2007@gmail.com",
        "time": "Sun Mar 13 17:56:52 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Mar 13 17:56:52 2016 -0400"
      },
      "message": "ext4: clean up error handling in the MMP support\n\nThere is memory leak as both caller function kmmpd() and callee\nread_mmp_block() not releasing bh_check  (i.e buffer_head).\nGiven patch fixes this problem.\n\n[ Additional changes suggested by Andreas Dilger -- TYT ]\n\nSigned-off-by: Jadhav Vikram \u003cvikramjadhavpucsd2007@gmail.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "adb7ef600cc9d9d15ecc934cc26af5c1379777df",
      "tree": "9e3e1c7ab516d9646e00bd3954c501dd9a0ac0d2",
      "parents": [
        "a2821e34df141ac6019552618b57fa09227ff0dd"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@yandex-team.ru",
        "time": "Sun Mar 13 17:29:06 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Mar 13 17:29:06 2016 -0400"
      },
      "message": "ext4: use __GFP_NOFAIL in ext4_free_blocks()\n\nThis might be unexpected but pages allocated for sbi-\u003es_buddy_cache are\ncharged to current memory cgroup. So, GFP_NOFS allocation could fail if\ncurrent task has been killed by OOM or if current memory cgroup has no\nfree memory left. Block allocator cannot handle such failures here yet.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@yandex-team.ru\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a2821e34df141ac6019552618b57fa09227ff0dd",
      "tree": "b6987a42e55f4c5f6123c67653d2d0c83f531128",
      "parents": [
        "7915a861c01839a05eb7346023741742c4d2135e"
      ],
      "author": {
        "name": "Aihua Zhang",
        "email": "zhangaihua1@huawei.com",
        "time": "Sun Mar 13 17:18:12 2016 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Mar 13 17:18:12 2016 -0400"
      },
      "message": "ext4: fix compile error while opening the macro DOUBLE_CHECK\n\nthe error is:\n    fs/ext4/mballoc.c:475:43: error: \u0027struct ext4_group_info\u0027 has\nno member named \u0027bb_bitmap\u0027.\n    so, the definition of macro DOUBLE_CHECK should before\n\u0027struct ext4_group_info\u0027, I fixed it, and I moved the macro\nAGGRESSIVE_CHECK together, because I think they shoule be together.\n\nSigned-off-by: Aihua Zhang \u003czhangaihua1@huawei.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7915a861c01839a05eb7346023741742c4d2135e",
      "tree": "6126ca1c56f8ee95964cd482b8f9e6e4f4ecd2ea",
      "parents": [
        "5e1021f2b6dff1a86a468a1424d59faae2bc63c1"
      ],
      "author": {
        "name": "Ales Novak",
        "email": "alnovak@suse.cz",
        "time": "Sat Mar 12 21:55:50 2016 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 12 21:55:50 2016 -0500"
      },
      "message": "ext4: print ext4 mount option data_err\u003dabort correctly\n\nIf data_err\u003dabort option is specified for an ext3/ext4 mount,\n/proc/mounts does show it as \"(null)\". This is caused by token2str()\nreturning NULL for Opt_data_err_abort (due to its pattern containing\n\u0027\u003d\u0027).\n\nSigned-off-by: Ales Novak \u003calnovak@suse.cz\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5e1021f2b6dff1a86a468a1424d59faae2bc63c1",
      "tree": "13e630a594399bdbcd73b887731aff73bd7ded0d",
      "parents": [
        "a8ed9b8695065d37d45efc446efbde5654f9f7c2"
      ],
      "author": {
        "name": "Eryu Guan",
        "email": "guaneryu@gmail.com",
        "time": "Sat Mar 12 21:40:32 2016 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 12 21:40:32 2016 -0500"
      },
      "message": "ext4: fix NULL pointer dereference in ext4_mark_inode_dirty()\n\next4_reserve_inode_write() in ext4_mark_inode_dirty() could fail on\nerror (e.g. EIO) and iloc.bh can be NULL in this case. But the error is\nignored in the following \"if\" condition and ext4_expand_extra_isize()\nmight be called with NULL iloc.bh set, which triggers NULL pointer\ndereference.\n\nThis is uncovered by commit 8b4953e13f4c (\"ext4: reserve code points for\nthe project quota feature\"), which enlarges the ext4_inode size, and\nrun the following script on new kernel but with old mke2fs:\n\n  #/bin/bash\n  mnt\u003d/mnt/ext4\n  devname\u003dext4-error\n  dev\u003d/dev/mapper/$devname\n  fsimg\u003d/home/fs.img\n\n  trap cleanup 0 1 2 3 9 15\n\n  cleanup()\n  {\n          umount $mnt \u003e/dev/null 2\u003e\u00261\n          dmsetup remove $devname\n          losetup -d $backend_dev\n          rm -f $fsimg\n          exit 0\n  }\n\n  rm -f $fsimg\n  fallocate -l 1g $fsimg\n  backend_dev\u003d`losetup -f --show $fsimg`\n  devsize\u003d`blockdev --getsz $backend_dev`\n\n  good_tab\u003d\"0 $devsize linear $backend_dev 0\"\n  error_tab\u003d\"0 $devsize error $backend_dev 0\"\n\n  dmsetup create $devname --table \"$good_tab\"\n\n  mkfs -t ext4 $dev\n  mount -t ext4 -o errors\u003dcontinue,strictatime $dev $mnt\n\n  dmsetup load $devname --table \"$error_tab\" \u0026\u0026 dmsetup resume $devname\n  echo 3 \u003e /proc/sys/vm/drop_caches\n  ls -l $mnt\n  exit 0\n\n[ Patch changed to simplify the function a tiny bit. -- Ted ]\n\nSigned-off-by: Eryu Guan \u003cguaneryu@gmail.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a8ed9b8695065d37d45efc446efbde5654f9f7c2",
      "tree": "9cc36d3755256f967544d36fb25aeb8f4be8294b",
      "parents": [
        "b8a07463c8c5fd7c609590c7cd9eda897a1b6cd6"
      ],
      "author": {
        "name": "Geliang Tang",
        "email": "geliangtang@163.com",
        "time": "Thu Mar 10 00:18:57 2016 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Mar 10 00:18:57 2016 -0500"
      },
      "message": "ext4: drop unneeded BUFFER_TRACE in ext4_delete_inline_entry()\n\nBUFFER_TRACE info \"call ext4_handle_dirty_metadata\" doesn\u0027t match the\ncode, so drop it.\n\nSigned-off-by: Geliang Tang \u003cgeliangtang@163.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b8a07463c8c5fd7c609590c7cd9eda897a1b6cd6",
      "tree": "b2c1287712eeaccc8ef05dedc320154cc052aa9a",
      "parents": [
        "c0a2ad9b50dd80eeccd73d9ff962234590d5ec93"
      ],
      "author": {
        "name": "Adam Buchbinder",
        "email": "adam.buchbinder@gmail.com",
        "time": "Wed Mar 09 23:49:05 2016 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 09 23:49:05 2016 -0500"
      },
      "message": "ext4: fix misspellings in comments.\n\nSigned-off-by: Adam Buchbinder \u003cadam.buchbinder@gmail.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2d90c160e5f1d784e180f1e1458d56eee4d7f4f4",
      "tree": "883dc6e8433bbe315fa8fce00154d51ac52b3dd7",
      "parents": [
        "e3fb8eb14eafd2847c04cf48b52a705c36f4db98"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Mar 09 23:11:13 2016 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 09 23:11:13 2016 -0500"
      },
      "message": "ext4: more efficient SEEK_DATA implementation\n\nUsing SEEK_DATA in a huge sparse file can easily lead to sotflockups as\next4_seek_data() iterates hole block-by-block. Fix the problem by using\nreturned hole size from ext4_map_blocks() and thus skip the hole in one\ngo.\n\nUpdate also SEEK_HOLE implementation to follow the same pattern as\nSEEK_DATA to make future maintenance easier.\n\nFurthermore we add cond_resched() to both ext4_seek_data() and\next4_seek_hole() to avoid softlockups in case evil user creates huge\nfragmented file and we have to go through lots of extents.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e3fb8eb14eafd2847c04cf48b52a705c36f4db98",
      "tree": "df595ad9bd1be63bca5923955b2bb95a9f156c3f",
      "parents": [
        "facab4d9711e7aa3532cb82643803e8f1b9518e8"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Mar 09 23:03:27 2016 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 09 23:03:27 2016 -0500"
      },
      "message": "ext4: cleanup handling of bh-\u003eb_state in DAX mmap\n\next4_dax_mmap_get_block() updates bh-\u003eb_state directly instead of using\next4_update_bh_state(). This is mostly a cosmetic issue since DAX code\nalways passes on-stack buffer_head but clean this up to make code more\nuniform.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "facab4d9711e7aa3532cb82643803e8f1b9518e8",
      "tree": "5c0f800db5aeb1fca6842c81cd3821ae847fcc0d",
      "parents": [
        "140a52508a68387e22486659ff9eaa89a24f6e40"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Mar 09 22:54:00 2016 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 09 22:54:00 2016 -0500"
      },
      "message": "ext4: return hole from ext4_map_blocks()\n\nCurrently, ext4_map_blocks() just returns 0 when it finds a hole and\nallocation is not requested. However we have all the information\navailable to tell how large the hole actually is and there are callers\nof ext4_map_blocks() which would save some block-by-block hole iteration\nif they knew this information. So fill in struct ext4_map_blocks even\nfor holes with the information we have. We keep returning 0 for holes to\nmaintain backward compatibility of the function.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "140a52508a68387e22486659ff9eaa89a24f6e40",
      "tree": "8326fcc3d156921d8e07287840632b058d671068",
      "parents": [
        "87d8a74b56746d4b6125602365b10995116afd00"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Mar 09 22:46:57 2016 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 09 22:46:57 2016 -0500"
      },
      "message": "ext4: factor out determining of hole size\n\next4_ext_put_gap_in_cache() determines hole size in the extent tree,\nthen trims this with possible delayed allocated blocks, and inserts the\nresult into the extent status tree. Factor out determination of the size\nof the hole in the extent tree as we will need this information in\next4_ext_map_blocks() as well.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "718e47a573a43dba9a1673e0fc29fb36d3ef9769",
      "tree": "eb6f8d7a07c5ddb6691c6791cf1c780cb0d58fe4",
      "parents": [
        "a6e434e9550807164c5ab7bffde59e9e7a4e717b",
        "6ffe77bad545f4a7c8edd2a4ee797ccfcd894ab4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 09 19:33:05 2016 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 09 19:33:05 2016 -0800"
      },
      "message": "Merge tag \u0027ext4_for_linus_stable\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\nPull ext4 fix from Ted Ts\u0027o:\n \"This fixes a regression which crept in v4.5-rc5\"\n\n* tag \u0027ext4_for_linus_stable\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:\n  ext4: iterate over buffer heads correctly in move_extent_per_page()\n"
    },
    {
      "commit": "87d8a74b56746d4b6125602365b10995116afd00",
      "tree": "99d114c523b37787451f3f72af3d191c6d3b7961",
      "parents": [
        "600be30a8bc1d405f791e01dbef84679e14529b8"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Mar 09 22:26:55 2016 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 09 22:26:55 2016 -0500"
      },
      "message": "ext4: fix setting of referenced bit in ext4_es_lookup_extent()\n\nWe were setting referenced bit on the extent structure we return from\next4_es_lookup_extent() which is just a private structure on stack. Thus\nsetting had no effect. Set the bit in the structure in the status tree\ninstead.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "6ffe77bad545f4a7c8edd2a4ee797ccfcd894ab4",
      "tree": "842dcd9b2f4a8d82df26d11e9c22779ec7b9894d",
      "parents": [
        "1e9d180ba39f42e8ca4a808baef3a3ef034b1c2c"
      ],
      "author": {
        "name": "Eryu Guan",
        "email": "guaneryu@gmail.com",
        "time": "Sun Feb 21 18:38:44 2016 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 09 21:37:53 2016 -0500"
      },
      "message": "ext4: iterate over buffer heads correctly in move_extent_per_page()\n\nIn commit bcff24887d00 (\"ext4: don\u0027t read blocks from disk after extents\nbeing swapped\") bh is not updated correctly in the for loop and wrong\ndata has been written to disk. generic/324 catches this on sub-page\nblock size ext4.\n\nFixes: bcff24887d00 (\"ext4: don\u0027t read blocks from disk after extentsbeing swapped\")\nSigned-off-by: Eryu Guan \u003cguaneryu@gmail.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "600be30a8bc1d405f791e01dbef84679e14529b8",
      "tree": "80294bd12feff70f252d2de1810e6fd713facc39",
      "parents": [
        "109811c20fb8ec46e2ed01750214a32a9163d164"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Mar 08 23:39:21 2016 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Mar 08 23:39:21 2016 -0500"
      },
      "message": "ext4: remove i_ioend_count\n\nRemove counter of pending io ends as it is unused.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n"
    }
  ],
  "next": "109811c20fb8ec46e2ed01750214a32a9163d164"
}
