)]}'
{
  "log": [
    {
      "commit": "41d9884c44237cd66e2bdbc412028b29196b344c",
      "tree": "7a386f6de2f07c01f87f3a16965c9bb8b40f63c1",
      "parents": [
        "63345b4794aef4ebe16502cfe35b02bc9822d763",
        "dae3794fd603b92dcbac2859fe0bc7fe129a5188"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 14 11:42:26 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 14 11:42:26 2013 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull more vfs stuff from Al Viro:\n \"O_TMPFILE ABI changes, Oleg\u0027s fput() series, misc cleanups, including\n  making simple_lookup() usable for filesystems with non-NULL s_d_op,\n  which allows us to get rid of quite a bit of ugliness\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:\n  sunrpc: now we can just set -\u003es_d_op\n  cgroup: we can use simple_lookup() now\n  efivarfs: we can use simple_lookup() now\n  make simple_lookup() usable for filesystems that set -\u003es_d_op\n  configfs: don\u0027t open-code d_alloc_name()\n  __rpc_lookup_create_exclusive: pass string instead of qstr\n  rpc_create_*_dir: don\u0027t bother with qstr\n  llist: llist_add() can use llist_add_batch()\n  llist: fix/simplify llist_add() and llist_add_batch()\n  fput: turn \"list_head delayed_fput_list\" into llist_head\n  fs/file_table.c:fput(): add comment\n  Safer ABI for O_TMPFILE\n"
    },
    {
      "commit": "4f5e65a1cc90bbb15b9f6cdc362922af1bcc155a",
      "tree": "c635e87d98c9961ad95c2351bae6d9609eeb761f",
      "parents": [
        "64372501e2af9b11e2ffd1ff79345dc4b1abe539"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Jul 08 14:24:16 2013 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 13 13:29:10 2013 +0400"
      },
      "message": "fput: turn \"list_head delayed_fput_list\" into llist_head\n\nfput() and delayed_fput() can use llist and avoid the locking.\n\nThis is unlikely path, it is not that this change can improve\nthe performance, but this way the code looks simpler.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSuggested-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andrey Vagin \u003cavagin@openvz.org\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Huang Ying \u003cying.huang@intel.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a82a729f04232ccd0b59406574ba4cf20027a49d",
      "tree": "da5912344b00ed60a1a653fc2442db7425db289d",
      "parents": [
        "899dd388853071f5c8848545209d4e2c5d95b1d9",
        "27daabd9b6a157c34a6e7a7f509fa26866e6420f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 09 13:33:36 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 09 13:33:36 2013 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (updates from Andrew Morton)\n\nMerge second patch-bomb from Andrew Morton:\n - misc fixes\n - audit stuff\n - fanotify/inotify/dnotify things\n - most of the rest of MM.  The new cache shrinker code from Glauber and\n   Dave Chinner probably isn\u0027t quite stabilized yet.\n - ptrace\n - ipc\n - partitions\n - reboot cleanups\n - add LZ4 decompressor, use it for kernel compression\n\n* emailed patches from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (118 commits)\n  lib/scatterlist: error handling in __sg_alloc_table()\n  scsi_debug: fix do_device_access() with wrap around range\n  crypto: talitos: use sg_pcopy_to_buffer()\n  lib/scatterlist: introduce sg_pcopy_from_buffer() and sg_pcopy_to_buffer()\n  lib/scatterlist: factor out sg_miter_get_next_page() from sg_miter_next()\n  crypto: add lz4 Cryptographic API\n  lib: add lz4 compressor module\n  arm: add support for LZ4-compressed kernel\n  lib: add support for LZ4-compressed kernel\n  decompressor: add LZ4 decompressor module\n  lib: add weak clz/ctz functions\n  reboot: move arch/x86 reboot\u003d handling to generic kernel\n  reboot: arm: change reboot_mode to use enum reboot_mode\n  reboot: arm: prepare reboot_mode for moving to generic kernel code\n  reboot: arm: remove unused restart_mode fields from some arm subarchs\n  reboot: unicore32: prepare reboot_mode for moving to generic kernel code\n  reboot: x86: prepare reboot_mode for moving to generic kernel code\n  reboot: checkpatch.pl the new kernel/reboot.c file\n  reboot: move shutdown/reboot related functions to kernel/reboot.c\n  reboot: remove -stable friendly PF_THREAD_BOUND define\n  ...\n"
    },
    {
      "commit": "ef277c73ca3b1aade278036ae11640090681d558",
      "tree": "87290bf57329a3df8c381b3078b07a137c4fc543",
      "parents": [
        "bcb615a81b1765864c71c50afb56631e7a1e5283"
      ],
      "author": {
        "name": "Tang Chen",
        "email": "tangchen@cn.fujitsu.com",
        "time": "Mon Jul 08 16:00:21 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 09 10:33:23 2013 -0700"
      },
      "message": "page migration: fix wrong comment in address_space_operations.migratepage()\n\nThere is no parameter \"sync\" in address_space_operations-\u003emigratepage().\nIt should be migrate_mode.  And the comment is for MIGRATE_ASYNC.\n\nSigned-off-by: Tang Chen \u003ctangchen@cn.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7012b02a2b2c42bb1e1d95040a6e3bb59c7284f7",
      "tree": "6a1c54cdca608ad75db6282cc4c0c7a6bb5f7673",
      "parents": [
        "0bc77381c1b1600e659eb7322c39d1753615722d"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Jun 21 08:58:22 2013 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 08 13:36:42 2013 +0400"
      },
      "message": "locks: move file_lock_list to a set of percpu hlist_heads and convert file_lock_lock to an lglock\n\nThe file_lock_list is only used for /proc/locks. The vastly common case\nis for locks to be put onto the list and come off again, without ever\nbeing traversed.\n\nHelp optimize for this use-case by moving to percpu hlist_head-s. At the\nsame time, we can make the locking less contentious by moving to an\nlglock. When iterating over the lists for /proc/locks, we must take the\nglobal lock and then iterate over each CPU\u0027s list in turn.\n\nThis change necessitates a new fl_link_cpu field to keep track of which\nCPU the entry is on. On x86_64 at least, this field is placed within an\nexisting hole in the struct to avoid growing the size.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nAcked-by: J. Bruce Fields \u003cbfields@fieldses.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b45972265f823ed01eae0867a176320071665787",
      "tree": "ded8dcb801e71fe10e38c715a91571c745c563b5",
      "parents": [
        "d04e8acd03e5c3421ef18e3da7bc88d56179ca42"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Wed Jul 03 15:02:05 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 03 16:07:29 2013 -0700"
      },
      "message": "mm: vmscan: take page buffers dirty and locked state into account\n\nPage reclaim keeps track of dirty and under writeback pages and uses it\nto determine if wait_iff_congested() should stall or if kswapd should\nbegin writing back pages.  This fails to account for buffer pages that\ncan be under writeback but not PageWriteback which is the case for\nfilesystems like ext3 ordered mode.  Furthermore, PageDirty buffer pages\ncan have all the buffers clean and writepage does no IO so it should not\nbe accounted as congested.\n\nThis patch adds an address_space operation that filesystems may\noptionally use to check if a page is really dirty or really under\nwriteback.  An implementation is provided for for buffer_heads is added\nand used for block operations and ext3 in ordered mode.  By default the\npage flags are obeyed.\n\nCredit goes to Jan Kara for identifying that the page flags alone are\nnot sufficient for ext3 and sanity checking a number of ideas on how the\nproblem could be addressed.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Jiri Slaby \u003cjslaby@suse.cz\u003e\nCc: Valdis Kletnieks \u003cValdis.Kletnieks@vt.edu\u003e\nCc: Zlatko Calusic \u003czcalusic@bitsync.net\u003e\nCc: dormando \u003cdormando@rydia.net\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "790eac5640abf7a57fa3a644386df330e18c11b0",
      "tree": "08de20bde44f59e51b91ff473a71047c2957e8c9",
      "parents": [
        "0b0585c3e192967cb2ef0ac0816eb8a8c8d99840",
        "48bde8d3620f5f3c6ae9ff599eb404055ae51664"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 03 09:10:19 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 03 09:10:19 2013 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull second set of VFS changes from Al Viro:\n \"Assorted f_pos race fixes, making do_splice_direct() safe to call with\n  i_mutex on parent, O_TMPFILE support, Jeff\u0027s locks.c series,\n  -\u003ed_hash/-\u003ed_compare calling conventions changes from Linus, misc\n  stuff all over the place.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (63 commits)\n  Document -\u003etmpfile()\n  ext4: -\u003etmpfile() support\n  vfs: export lseek_execute() to modules\n  lseek_execute() doesn\u0027t need an inode passed to it\n  block_dev: switch to fixed_size_llseek()\n  cpqphp_sysfs: switch to fixed_size_llseek()\n  tile-srom: switch to fixed_size_llseek()\n  proc_powerpc: switch to fixed_size_llseek()\n  ubi/cdev: switch to fixed_size_llseek()\n  pci/proc: switch to fixed_size_llseek()\n  isapnp: switch to fixed_size_llseek()\n  lpfc: switch to fixed_size_llseek()\n  locks: give the blocked_hash its own spinlock\n  locks: add a new \"lm_owner_key\" lock operation\n  locks: turn the blocked_list into a hashtable\n  locks: convert fl_link to a hlist_node\n  locks: avoid taking global lock if possible when waking up blocked waiters\n  locks: protect most of the file_lock handling with i_lock\n  locks: encapsulate the fl_link list handling\n  locks: make \"added\" in __posix_lock_file a bool\n  ...\n"
    },
    {
      "commit": "46a1c2c7ae53de2a5676754b54a73c591a3951d2",
      "tree": "1910875cf34a7fe1cd8fd9474d3a5538236fb4f0",
      "parents": [
        "2142914e3eb1168978e842f65cfd182be7582861"
      ],
      "author": {
        "name": "Jie Liu",
        "email": "jeff.liu@oracle.com",
        "time": "Tue Jun 25 12:02:13 2013 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 03 16:23:27 2013 +0400"
      },
      "message": "vfs: export lseek_execute() to modules\n\nFor those file systems(btrfs/ext4/ocfs2/tmpfs) that support\nSEEK_DATA/SEEK_HOLE functions, we end up handling the similar\nmatter in lseek_execute() to update the current file offset\nto the desired offset if it is valid, ceph also does the\nsimliar things at ceph_llseek().\n\nTo reduce the duplications, this patch make lseek_execute()\npublic accessible so that we can call it directly from the\nunderlying file systems.\n\nThanks Dave Chinner for this suggestion.\n\n[AV: call it vfs_setpos(), don\u0027t bring the removed \u0027inode\u0027 argument back]\n\nv2-\u003ev1:\n- Add kernel-doc comments for lseek_execute()\n- Call lseek_execute() in ceph-\u003ellseek()\n\nSigned-off-by: Jie Liu \u003cjeff.liu@oracle.com\u003e\nCc: Dave Chinner \u003cdchinner@redhat.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Chris Mason \u003cchris.mason@fusionio.com\u003e\nCc: Josef Bacik \u003cjbacik@fusionio.com\u003e\nCc: Ben Myers \u003cbpm@sgi.com\u003e\nCc: Ted Tso \u003ctytso@mit.edu\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjlbec@evilplan.org\u003e\nCc: Sage Weil \u003csage@inktank.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9e239bb93914e1c832d54161c7f8f398d0c914ab",
      "tree": "0fe11e8e717152660ad77d77e66bf0f1695d7ed1",
      "parents": [
        "63580e51bb3e7ec459501165884e5f815a7a9322",
        "6ae06ff51eab5dcbbf959b05ce0f11003a305ba5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 02 09:39:34 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 02 09:39:34 2013 -0700"
      },
      "message": "Merge tag \u0027ext4_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\nPull ext4 update from Ted Ts\u0027o:\n \"Lots of bug fixes, cleanups and optimizations.  In the bug fixes\n  category, of note is a fix for on-line resizing file systems where the\n  block size is smaller than the page size (i.e., file systems 1k blocks\n  on x86, or more interestingly file systems with 4k blocks on Power or\n  ia64 systems.)\n\n  In the cleanup category, the ext4\u0027s punch hole implementation was\n  significantly improved by Lukas Czerner, and now supports bigalloc\n  file systems.  In addition, Jan Kara significantly cleaned up the\n  write submission code path.  We also improved error checking and added\n  a few sanity checks.\n\n  In the optimizations category, two major optimizations deserve\n  mention.  The first is that ext4_writepages() is now used for\n  nodelalloc and ext3 compatibility mode.  This allows writes to be\n  submitted much more efficiently as a single bio request, instead of\n  being sent as individual 4k writes into the block layer (which then\n  relied on the elevator code to coalesce the requests in the block\n  queue).  Secondly, the extent cache shrink mechanism, which was\n  introduce in 3.9, no longer has a scalability bottleneck caused by the\n  i_es_lru spinlock.  Other optimizations include some changes to reduce\n  CPU usage and to avoid issuing empty commits unnecessarily.\"\n\n* tag \u0027ext4_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (86 commits)\n  ext4: optimize starting extent in ext4_ext_rm_leaf()\n  jbd2: invalidate handle if jbd2_journal_restart() fails\n  ext4: translate flag bits to strings in tracepoints\n  ext4: fix up error handling for mpage_map_and_submit_extent()\n  jbd2: fix theoretical race in jbd2__journal_restart\n  ext4: only zero partial blocks in ext4_zero_partial_blocks()\n  ext4: check error return from ext4_write_inline_data_end()\n  ext4: delete unnecessary C statements\n  ext3,ext4: don\u0027t mess with dir_file-\u003ef_pos in htree_dirblock_to_tree()\n  jbd2: move superblock checksum calculation to jbd2_write_superblock()\n  ext4: pass inode pointer instead of file pointer to punch hole\n  ext4: improve free space calculation for inline_data\n  ext4: reduce object size when !CONFIG_PRINTK\n  ext4: improve extent cache shrink mechanism to avoid to burn CPU time\n  ext4: implement error handling of ext4_mb_new_preallocation()\n  ext4: fix corruption when online resizing a fs with 1K block size\n  ext4: delete unused variables\n  ext4: return FIEMAP_EXTENT_UNKNOWN for delalloc extents\n  jbd2: remove debug dependency on debug_fs and update Kconfig help text\n  jbd2: use a single printk for jbd_debug()\n  ...\n"
    },
    {
      "commit": "3999e49364193f7dbbba66e2be655fe91ba1fced",
      "tree": "5971637ac3b15d5d72797d4050ee35216b9fede1",
      "parents": [
        "48f74186546cd5929397856eab209ebcb5692d11"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Jun 21 08:58:19 2013 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 29 12:57:45 2013 +0400"
      },
      "message": "locks: add a new \"lm_owner_key\" lock operation\n\nCurrently, the hashing that the locking code uses to add these values\nto the blocked_hash is simply calculated using fl_owner field. That\u0027s\nvalid in most cases except for server-side lockd, which validates the\nowner of a lock based on fl_owner and fl_pid.\n\nIn the case where you have a small number of NFS clients doing a lot\nof locking between different processes, you could end up with all\nthe blocked requests sitting in a very small number of hash buckets.\n\nAdd a new lm_owner_key operation to the lock_manager_operations that\nwill generate an unsigned long to use as the key in the hashtable.\nThat function is only implemented for server-side lockd, and simply\nXORs the fl_owner and fl_pid.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nAcked-by: J. Bruce Fields \u003cbfields@fieldses.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "139ca04ee572fea6c0c105e88aba3a534efcd7c4",
      "tree": "b75d2c4b93099413b1910909ee8b884370590c71",
      "parents": [
        "4e8c765d384e549f9b542ea0bd42e2aa227e1404"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Jun 21 08:58:17 2013 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 29 12:57:44 2013 +0400"
      },
      "message": "locks: convert fl_link to a hlist_node\n\nTesting has shown that iterating over the blocked_list for deadlock\ndetection turns out to be a bottleneck. In order to alleviate that,\nbegin the process of turning it into a hashtable. We start by turning\nthe fl_link into a hlist_node and the global lists into hlists. A later\npatch will do the conversion of the blocked_list to a hashtable.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nAcked-by: J. Bruce Fields \u003cbfields@fieldses.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1c8c601a8c0dc59fe64907dcd9d512a3d181ddc7",
      "tree": "1a9c91de460a7c2f9fd6ad77060be484456e49b9",
      "parents": [
        "889746917193ab3007a779d65231510715b20fb6"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Jun 21 08:58:15 2013 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 29 12:57:42 2013 +0400"
      },
      "message": "locks: protect most of the file_lock handling with i_lock\n\nHaving a global lock that protects all of this code is a clear\nscalability problem. Instead of doing that, move most of the code to be\nprotected by the i_lock instead. The exceptions are the global lists\nthat the -\u003efl_link sits on, and the -\u003efl_block list.\n\n-\u003efl_link is what connects these structures to the\nglobal lists, so we must ensure that we hold those locks when iterating\nover or updating these lists.\n\nFurthermore, sound deadlock detection requires that we hold the\nblocked_list state steady while checking for loops. We also must ensure\nthat the search and update to the list are atomic.\n\nFor the checking and insertion side of the blocked_list, push the\nacquisition of the global lock into __posix_lock_file and ensure that\nchecking and update of the  blocked_list is done without dropping the\nlock in between.\n\nOn the removal side, when waking up blocked lock waiters, take the\nglobal lock before walking the blocked list and dequeue the waiters from\nthe global list prior to removal from the fl_block list.\n\nWith this, deadlock detection should be race free while we minimize\nexcessive file_lock_lock thrashing.\n\nFinally, in order to avoid a lock inversion problem when handling\n/proc/locks output we must ensure that manipulations of the fl_block\nlist are also protected by the file_lock_lock.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1cb360125966cb6cb594e414ea80a0154617b846",
      "tree": "a11881df79dfb2b4ba707756e8e91f928b744f9f",
      "parents": [
        "d4f22d19dffed6d9b50de4123f66b91875464435"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Jun 21 08:58:12 2013 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 29 12:57:39 2013 +0400"
      },
      "message": "locks: comment cleanups and clarifications\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1a9e64a7118c5ad13dd5119da18375a5bd45b330",
      "tree": "823bc4983b7581c0096b0c3421eab86f41e1953d",
      "parents": [
        "f891a29f46553a384edbaa0f6ac446b1d03bccac"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Jun 21 08:58:10 2013 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 29 12:57:38 2013 +0400"
      },
      "message": "cifs: use posix_unblock_lock instead of locks_delete_block\n\ncommit 66189be74 (CIFS: Fix VFS lock usage for oplocked files) exported\nthe locks_delete_block symbol. There\u0027s already an exported helper\nfunction that provides this capability however, so make cifs use that\ninstead and turn locks_delete_block back into a static function.\n\nNote that if fl-\u003efl_next \u003d\u003d NULL then this lock has already been through\nlocks_delete_block(), so we should be OK to ignore an ENOENT error here\nand simply not retry the lock.\n\nCc: Pavel Shilovsky \u003cpiastryyy@gmail.com\u003e\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nAcked-by: J. Bruce Fields \u003cbfields@fieldses.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f891a29f46553a384edbaa0f6ac446b1d03bccac",
      "tree": "5b8a0083237e6b3632011b19a89c9d1df99b2912",
      "parents": [
        "da53be12bbb4fabbe2e9f6f908de0cf478b5161d"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Fri Jun 21 08:58:09 2013 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 29 12:57:37 2013 +0400"
      },
      "message": "locks: drop the unused filp argument to posix_unblock_lock\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "68d70d03f8f5bd10a0e7337210b13f536fd4aeb9",
      "tree": "2d55d3c5286748ce3cf3828f877cdf703c9b1249",
      "parents": [
        "ee32465249bee53714c0ca7be38da83008f9f8a6"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 19 15:26:04 2013 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 29 12:57:34 2013 +0400"
      },
      "message": "constify rw_verify_area()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1bf9d14dff4a2c4de6152c6f751bdaf6896b68bb",
      "tree": "9f4f52547bc8cbdc934126344edeb96d441c0383",
      "parents": [
        "0747fdb2bd59d9404ae2345cbddd7d837c5c4648"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 16 20:27:42 2013 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 29 12:57:26 2013 +0400"
      },
      "message": "new helper: fixed_size_llseek()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0b3fca1fd1499f0f5a7486d494f96538f2b7e5b9",
      "tree": "53c2152346840cc335483543c166cd47914fbfb0",
      "parents": [
        "6b5e1223d9c3fae19b1a2acd789d9dab97de67c4"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 15 11:37:47 2013 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 29 12:57:20 2013 +0400"
      },
      "message": "kill find_inode_number()\n\nthe only remaining caller (in ncpfs) is guaranteed to return 0 -\nwe only hit it if we\u0027d just checked that there\u0027s no dentry with\nsuch name.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f4e0c30c191f87851c4a53454abb55ee276f4a7e",
      "tree": "8bdb4f81dea303f93f1d646034653c8af3fba323",
      "parents": [
        "60545d0d4610b02e55f65d141c95b18ccf855b6e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jun 11 08:34:36 2013 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 29 12:57:11 2013 +0400"
      },
      "message": "allow the temp files created by open() to be linked to\n\nO_TMPFILE | O_CREAT \u003d\u003e linkat() with AT_SYMLINK_FOLLOW and /proc/self/fd/\u003cn\u003e\nas oldpath (i.e. flink()) will create a link\nO_TMPFILE | O_CREAT | O_EXCL \u003d\u003e ENOENT on attempt to link those guys\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "60545d0d4610b02e55f65d141c95b18ccf855b6e",
      "tree": "252111eed41e5f54a7bd13b054420f750cb5e069",
      "parents": [
        "f9652e10c12b43d9bb957269745cf2fa5682fa92"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 07 01:20:27 2013 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 29 12:57:10 2013 +0400"
      },
      "message": "[O_TMPFILE] it\u0027s still short a few helpers, but infrastructure should be OK now...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ac6614b76478e68173ccf7ad4e9e98035cc9c21d",
      "tree": "ed2c996b6e64e44c5a752dfafd650bfa1eb7f035",
      "parents": [
        "2233f31aade393641f0eaed43a71110e629bb900"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 22 22:22:04 2013 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 29 12:57:05 2013 +0400"
      },
      "message": "[readdir] constify -\u003eactor\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2233f31aade393641f0eaed43a71110e629bb900",
      "tree": "3993793028cb6c8dae41d407cb2217d221d9399c",
      "parents": [
        "2de5f059c4422e357b7df021b487a37b1d61356b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 22 21:44:23 2013 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 29 12:57:04 2013 +0400"
      },
      "message": "[readdir] -\u003ereaddir() is gone\n\neverything\u0027s converted to -\u003eiterate()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5ded75ec4c576577cae7d556e671d11d0c80c2fc",
      "tree": "964c5d165f74933df96d6fa16f9bd866a7308727",
      "parents": [
        "5f99f4e79abc64ed9d93a4b0158b21c64ff7f478"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 15 21:02:48 2013 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 29 12:46:49 2013 +0400"
      },
      "message": "[readdir] convert ext3\n\nnew helper: dir_relax(inode).  Call when you are in location that will\n_not_ be invalidated by directory modifications (block boundary, in case\nof ext*).  Returns whether the directory has survived (dropping i_mutex\nallows rmdir to kill the sucker; if it returns false to us, -\u003eiterate()\nis obviously done)\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5f99f4e79abc64ed9d93a4b0158b21c64ff7f478",
      "tree": "bb76629861592bee919344521fb2d55ce866a17f",
      "parents": [
        "80886298c07234331458e963b5f9f57c68edd700"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 15 20:23:06 2013 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 29 12:46:48 2013 +0400"
      },
      "message": "[readdir] switch dcache_readdir() users to -\u003eiterate()\n\nnew helpers - dir_emit_dot(file, ctx, dentry), dir_emit_dotdot(file, ctx),\ndir_emit_dots(file, ctx).\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bb6f619b3a49f940d7478112500da312d70866eb",
      "tree": "4e17d6ed5b965eaec2e55b11b61145b200d28f0f",
      "parents": [
        "5c0ba4e0762e6dabd14a5c276652e2defec38de7"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 15 18:49:12 2013 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 29 12:46:47 2013 +0400"
      },
      "message": "[readdir] introduce -\u003eiterate(), ctx-\u003epos, dir_emit()\n\nNew method - -\u003eiterate(file, ctx).  That\u0027s the replacement for -\u003ereaddir();\nit takes callback from ctx-\u003eactor, uses ctx-\u003epos instead of file-\u003ef_pos and\ncalls dir_emit(ctx, ...) instead of filldir(data, ...).  It does *not*\nupdate file-\u003ef_pos (or look at it, for that matter); iterate_dir() does the\nupdate.\n\nNote that dir_emit() takes the offset from ctx-\u003epos (and eventually\nfilldir_t will lose that argument).\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5c0ba4e0762e6dabd14a5c276652e2defec38de7",
      "tree": "cc2c94d81a631b0656782e1f8299da3267871964",
      "parents": [
        "83a8761142cb38536e9e88dfc2432d331ea4e257"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 15 13:52:59 2013 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 29 12:46:46 2013 +0400"
      },
      "message": "[readdir] introduce iterate_dir() and dir_context\n\niterate_dir(): new helper, replacing vfs_readdir().\n\nstruct dir_context: contains the readdir callback (and will get more stuff\nin it), embedded into whatever data that callback wants to deal with;\neventually, we\u0027ll be passing it to -\u003ereaddir() replacement instead of\n(data,filldir) pair.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7995bd287134f6c8f80d94bebe7396f05a9bc42b",
      "tree": "7e94bb13bb30b8549892ed93e0e5b11d8b642bc2",
      "parents": [
        "c9036e9f3b2b77f678572260e1ef1075fcb08c36"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 20 18:58:36 2013 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 20 19:02:45 2013 +0400"
      },
      "message": "splice: don\u0027t pass the address of -\u003ef_pos to methods\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d47992f86b307985b3215bcf141d56d1849d71df",
      "tree": "e1ae47bd19185371462c5a273c15276534447349",
      "parents": [
        "c7788792a5e7b0d5d7f96d0766b4cb6112d47d75"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Tue May 21 23:17:23 2013 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 21 23:17:23 2013 -0400"
      },
      "message": "mm: change invalidatepage prototype to accept length\n\nCurrently there is no way to truncate partial page where the end\ntruncate point is not at the end of the page. This is because it was not\nneeded and the functionality was enough for file system truncate\noperation to work properly. However more file systems now support punch\nhole feature and it can benefit from mm supporting truncating page just\nup to the certain point.\n\nSpecifically, with this functionality truncate_inode_pages_range() can\nbe changed so it supports truncating partial page at the end of the\nrange (currently it will BUG_ON() if \u0027end\u0027 is not at the end of the\npage).\n\nThis commit changes the invalidatepage() address space operation\nprototype to accept range to be invalidated and update all the instances\nfor it.\n\nWe also change the block_invalidatepage() in the same way and actually\nmake a use of the new length argument implementing range invalidation.\n\nActual file system implementations will follow except the file systems\nwhere the changes are really simple and should not change the behaviour\nin any way .Implementation for truncate_page_range() which will be able\nto accept page unaligned ranges will follow as well.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\n"
    },
    {
      "commit": "4385bab128911df14ab25f0b5ae1a48d7b53dd94",
      "tree": "d8c6f5557f09ebdf294eaba7eba01a140f8da78a",
      "parents": [
        "db2a144bedd58b3dcf19950c2f476c58c9f39d18"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun May 05 22:11:03 2013 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue May 07 02:16:31 2013 -0400"
      },
      "message": "make blkdev_put() return void\n\nsame story as with the previous patches - note that return\nvalue of blkdev_close() is lost, since there\u0027s nowhere the\ncaller (__fput()) could return it to.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5ae98f1589e076e4b314fc54ae2beac58842ddc2",
      "tree": "ea0ea08edbc6f4f0644faca5e8c3a29a68f71c51",
      "parents": [
        "9dcc26cf67fb7db7613290e62eeed6c4276c75ce"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Sat May 04 00:11:23 2013 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 04 14:57:58 2013 -0400"
      },
      "message": "fs: Fix hang with BSD accounting on frozen filesystem\n\nWhen BSD process accounting is enabled and logs information to a\nfilesystem which gets frozen, system easily becomes unusable because\neach attempt to account process information blocks. Thus e.g. every task\ngets blocked in exit.\n\nIt seems better to drop accounting information (which can already happen\nwhen filesystem is running out of space) instead of locking system up.\nSo we just skip the write if the filesystem is frozen.\n\nReported-by: Nikola Ciprich \u003cnikola.ciprich@linuxbox.cz\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "20b4fb485227404329e41ad15588afad3df23050",
      "tree": "f3e099f0ab3da8a93b447203e294d2bb22f6dc05",
      "parents": [
        "b9394d8a657cd3c064fa432aa0905c1b58b38fe9",
        "ac3e3c5b1164397656df81b9e9ab4991184d3236"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 01 17:51:54 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 01 17:51:54 2013 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull VFS updates from Al Viro,\n\nMisc cleanups all over the place, mainly wrt /proc interfaces (switch\ncreate_proc_entry to proc_create(), get rid of the deprecated\ncreate_proc_read_entry() in favor of using proc_create_data() and\nseq_file etc).\n\n7kloc removed.\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (204 commits)\n  don\u0027t bother with deferred freeing of fdtables\n  proc: Move non-public stuff from linux/proc_fs.h to fs/proc/internal.h\n  proc: Make the PROC_I() and PDE() macros internal to procfs\n  proc: Supply a function to remove a proc entry by PDE\n  take cgroup_open() and cpuset_open() to fs/proc/base.c\n  ppc: Clean up scanlog\n  ppc: Clean up rtas_flash driver somewhat\n  hostap: proc: Use remove_proc_subtree()\n  drm: proc: Use remove_proc_subtree()\n  drm: proc: Use minor-\u003eindex to label things, not PDE-\u003ename\n  drm: Constify drm_proc_list[]\n  zoran: Don\u0027t print proc_dir_entry data in debug\n  reiserfs: Don\u0027t access the proc_dir_entry in r_open(), r_start() r_show()\n  proc: Supply an accessor for getting the data from a PDE\u0027s parent\n  airo: Use remove_proc_subtree()\n  rtl8192u: Don\u0027t need to save device proc dir PDE\n  rtl8187se: Use a dir under /proc/net/r8180/\n  proc: Add proc_mkdir_data()\n  proc: Move some bits from linux/proc_fs.h to linux/{of.h,signal.h,tty.h}\n  proc: Move PDE_NET() to fs/proc/proc_net.c\n  ...\n"
    },
    {
      "commit": "74e3d1e17b2e11d175970b85acd44f5927000ba2",
      "tree": "1adaccdd30702c8c151dfb97b13aaf241e092849",
      "parents": [
        "3440a1ca99707f093e9568ba9762764d3162dd8f"
      ],
      "author": {
        "name": "Fan Du",
        "email": "fan.du@windriver.com",
        "time": "Tue Apr 30 15:27:27 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 30 17:04:03 2013 -0700"
      },
      "message": "include/linux/fs.h: disable preempt when acquire i_size_seqcount write lock\n\nTwo rt tasks bind to one CPU core.\n\nThe higher priority rt task A preempts a lower priority rt task B which\nhas already taken the write seq lock, and then the higher priority rt\ntask A try to acquire read seq lock, it\u0027s doomed to lockup.\n\nrt task A with lower priority: call write\ni_size_write                                        rt task B with higher priority: call sync, and preempt task A\n  write_seqcount_begin(\u0026inode-\u003ei_size_seqcount);    i_size_read\n  inode-\u003ei_size \u003d i_size;                             read_seqcount_begin \u003c-- lockup here...\n\nSo disable preempt when acquiring every i_size_seqcount *write* lock will\ncure the problem.\n\nSigned-off-by: Fan Du \u003cfan.du@windriver.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "599a0ac14e065b7c08471ef2e75a504b7dec9267",
      "tree": "21f9caef768eb84dad3ce19f76e646af0a5e4dfa",
      "parents": [
        "f776c738883bc949e654568a565aee5a7d3fe133"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 12 09:58:10 2013 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Apr 09 14:12:58 2013 -0400"
      },
      "message": "pipe: fold file_operations instances in one\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8d71db4f0890605d44815a2b2da4ca003f1bb142",
      "tree": "e5bb078717c3e8ace7f032b940ada7901dbab545",
      "parents": [
        "5f2e354f5212a49fc639c25de2581cc8ae90d11b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 19 21:01:03 2013 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Apr 09 14:12:55 2013 -0400"
      },
      "message": "lift sb_start_write/sb_end_write out of -\u003eaio_write()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7f78e0351394052e1a6293e175825eb5c7869507",
      "tree": "76493af33d02bd3f411e69f95b0bcdfff50412b4",
      "parents": [
        "ba0e3427b03c3d1550239779eca5c1c5a53a2152"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sat Mar 02 19:39:14 2013 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Sun Mar 03 19:36:31 2013 -0800"
      },
      "message": "fs: Limit sys_mount to only request filesystem modules.\n\nModify the request_module to prefix the file system type with \"fs-\"\nand add aliases to all of the filesystems that can be built as modules\nto match.\n\nA common practice is to build all of the kernel code and leave code\nthat is not commonly needed as modules, with the result that many\nusers are exposed to any bug anywhere in the kernel.\n\nLooking for filesystems with a fs- prefix limits the pool of possible\nmodules that can be loaded by mount to just filesystems trivially\nmaking things safer with no real cost.\n\nUsing aliases means user space can control the policy of which\nfilesystem modules are auto-loaded by editing /etc/modprobe.d/*.conf\nwith blacklist and alias directives.  Allowing simple, safe,\nwell understood work-arounds to known problematic software.\n\nThis also addresses a rare but unfortunate problem where the filesystem\nname is not the same as it\u0027s module name and module auto-loading\nwould not work.  While writing this patch I saw a handful of such\ncases.  The most significant being autofs that lives in the module\nautofs4.\n\nThis is relevant to user namespaces because we can reach the request\nmodule in get_fs_type() without having any special permissions, and\npeople get uncomfortable when a user specified string (in this case\nthe filesystem type) goes all of the way to request_module.\n\nAfter having looked at this issue I don\u0027t think there is any\nparticular reason to perform any filtering or permission checks beyond\nmaking it clear in the module request that we want a filesystem\nmodule.  The common pattern in the kernel is to call request_module()\nwithout regards to the users permissions.  In general all a filesystem\nmodule does once loaded is call register_filesystem() and go to sleep.\nWhich means there is not much attack surface exposed by loading a\nfilesytem module unless the filesystem is mounted.  In a user\nnamespace filesystems are not mounted unless .fs_flags \u003d FS_USERNS_MOUNT,\nwhich most filesystems do not set today.\n\nAcked-by: Serge Hallyn \u003cserge.hallyn@canonical.com\u003e\nAcked-by: Kees Cook \u003ckeescook@chromium.org\u003e\nReported-by: Kees Cook \u003ckeescook@google.com\u003e\nSigned-off-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "dd37978c50bc8b354e5c4633f69387f16572fdac",
      "tree": "d233c7027f26869485f96556cc9cddacbb3a8f2d",
      "parents": [
        "5e608671dfbfd6a9556c31df65a4f147439eed59"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 01 19:48:30 2013 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 01 19:48:30 2013 -0500"
      },
      "message": "cache the value of file_inode() in struct file\n\nNote that this thing does *not* contribute to inode refcount;\nit\u0027s pinned down by dentry.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d895cb1af15c04c522a25c79cc429076987c089b",
      "tree": "895dc9157e28f603d937a58be664e4e440d5530c",
      "parents": [
        "9626357371b519f2b955fef399647181034a77fe",
        "d3d009cb965eae7e002ea5badf603ea8f4c34915"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 26 20:16:07 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 26 20:16:07 2013 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs pile (part one) from Al Viro:\n \"Assorted stuff - cleaning namei.c up a bit, fixing -\u003ed_name/-\u003ed_parent\n  locking violations, etc.\n\n  The most visible changes here are death of FS_REVAL_DOT (replaced with\n  \"has -\u003ed_weak_revalidate()\") and a new helper getting from struct file\n  to inode.  Some bits of preparation to xattr method interface changes.\n\n  Misc patches by various people sent this cycle *and* ocfs2 fixes from\n  several cycles ago that should\u0027ve been upstream right then.\n\n  PS: the next vfs pile will be xattr stuff.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (46 commits)\n  saner proc_get_inode() calling conventions\n  proc: avoid extra pde_put() in proc_fill_super()\n  fs: change return values from -EACCES to -EPERM\n  fs/exec.c: make bprm_mm_init() static\n  ocfs2/dlm: use GFP_ATOMIC inside a spin_lock\n  ocfs2: fix possible use-after-free with AIO\n  ocfs2: Fix oops in ocfs2_fast_symlink_readpage() code path\n  get_empty_filp()/alloc_file() leave both -\u003ef_pos and -\u003ef_version zero\n  target: writev() on single-element vector is pointless\n  export kernel_write(), convert open-coded instances\n  fs: encode_fh: return FILEID_INVALID if invalid fid_type\n  kill f_vfsmnt\n  vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op\n  nfsd: handle vfs_getattr errors in acl protocol\n  switch vfs_getattr() to struct path\n  default SET_PERSONALITY() in linux/elf.h\n  ceph: prepopulate inodes only when request is aborted\n  d_hash_and_lookup(): export, switch open-coded instances\n  9p: switch v9fs_set_create_acl() to inode+fid, do it before d_instantiate()\n  9p: split dropping the acls from v9fs_set_create_acl()\n  ...\n"
    },
    {
      "commit": "7bb307e894d51308aa0582a8c4cc5875bbc645b9",
      "tree": "8b8434fe4674fb47236c0d7ca2256e7afc29f208",
      "parents": [
        "94e07a7590ae855bae0536c42b3086fadc7c83a8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Feb 23 14:51:48 2013 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 26 02:46:11 2013 -0500"
      },
      "message": "export kernel_write(), convert open-coded instances\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "182be684784334598eee1d90274e7f7aa0063616",
      "tree": "7b4d555a24fbbe9b22086f31246d1aa6df5e5330",
      "parents": [
        "ecf3d1f1aa74da0d632b651a2e05a911f60e92c0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jan 24 02:21:54 2013 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 26 02:46:10 2013 -0500"
      },
      "message": "kill f_vfsmnt\n\nvery few users left...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ecf3d1f1aa74da0d632b651a2e05a911f60e92c0",
      "tree": "62a2e0a46bfd993a24a1154ec1331c57bbd50482",
      "parents": [
        "4f4a4faddea0fe45bf508e723c3a810c5190ed62"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Feb 20 11:19:05 2013 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 26 02:46:09 2013 -0500"
      },
      "message": "vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op\n\nThe following set of operations on a NFS client and server will cause\n\n    server# mkdir a\n    client# cd a\n    server# mv a a.bak\n    client# sleep 30  # (or whatever the dir attrcache timeout is)\n    client# stat .\n    stat: cannot stat `.\u0027: Stale NFS file handle\n\nObviously, we should not be getting an ESTALE error back there since the\ninode still exists on the server. The problem is that the lookup code\nwill call d_revalidate on the dentry that \".\" refers to, because NFS has\nFS_REVAL_DOT set.\n\nnfs_lookup_revalidate will see that the parent directory has changed and\nwill try to reverify the dentry by redoing a LOOKUP. That of course\nfails, so the lookup code returns ESTALE.\n\nThe problem here is that d_revalidate is really a bad fit for this case.\nWhat we really want to know at this point is whether the inode is still\ngood or not, but we don\u0027t really care what name it goes by or whether\nthe dcache is still valid.\n\nAdd a new d_op-\u003ed_weak_revalidate operation and have complete_walk call\nthat instead of d_revalidate. The intent there is to allow for a\n\"weaker\" d_revalidate that just checks to see whether the inode is still\ngood. This is also gives us an opportunity to kill off the FS_REVAL_DOT\nspecial casing.\n\n[AV: changed method name, added note in porting, fixed confusion re\nhaving it possibly called from RCU mode (it won\u0027t be)]\n\nCc: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3dadecce20603aa380023c65e6f55f108fd5e952",
      "tree": "9c6b1540787ba3c0c2342447bf1b35836b1e4314",
      "parents": [
        "e72837e3e7bae3f182c4ac63c9424e86f1158dd0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jan 24 02:18:08 2013 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 26 02:46:08 2013 -0500"
      },
      "message": "switch vfs_getattr() to struct path\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "496ad9aa8ef448058e36ca7a787c61f2e63f0f54",
      "tree": "8f4abde793cd7db5bb8fde6d27ebcacd0e54379a",
      "parents": [
        "57eccb830f1cc93d4b506ba306d8dfa685e0c88f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 23 17:07:38 2013 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 22 23:31:31 2013 -0500"
      },
      "message": "new helper: file_inode(file)\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d28574e043e8b7cb35482de6e9a553118a32803d",
      "tree": "6233897744a2d5de8ff98e51e4f12dad933355b0",
      "parents": [
        "85f40aec887110ae6bbefa87988def4606a3d583"
      ],
      "author": {
        "name": "Maxim Patlasov",
        "email": "mpatlasov@parallels.com",
        "time": "Fri Oct 26 19:50:04 2012 +0400"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu Jan 24 16:21:27 2013 +0100"
      },
      "message": "mm: minor cleanup of iov_iter_single_seg_count()\n\nThe function does not modify iov_iter which \u0027i\u0027 points to.\n\nSigned-off-by: Maxim Patlasov \u003cmpatlasov@parallels.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "21e89c0c48bb799beb09181740796fc80c9676e2",
      "tree": "bd5aef34a980f189ad41c75e881d225bc854bf44",
      "parents": [
        "b911a6bdeef5848c468597d040e3407e0aee04ce",
        "91c7fbbf63f33c77d8d28de624834a21888842bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 20 18:49:14 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 20 18:49:14 2012 -0500"
      },
      "message": "Merge branch \u0027fscache\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs into for-linus\n"
    },
    {
      "commit": "471667391a92bf7bf2cd4ff31a3ad88e5dec934b",
      "tree": "cb07ce436ed20f5f50e0e3c1db386a105ed65434",
      "parents": [
        "b9f61c3c0c8daed9844870bc9358e6d9fdb7eb61"
      ],
      "author": {
        "name": "Alessio Igor Bogani",
        "email": "abogani@kernel.org",
        "time": "Thu Dec 13 12:22:39 2012 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 20 18:47:08 2012 -0500"
      },
      "message": "vfs: Remove useless function prototypes\n\nCommit 8e22cc88d68ca1a46d7d582938f979eb640ed30f removes the (un)lock_super\nfunction definitions but forgets to remove their prototypes.\n\nSigned-off-by: Alessio Igor Bogani \u003cabogani@kernel.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d30357f2f0ec0bfb67fd39f8f76d22d02d78631e",
      "tree": "0923a2f8276af03293410cb2b78b2457d7fc6996",
      "parents": [
        "9014da7525dffef69131f717decf262e08ff3d58"
      ],
      "author": {
        "name": "Marco Stornelli",
        "email": "marco.stornelli@gmail.com",
        "time": "Sat Dec 15 11:59:20 2012 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 20 18:46:29 2012 -0500"
      },
      "message": "vfs: drop vmtruncate\n\nRemoved vmtruncate\n\nSigned-off-by: Marco Stornelli \u003cmarco.stornelli@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a02de9608595c8ef649ef03ae735b0b45e3d4396",
      "tree": "ca411825ecc8a30b70d869244a7e9412d0728486",
      "parents": [
        "ef778e7ae67cd426c30cad43378b908f5eb0bad5"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Dec 20 21:52:36 2012 +0000"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Dec 20 22:05:41 2012 +0000"
      },
      "message": "VFS: Make more complete truncate operation available to CacheFiles\n\nMake a more complete truncate operation available to CacheFiles (including\nsecurity checks and suchlike) so that it can use this to clear invalidated\ncache files.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "848b81415c42ff3dc9a4204749087b015c37ef66",
      "tree": "391da3a73aea48632248220d2d6b8d45a88f7eae",
      "parents": [
        "992956189de58cae9f2be40585bc25105cd7c5ad",
        "6fd59a83b9261fa53eaf98fb5514abba504a3ea3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 20:58:12 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 20:58:12 2012 -0800"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge misc patches from Andrew Morton:\n \"Incoming:\n\n   - lots of misc stuff\n\n   - backlight tree updates\n\n   - lib/ updates\n\n   - Oleg\u0027s percpu-rwsem changes\n\n   - checkpatch\n\n   - rtc\n\n   - aoe\n\n   - more checkpoint/restart support\n\n  I still have a pile of MM stuff pending - Pekka should be merging\n  later today after which that is good to go.  A number of other things\n  are twiddling thumbs awaiting maintainer merges.\"\n\n* emailed patches from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (180 commits)\n  scatterlist: don\u0027t BUG when we can trivially return a proper error.\n  docs: update documentation about /proc/\u003cpid\u003e/fdinfo/\u003cfd\u003e fanotify output\n  fs, fanotify: add @mflags field to fanotify output\n  docs: add documentation about /proc/\u003cpid\u003e/fdinfo/\u003cfd\u003e output\n  fs, notify: add procfs fdinfo helper\n  fs, exportfs: add exportfs_encode_inode_fh() helper\n  fs, exportfs: escape nil dereference if no s_export_op present\n  fs, epoll: add procfs fdinfo helper\n  fs, eventfd: add procfs fdinfo helper\n  procfs: add ability to plug in auxiliary fdinfo providers\n  tools/testing/selftests/kcmp/kcmp_test.c: print reason for failure in kcmp_test\n  breakpoint selftests: print failure status instead of cause make error\n  kcmp selftests: print fail status instead of cause make error\n  kcmp selftests: make run_tests fix\n  mem-hotplug selftests: print failure status instead of cause make error\n  cpu-hotplug selftests: print failure status instead of cause make error\n  mqueue selftests: print failure status instead of cause make error\n  vm selftests: print failure status instead of cause make error\n  ubifs: use prandom_bytes\n  mtd: nandsim: use prandom_bytes\n  ...\n"
    },
    {
      "commit": "55985dd72ab27b47530dcc8bdddd28b69f4abe8b",
      "tree": "9117b3f9bc9d46fe89ee3eccc959bab9b0e9db7b",
      "parents": [
        "2bf1cbf1c616b4dd85a3a8a715af9c5701c16a91"
      ],
      "author": {
        "name": "Cyrill Gorcunov",
        "email": "gorcunov@openvz.org",
        "time": "Mon Dec 17 16:04:55 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 17:15:27 2012 -0800"
      },
      "message": "procfs: add ability to plug in auxiliary fdinfo providers\n\nThis patch brings ability to print out auxiliary data associated with\nfile in procfs interface /proc/pid/fdinfo/fd.\n\nIn particular further patches make eventfd, evenpoll, signalfd and\nfsnotify to print additional information complete enough to restore\nthese objects after checkpoint.\n\nTo simplify the code we add show_fdinfo callback inside struct\nfile_operations (as Al and Pavel are proposing).\n\nSigned-off-by: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@parallels.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Andrey Vagin \u003cavagin@openvz.org\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: James Bottomley \u003cjbottomley@parallels.com\u003e\nCc: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Matthew Helsley \u003cmatt.helsley@gmail.com\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: Tvrtko Ursulin \u003ctvrtko.ursulin@onelan.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "965c8e59cfcf845ecde2265a1d1bfee5f011d302",
      "tree": "22758a99b4ecb475750966d5202200dc0e89876c",
      "parents": [
        "c0f041602c33bae10b8e321c49024490d03ced3d"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Mon Dec 17 15:59:39 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 17:15:12 2012 -0800"
      },
      "message": "lseek: the \"whence\" argument is called \"whence\"\n\nBut the kernel decided to call it \"origin\" instead.  Fix most of the\nsites.\n\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6a2b60b17b3e48a418695a94bd2420f6ab32e519",
      "tree": "54b7792fa68b8890f710fa6398b6ba8626a039a8",
      "parents": [
        "9228ff90387e276ad67b10c0eb525c9d6a57d5e9",
        "98f842e675f96ffac96e6c50315790912b2812be"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 15:44:47 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 17 15:44:47 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace\n\nPull user namespace changes from Eric Biederman:\n \"While small this set of changes is very significant with respect to\n  containers in general and user namespaces in particular.  The user\n  space interface is now complete.\n\n  This set of changes adds support for unprivileged users to create user\n  namespaces and as a user namespace root to create other namespaces.\n  The tyranny of supporting suid root preventing unprivileged users from\n  using cool new kernel features is broken.\n\n  This set of changes completes the work on setns, adding support for\n  the pid, user, mount namespaces.\n\n  This set of changes includes a bunch of basic pid namespace\n  cleanups/simplifications.  Of particular significance is the rework of\n  the pid namespace cleanup so it no longer requires sending out\n  tendrils into all kinds of unexpected cleanup paths for operation.  At\n  least one case of broken error handling is fixed by this cleanup.\n\n  The files under /proc/\u003cpid\u003e/ns/ have been converted from regular files\n  to magic symlinks which prevents incorrect caching by the VFS,\n  ensuring the files always refer to the namespace the process is\n  currently using and ensuring that the ptrace_mayaccess permission\n  checks are always applied.\n\n  The files under /proc/\u003cpid\u003e/ns/ have been given stable inode numbers\n  so it is now possible to see if different processes share the same\n  namespaces.\n\n  Through the David Miller\u0027s net tree are changes to relax many of the\n  permission checks in the networking stack to allowing the user\n  namespace root to usefully use the networking stack.  Similar changes\n  for the mount namespace and the pid namespace are coming through my\n  tree.\n\n  Two small changes to add user namespace support were commited here adn\n  in David Miller\u0027s -net tree so that I could complete the work on the\n  /proc/\u003cpid\u003e/ns/ files in this tree.\n\n  Work remains to make it safe to build user namespaces and 9p, afs,\n  ceph, cifs, coda, gfs2, ncpfs, nfs, nfsd, ocfs2, and xfs so the\n  Kconfig guard remains in place preventing that user namespaces from\n  being built when any of those filesystems are enabled.\n\n  Future design work remains to allow root users outside of the initial\n  user namespace to mount more than just /proc and /sys.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace: (38 commits)\n  proc: Usable inode numbers for the namespace file descriptors.\n  proc: Fix the namespace inode permission checks.\n  proc: Generalize proc inode allocation\n  userns: Allow unprivilged mounts of proc and sysfs\n  userns: For /proc/self/{uid,gid}_map derive the lower userns from the struct file\n  procfs: Print task uids and gids in the userns that opened the proc file\n  userns: Implement unshare of the user namespace\n  userns: Implent proc namespace operations\n  userns: Kill task_user_ns\n  userns: Make create_new_namespaces take a user_ns parameter\n  userns: Allow unprivileged use of setns.\n  userns: Allow unprivileged users to create new namespaces\n  userns: Allow setting a userns mapping to your current uid.\n  userns: Allow chown and setgid preservation\n  userns: Allow unprivileged users to create user namespaces.\n  userns: Ignore suid and sgid on binaries if the uid or gid can not be mapped\n  userns: fix return value on mntns_install() failure\n  vfs: Allow unprivileged manipulation of the mount namespace.\n  vfs: Only support slave subtrees across different user namespaces\n  vfs: Add a user namespace reference from struct mnt_namespace\n  ...\n"
    },
    {
      "commit": "252aa6f5be64c90c67b9f066ccff880f6b487d32",
      "tree": "9bb13ada4d838d232d761f45aa9e1a0b26a40cff",
      "parents": [
        "78bd52097d04205a33a8014a1b8ac01cf1ae9d06"
      ],
      "author": {
        "name": "Rafael Aquini",
        "email": "aquini@redhat.com",
        "time": "Tue Dec 11 16:02:35 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 11 17:22:26 2012 -0800"
      },
      "message": "mm: redefine address_space.assoc_mapping\n\nOverhaul struct address_space.assoc_mapping renaming it to\naddress_space.private_data and its type is redefined to void*.  By this\napproach we consistently name the .private_* elements from struct\naddress_space as well as allow extended usage for address_space\nassociation with other data structures through -\u003eprivate_data.\n\nAlso, all users of old -\u003eassoc_mapping element are converted to reflect\nits new name and type change (-\u003eprivate_data).\n\nSigned-off-by: Rafael Aquini \u003caquini@redhat.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: \"Michael S. Tsirkin\" \u003cmst@redhat.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bbec0270bdd887f96377065ee38b8848b5afa395",
      "tree": "4a38397643dceb5285afe11c78e27763a2ead5b8",
      "parents": [
        "ab73857e354ab9e317613cba7db714e2c12c6547"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 29 12:31:52 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 29 17:48:12 2012 -0800"
      },
      "message": "blkdev_max_block: make private to fs/buffer.c\n\nWe really don\u0027t want to look at the block size for the raw block device\naccesses in fs/block-dev.c, because it may be changing from under us.\nSo get rid of the max_block logic entirely, since the caller should\nalready have done it anyway.\n\nThat leaves the only user of this function in fs/buffer.c, so move the\nwhole function there and make it static.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1e8b33328a5407b447ff80953655a47014a6dcb9",
      "tree": "cb5a5f90712bafe8fb64d3d221fc5213c53f681f",
      "parents": [
        "45bce8f3e3436bbe2e03dd2b076abdce79ffabb7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 29 10:49:50 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 29 10:52:19 2012 -0800"
      },
      "message": "blockdev: remove bd_block_size_semaphore again\n\nThis reverts the block-device direct access code to the previous\nunlocked code, now that fs/buffer.c no longer needs external locking.\n\nWith this, fs/block_dev.c is back to the original version, apart from a\nwhitespace cleanup that I didn\u0027t want to revert.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0c55cfc4166d9a0f38de779bd4d75a90afbe7734",
      "tree": "d7ac108d615869ea615eec8693993c2700b24351",
      "parents": [
        "7a472ef4be8387bc05a42e16309b02c8ca943a40"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Jul 26 21:42:03 2012 -0700"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Nov 19 05:59:21 2012 -0800"
      },
      "message": "vfs: Allow unprivileged manipulation of the mount namespace.\n\n- Add a filesystem flag to mark filesystems that are safe to mount as\n  an unprivileged user.\n\n- Add a filesystem flag to mark filesystems that don\u0027t need MNT_NODEV\n  when mounted by an unprivileged user.\n\n- Relax the permission checks to allow unprivileged users that have\n  CAP_SYS_ADMIN permissions in the user namespace referred to by the\n  current mount namespace to be allowed to mount, unmount, and move\n  filesystems.\n\nAcked-by: \"Serge E. Hallyn\" \u003cserge@hallyn.com\u003e\nSigned-off-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "c54d0dc35324300cdc502137f5c0ee44f53d7a8b",
      "tree": "d75c8b01d499c52708ee34892e0e0ed68f1a8d62",
      "parents": [
        "bbc1096ad8e9875a025bbcf012605da49129e8b8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 16 13:37:17 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 16 13:37:17 2012 -0400"
      },
      "message": "bury SEL_{IN,OUT,EX}\n\n\tHad not been used for more than a decade and half; it used\nto be a part of (in-kernel) -\u003eselect() API and it has been pining\nfor fjords since 2.1.23pre1.  This is an ex-parrot...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bbc1096ad8e9875a025bbcf012605da49129e8b8",
      "tree": "2d236fde4d4198164fa6d07bf53d04c8a10a8a11",
      "parents": [
        "45525b26a46cd593cb72070304c4cd7c8391bd37"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Mon Oct 15 16:40:35 2012 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 16 13:36:58 2012 -0400"
      },
      "message": "Unexport some bits of linux/fs.h\n\nThere are some bits of linux/fs.h which are only used within the kernel and\nshouldn\u0027t be in the UAPI.  Move these from uapi/linux/fs.h into linux/fs.h.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "607ca46e97a1b6594b29647d98a32d545c24bdff",
      "tree": "30f4c0784bfddb57332cdc0678bd06d1e77fa185",
      "parents": [
        "08cce05c5a91f5017f4edc9866cf026908c73f9f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Oct 13 10:46:48 2012 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Oct 13 10:46:48 2012 +0100"
      },
      "message": "UAPI: (Scripted) Disintegrate include/linux\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nAcked-by: Dave Jones \u003cdavej@redhat.com\u003e\n"
    },
    {
      "commit": "08cce05c5a91f5017f4edc9866cf026908c73f9f",
      "tree": "fc03b0188829102c65c77ecc0ac173b8d72ec7a2",
      "parents": [
        "8e4627dd865fca4b7e7a46128cd2659e64cdebb0"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Oct 13 10:45:06 2012 +0100"
      },
      "committer": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Oct 13 10:45:06 2012 +0100"
      },
      "message": "UAPI: Unexport linux/blk_types.h\n\nIt seems that was linux/blk_types.h incorrectly exported to fix up some missing\nbits required by the exported parts of linux/fs.h (READ, WRITE, READA, etc.).\n\nSo unexport linux/blk_types.h and unexport the relevant bits of linux/fs.h.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\ncc: Jens Axboe \u003cjaxboe@fusionio.com\u003e\ncc: Tejun Heo \u003ctj@kernel.org\u003e\ncc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\n"
    },
    {
      "commit": "7950e3852ab86826b7349a535d2e8b0000340d7f",
      "tree": "b07bcf28bf0fc3bdc610595287250c3c3a3d974a",
      "parents": [
        "adb5c2473d3f91526c79db972aafb20a56d3fbb3"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 16:43:13 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 20:15:10 2012 -0400"
      },
      "message": "vfs: embed struct filename inside of names_cache allocation if possible\n\nIn the common case where a name is much smaller than PATH_MAX, an extra\nallocation for struct filename is unnecessary. Before allocating a\nseparate one, try to embed the struct filename inside the buffer first. If\nit turns out that that\u0027s not long enough, then fall back to allocating a\nseparate struct filename and redoing the copy.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "adb5c2473d3f91526c79db972aafb20a56d3fbb3",
      "tree": "f0427a11a91af2f5a5d0037ce52c32633019120b",
      "parents": [
        "669abf4e5539c8aa48bf28c965be05c0a7b58a27"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 16:43:13 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 20:15:09 2012 -0400"
      },
      "message": "audit: make audit_inode take struct filename\n\nKeep a pointer to the audit_names \"slot\" in struct filename.\n\nHave all of the audit_inode callers pass a struct filename ponter to\naudit_inode instead of a string pointer. If the aname field is already\npopulated, then we can skip walking the list altogether and just use it\ndirectly.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "669abf4e5539c8aa48bf28c965be05c0a7b58a27",
      "tree": "5b8e9e17c4f03ddd719c9c2089d829e2a040854a",
      "parents": [
        "873f1eedc1b983d772283279192c4ca2f60e8482"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 16:43:10 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 20:15:09 2012 -0400"
      },
      "message": "vfs: make path_openat take a struct filename pointer\n\n...and fix up the callers. For do_file_open_root, just declare a\nstruct filename on the stack and fill out the .name field. For\ndo_filp_open, make it also take a struct filename pointer, and fix up its\ncallers to call it appropriately.\n\nFor filp_open, add a variant that takes a struct filename pointer and turn\nfilp_open into a wrapper around it.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "91a27b2a756784714e924e5e854b919273082d26",
      "tree": "3913246b7d6e62703ec915f481e3a7159393f0f0",
      "parents": [
        "8e377d15078a501c4da98471f56396343c407d92"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 15:25:28 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 20:14:55 2012 -0400"
      },
      "message": "vfs: define struct filename and have getname() return it\n\ngetname() is intended to copy pathname strings from userspace into a\nkernel buffer. The result is just a string in kernel space. It would\nhowever be quite helpful to be able to attach some ancillary info to\nthe string.\n\nFor instance, we could attach some audit-related info to reduce the\namount of audit-related processing needed. When auditing is enabled,\nwe could also call getname() on the string more than once and not\nneed to recopy it from userspace.\n\nThis patchset converts the getname()/putname() interfaces to return\na struct instead of a string. For now, the struct just tracks the\nstring in kernel space and the original userland pointer for it.\n\nLater, we\u0027ll add other information to the struct as it becomes\nconvenient.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a608ca21f58ee44df5a71ba140e98498f3ebc2cd",
      "tree": "4ba6f5d5414ba9b579c8e41eb30c21a709537922",
      "parents": [
        "4fa6b5ecbf092c6ee752ece8a55d71f663d23254"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 15:25:26 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 00:32:03 2012 -0400"
      },
      "message": "vfs: allocate page instead of names_cache buffer in mount_block_root\n\nFirst, it\u0027s incorrect to call putname() after __getname_gfp() since the\nbare __getname_gfp() call skips the auditing code, while putname()\ndoesn\u0027t.\n\nmount_block_root allocates a PATH_MAX buffer via __getname_gfp, and then\ncalls get_fs_names to fill the buffer. That function can call\nget_filesystem_list which assumes that that buffer is a full page in\nsize. On arches where PAGE_SIZE !\u003d 4k, then this could potentially\noverrun.\n\nIn practice, it\u0027s hard to imagine the list of filesystem names even\napproaching 4k, but it\u0027s best to be safe. Just allocate a page for this\npurpose instead.\n\nWith this, we can also remove the __getname_gfp() definition since there\nare no more callers.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "79360ddd73dfe9a26f49ef4e27b8c26612929b0e",
      "tree": "a8b0d226e0d83ea4e3a8c27b091a7121dbb9638b",
      "parents": [
        "8213a2f3eeafdecf06dd718cb4130372263f6067",
        "98f6ef64b15a48f15062aff5d143b5d9a6ae7711"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 12 10:52:03 2012 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 12 10:52:03 2012 +0900"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull pile 2 of vfs updates from Al Viro:\n \"Stuff in this one - assorted fixes, lglock tidy-up, death to\n  lock_super().\n\n  There\u0027ll be a VFS pile tomorrow (with patches from Jeff Layton,\n  sanitizing getname() and related parts of audit and preparing for\n  ESTALE fixes), but I\u0027d rather push the stuff in this one ASAP - some\n  of the bugs closed here are quite unpleasant.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:\n  vfs: bogus warnings in fs/namei.c\n  consitify do_mount() arguments\n  lglock: add DEFINE_STATIC_LGLOCK()\n  lglock: make the per_cpu locks static\n  lglock: remove unused DEFINE_LGLOCK_LOCKDEP()\n  MAX_LFS_FILESIZE definition for 64bit needs LL...\n  tmpfs,ceph,gfs2,isofs,reiserfs,xfs: fix fh_len checking\n  vfs: drop lock/unlock super\n  ufs: drop lock/unlock super\n  sysv: drop lock/unlock super\n  hpfs: drop lock/unlock super\n  fat: drop lock/unlock super\n  ext3: drop lock/unlock super\n  exofs: drop lock/unlock super\n  dup3: Return an error when oldfd \u003d\u003d newfd.\n  fs: handle failed audit_log_start properly\n  fs: prevent use after free in auditing when symlink following was denied\n"
    },
    {
      "commit": "808d4e3cfdcc52b19276175464f6dbca4df13b09",
      "tree": "11c319127e8c1314c1ed1a777e4284032ab5bd00",
      "parents": [
        "4b2c551f77f5a0c496e2125b1d883f4b26aabf2c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 11 11:42:01 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 11 20:02:04 2012 -0400"
      },
      "message": "consitify do_mount() arguments\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ce40be7a820bb393ac4ac69865f018d2f4038cf0",
      "tree": "b1fe5a93346eb06f22b1c303d63ec5456d7212ab",
      "parents": [
        "ba0a5a36f60e4c1152af3a2ae2813251974405bf",
        "02f3939e1a9357b7c370a4a69717cf9c02452737"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 11 09:04:23 2012 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 11 09:04:23 2012 +0900"
      },
      "message": "Merge branch \u0027for-3.7/core\u0027 of git://git.kernel.dk/linux-block\n\nPull block IO update from Jens Axboe:\n \"Core block IO bits for 3.7.  Not a huge round this time, it contains:\n\n   - First series from Kent cleaning up and generalizing bio allocation\n     and freeing.\n\n   - WRITE_SAME support from Martin.\n\n   - Mikulas patches to prevent O_DIRECT crashes when someone changes\n     the block size of a device.\n\n   - Make bio_split() work on data-less bio\u0027s (like trim/discards).\n\n   - A few other minor fixups.\"\n\nFixed up silent semantic mis-merge as per Mikulas Patocka and Andrew\nMorton.  It is due to the VM no longer using a prio-tree (see commit\n6b2dbba8b6ac: \"mm: replace vma prio_tree with an interval tree\").\n\nSo make set_blocksize() use mapping_mapped() instead of open-coding the\ninternal VM knowledge that has changed.\n\n* \u0027for-3.7/core\u0027 of git://git.kernel.dk/linux-block: (26 commits)\n  block: makes bio_split support bio without data\n  scatterlist: refactor the sg_nents\n  scatterlist: add sg_nents\n  fs: fix include/percpu-rwsem.h export error\n  percpu-rw-semaphore: fix documentation typos\n  fs/block_dev.c:1644:5: sparse: symbol \u0027blkdev_mmap\u0027 was not declared\n  blockdev: turn a rw semaphore into a percpu rw semaphore\n  Fix a crash when block device is read and block size is changed at the same time\n  block: fix request_queue-\u003eflags initialization\n  block: lift the initial queue bypass mode on blk_register_queue() instead of blk_init_allocated_queue()\n  block: ioctl to zero block ranges\n  block: Make blkdev_issue_zeroout use WRITE SAME\n  block: Implement support for WRITE SAME\n  block: Consolidate command flag and queue limit checks for merges\n  block: Clean up special command handling logic\n  block/blk-tag.c: Remove useless kfree\n  block: remove the duplicated setting for congestion_threshold\n  block: reject invalid queue attribute values\n  block: Add bio_clone_bioset(), bio_clone_kmalloc()\n  block: Consolidate bio_alloc_bioset(), bio_kmalloc()\n  ...\n"
    },
    {
      "commit": "614c321f4bf130766ff66fd142b1da47ab037303",
      "tree": "0b95be62c7ee296caa6b1dc54e4465eb123ba1b2",
      "parents": [
        "35c2a7f4908d404c9124c2efc6ada4640ca4d5d5"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Oct 10 01:06:20 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Oct 10 01:06:20 2012 -0400"
      },
      "message": "MAX_LFS_FILESIZE definition for 64bit needs LL...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8e22cc88d68ca1a46d7d582938f979eb640ed30f",
      "tree": "a5b5ed3af60067093dde81bd651046d24b0dfd45",
      "parents": [
        "b6963327e0521e682c2fffd018574251d3c22b41"
      ],
      "author": {
        "name": "Marco Stornelli",
        "email": "marco.stornelli@gmail.com",
        "time": "Sat Oct 06 12:43:09 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 09 23:33:39 2012 -0400"
      },
      "message": "vfs: drop lock/unlock super\n\nRemoved s_lock from super_block and removed lock/unlock super.\n\nSigned-off-by: Marco Stornelli \u003cmarco.stornelli@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6b2dbba8b6ac4df26f72eda1e5ea7bab9f950e08",
      "tree": "422ed8d7ac2fe45069f20cfba84a9a097bf444af",
      "parents": [
        "fff3fd8a1210a165252cd7cd01206da7a90d3a06"
      ],
      "author": {
        "name": "Michel Lespinasse",
        "email": "walken@google.com",
        "time": "Mon Oct 08 16:31:25 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 09 16:22:39 2012 +0900"
      },
      "message": "mm: replace vma prio_tree with an interval tree\n\nImplement an interval tree as a replacement for the VMA prio_tree.  The\nalgorithms are similar to lib/interval_tree.c; however that code can\u0027t be\ndirectly reused as the interval endpoints are not explicitly stored in the\nVMA.  So instead, the common algorithm is moved into a template and the\ndetails (node type, how to get interval endpoints from the node, etc) are\nfilled in using the C preprocessor.\n\nOnce the interval tree functions are available, using them as a\nreplacement to the VMA prio tree is a relatively simple, mechanical job.\n\nSigned-off-by: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Hillf Danton \u003cdhillf@gmail.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0b173bc4daa8f8ec03a85abf5e47b23502ff80af",
      "tree": "173d0523555e02a077e0af4563bd4cadea46cb23",
      "parents": [
        "4b6e1e37026ec7dae9b23d78ffcebdd5ddb1bfa1"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Mon Oct 08 16:28:46 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 09 16:22:17 2012 +0900"
      },
      "message": "mm: kill vma flag VM_CAN_NONLINEAR\n\nMove actual pte filling for non-linear file mappings into the new special\nvma operation: -\u003eremap_pages().\n\nFilesystems must implement this method to get non-linear mapping support,\nif it uses filemap_fault() then generic_file_remap_pages() can be used.\n\nNow device drivers can implement this method and obtain nonlinear vma support.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Carsten Otte \u003ccotte@de.ibm.com\u003e\nCc: Chris Metcalf \u003ccmetcalf@tilera.com\u003e\t#arch/tile\nCc: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: James Morris \u003cjames.l.morris@oracle.com\u003e\nCc: Jason Baron \u003cjbaron@redhat.com\u003e\nCc: Kentaro Takeda \u003ctakedakn@nttdata.co.jp\u003e\nCc: Matt Helsley \u003cmatthltc@us.ibm.com\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Robert Richter \u003crobert.richter@amd.com\u003e\nCc: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: Venkatesh Pallipadi \u003cvenki@google.com\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2bd2c1941f141ad780135ccc1cd08ca71a24f10a",
      "tree": "04246dc63002b003e67591a44c49395dcc79a70e",
      "parents": [
        "8f9c0119d7ba94c3ad13876acc240d7f12b6d8e1"
      ],
      "author": {
        "name": "Chuck Lever",
        "email": "chuck.lever@oracle.com",
        "time": "Mon Sep 24 14:51:48 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 02 21:35:55 2012 -0400"
      },
      "message": "MAX_LFS_FILESIZE should be a loff_t\n\nfs/nfs/internal.h: In function ‘nfs_super_set_maxbytes’:\nfs/nfs/internal.h:547:21: warning: comparison between signed and\n    unsigned integer expressions [-Wsign-compare]\n\nSeen with gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2).\n\nCommit 42cb56ae made s_maxbytes a loff_t, thus the type of\nMAX_LFS_FILESIZE should also be a loff_t.\n\nSigned-off-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nAcked-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c2b1ad800b66f62105a7fd250604d72e07202e66",
      "tree": "0f5461b02e016e796c0d60b9a7dc1bf69fccb9b5",
      "parents": [
        "e6b5c0822bcf43b91a2cdcb535ea828e953b6590"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Sep 27 09:35:03 2012 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Sep 27 09:35:03 2012 +0200"
      },
      "message": "fs: fix include/percpu-rwsem.h export error\n\nWe get the following export error on the include file:\n\nusr/include/linux/fs.h:13: included file \u0027linux/percpu-rwsem.h\u0027 is not exported\n\nMove the include inside the __KERNEL__ section.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "cb0942b81249798e15c3f04eee2946ef543e8115",
      "tree": "7d494c580a847342577661782c5173f76178aa81",
      "parents": [
        "cecb46f194460d23cacf3b13593f9f5a4f7a0fed"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 27 14:48:26 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Sep 26 21:10:25 2012 -0400"
      },
      "message": "make get_file() return its argument\n\nsimplifies a bunch of callers...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "62ac665ff9fc07497ca524bd20d6a96893d11071",
      "tree": "dfd697e488fde4b46f1cb2ebfb380bb881115827",
      "parents": [
        "b87570f5d349661814b262dd5fc40787700f80d6"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Wed Sep 26 07:46:43 2012 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Sep 26 07:46:43 2012 +0200"
      },
      "message": "blockdev: turn a rw semaphore into a percpu rw semaphore\n\nThis avoids cache line bouncing when many processes lock the semaphore\nfor read.\n\nNew percpu lock implementation\n\nThe lock consists of an array of percpu unsigned integers, a boolean\nvariable and a mutex.\n\nWhen we take the lock for read, we enter rcu read section, check for a\n\"locked\" variable. If it is false, we increase a percpu counter on the\ncurrent cpu and exit the rcu section. If \"locked\" is true, we exit the\nrcu section, take the mutex and drop it (this waits until a writer\nfinished) and retry.\n\nUnlocking for read just decreases percpu variable. Note that we can\nunlock on a difference cpu than where we locked, in this case the\ncounter underflows. The sum of all percpu counters represents the number\nof processes that hold the lock for read.\n\nWhen we need to lock for write, we take the mutex, set \"locked\" variable\nto true and synchronize rcu. Since RCU has been synchronized, no\nprocesses can create new read locks. We wait until the sum of percpu\ncounters is zero - when it is, there are no readers in the critical\nsection.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "b87570f5d349661814b262dd5fc40787700f80d6",
      "tree": "d06ef6c95ed114e19c864ebe0240c788dd75e85c",
      "parents": [
        "60ea8226cbd5c8301f9a39edc574ddabcb8150e0"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Wed Sep 26 07:46:40 2012 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Sep 26 07:46:40 2012 +0200"
      },
      "message": "Fix a crash when block device is read and block size is changed at the same time\n\nThe kernel may crash when block size is changed and I/O is issued\nsimultaneously.\n\nBecause some subsystems (udev or lvm) may read any block device anytime,\nthe bug actually puts any code that changes a block device size in\njeopardy.\n\nThe crash can be reproduced if you place \"msleep(1000)\" to\nblkdev_get_blocks just before \"bh-\u003eb_size \u003d max_blocks \u003c\u003c\ninode-\u003ei_blkbits;\".\nThen, run \"dd if\u003d/dev/ram0 of\u003d/dev/null bs\u003d4k count\u003d1 iflag\u003ddirect\"\nWhile it is waiting in msleep, run \"blockdev --setbsz 2048 /dev/ram0\"\nYou get a BUG.\n\nThe direct and non-direct I/O is written with the assumption that block\nsize does not change. It doesn\u0027t seem practical to fix these crashes\none-by-one there may be many crash possibilities when block size changes\nat a certain place and it is impossible to find them all and verify the\ncode.\n\nThis patch introduces a new rw-lock bd_block_size_semaphore. The lock is\ntaken for read during I/O. It is taken for write when changing block\nsize. Consequently, block size can\u0027t be changed while I/O is being\nsubmitted.\n\nFor asynchronous I/O, the patch only prevents block size change while\nthe I/O is being submitted. The block size can change when the I/O is in\nprogress or when the I/O is being finished. This is acceptable because\nthere are no accesses to block size when asynchronous I/O is being\nfinished.\n\nThe patch prevents block size changing while the device is mapped with\nmmap.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "66ba32dc167202c3cf8c86806581a9393ec7f488",
      "tree": "61bc596fd84f48a47a28a593435b437371607d6f",
      "parents": [
        "579e8f3c7b2ecf7db91398d942d76457a3ddba21"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Tue Sep 18 12:19:29 2012 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Sep 20 14:31:53 2012 +0200"
      },
      "message": "block: ioctl to zero block ranges\n\nIntroduce a BLKZEROOUT ioctl which can be used to clear block ranges by\nway of blkdev_issue_zeroout().\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "f0cd2dbb6cf387c11f87265462e370bb5469299e",
      "tree": "21c9b6237dd9131763654a6cd715461177701607",
      "parents": [
        "d42d1dabf34bdd5ad832cb56a7338817aad8a052"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "artem.bityutskiy@linux.intel.com",
        "time": "Wed Jul 25 18:11:59 2012 +0300"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Aug 04 01:24:44 2012 +0400"
      },
      "message": "vfs: kill write_super and sync_supers\n\nFinally we can kill the \u0027sync_supers\u0027 kernel thread along with the\n\u0027-\u003ewrite_super()\u0027 superblock operation because all the users are gone.\nNow every file-system is supposed to self-manage own superblock and\nits dirty state.\n\nThe nice thing about killing this thread is that it improves power management.\nIndeed, \u0027sync_supers\u0027 is a source of monotonic system wake-ups - it woke up\nevery 5 seconds no matter what - even if there were no dirty superblocks and\neven if there were no file-systems using this service (e.g., btrfs and\njournalled ext4 do not need it). So it was wasting power most of the time. And\nbecause the thread was in the core of the kernel, all systems had to have it.\nSo I am quite happy to make it go away.\n\nInterestingly, this thread is a left-over from the pdflush kernel thread which\nwas a self-forking kernel thread responsible for all the write-back in old\nLinux kernels. It was turned into per-block device BDI threads, and\n\u0027sync_supers\u0027 was a left-over. Thus, R.I.P, pdflush as well.\n\nSigned-off-by: Artem Bityutskiy \u003cartem.bityutskiy@linux.intel.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a0e881b7c189fa2bd76c024dbff91e79511c971d",
      "tree": "0c801918565b08921d21aceee5b326f64d998f5f",
      "parents": [
        "eff0d13f3823f35d70228cd151d2a2c89288ff32",
        "dbc6e0222d79e78925fe20733844a796a4b72cf9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 01 10:26:23 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 01 10:26:23 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull second vfs pile from Al Viro:\n \"The stuff in there: fsfreeze deadlock fixes by Jan (essentially, the\n  deadlock reproduced by xfstests 068), symlink and hardlink restriction\n  patches, plus assorted cleanups and fixes.\n\n  Note that another fsfreeze deadlock (emergency thaw one) is *not*\n  dealt with - the series by Fernando conflicts a lot with Jan\u0027s, breaks\n  userland ABI (FIFREEZE semantics gets changed) and trades the deadlock\n  for massive vfsmount leak; this is going to be handled next cycle.\n  There probably will be another pull request, but that stuff won\u0027t be\n  in it.\"\n\nFix up trivial conflicts due to unrelated changes next to each other in\ndrivers/{staging/gdm72xx/usb_boot.c, usb/gadget/storage_common.c}\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (54 commits)\n  delousing target_core_file a bit\n  Documentation: Correct s_umount state for freeze_fs/unfreeze_fs\n  fs: Remove old freezing mechanism\n  ext2: Implement freezing\n  btrfs: Convert to new freezing mechanism\n  nilfs2: Convert to new freezing mechanism\n  ntfs: Convert to new freezing mechanism\n  fuse: Convert to new freezing mechanism\n  gfs2: Convert to new freezing mechanism\n  ocfs2: Convert to new freezing mechanism\n  xfs: Convert to new freezing code\n  ext4: Convert to new freezing mechanism\n  fs: Protect write paths by sb_start_write - sb_end_write\n  fs: Skip atime update on frozen filesystem\n  fs: Add freezing handling to mnt_want_write() / mnt_drop_write()\n  fs: Improve filesystem freezing handling\n  switch the protection of percpu_counter list to spinlock\n  nfsd: Push mnt_want_write() outside of i_mutex\n  btrfs: Push mnt_want_write() outside of i_mutex\n  fat: Push mnt_want_write() outside of i_mutex\n  ...\n"
    },
    {
      "commit": "068535f1fef4c90aee23eb7b9b9a71c5b72d7cd0",
      "tree": "ca71858417d881bc8f72f4a2a7b035d041f7a43c",
      "parents": [
        "2d534926205db9ffce4bbbde67cb9b2cee4b835c"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Aug 01 07:56:16 2012 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 01 09:01:46 2012 -0700"
      },
      "message": "locks: remove unused lm_release_private\n\nIn commit 3b6e2723f32d (\"locks: prevent side-effects of\nlocks_release_private before file_lock is initialized\") we removed the\nlast user of lm_release_private without removing the field itself.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ac694dbdbc403c00e2c14d10bc7b8412cc378259",
      "tree": "e37328cfbeaf43716dd5914cad9179e57e84df76",
      "parents": [
        "a40a1d3d0a2fd613fdec6d89d3c053268ced76ed",
        "437ea90cc3afdca5229b41c6b1d38c4842756cb9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 19:25:39 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 19:25:39 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge Andrew\u0027s second set of patches:\n - MM\n - a few random fixes\n - a couple of RTC leftovers\n\n* emailed patches from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (120 commits)\n  rtc/rtc-88pm80x: remove unneed devm_kfree\n  rtc/rtc-88pm80x: assign ret only when rtc_register_driver fails\n  mm: hugetlbfs: close race during teardown of hugetlbfs shared page tables\n  tmpfs: distribute interleave better across nodes\n  mm: remove redundant initialization\n  mm: warn if pg_data_t isn\u0027t initialized with zero\n  mips: zero out pg_data_t when it\u0027s allocated\n  memcg: gix memory accounting scalability in shrink_page_list\n  mm/sparse: remove index_init_lock\n  mm/sparse: more checks on mem_section number\n  mm/sparse: optimize sparse_index_alloc\n  memcg: add mem_cgroup_from_css() helper\n  memcg: further prevent OOM with too many dirty pages\n  memcg: prevent OOM with too many dirty pages\n  mm: mmu_notifier: fix freed page still mapped in secondary MMU\n  mm: memcg: only check anon swapin page charges for swap cache\n  mm: memcg: only check swap cache pages for repeated charging\n  mm: memcg: split swapin charge function into private and public part\n  mm: memcg: remove needless !mm fixup to init_mm when charging\n  mm: memcg: remove unneeded shmem charge type\n  ...\n"
    },
    {
      "commit": "a509bc1a9e487d952d9404318f7f990166ab57a7",
      "tree": "40a8f8a20877da8a5b855cfbc3813c0874605093",
      "parents": [
        "62c230bc1790923a1b35da03596a68a6c9b5b100"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:44:57 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:47 2012 -0700"
      },
      "message": "mm: swap: implement generic handler for swap_activate\n\nThe version of swap_activate introduced is sufficient for swap-over-NFS\nbut would not provide enough information to implement a generic handler.\nThis patch shuffles things slightly to ensure the same information is\navailable for aops-\u003eswap_activate() as is available to the core.\n\nNo functionality change.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Xiaotian Feng \u003cdfeng@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "62c230bc1790923a1b35da03596a68a6c9b5b100",
      "tree": "46b300a00929087627e029b0f4d53e486a97ba7f",
      "parents": [
        "18022c5d8627a7a9ba8097a0f238b513fae6f5b8"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:44:55 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:47 2012 -0700"
      },
      "message": "mm: add support for a filesystem to activate swap files and use direct_IO for writing swap pages\n\nCurrently swapfiles are managed entirely by the core VM by using -\u003ebmap to\nallocate space and write to the blocks directly.  This effectively ensures\nthat the underlying blocks are allocated and avoids the need for the swap\nsubsystem to locate what physical blocks store offsets within a file.\n\nIf the swap subsystem is to use the filesystem information to locate the\nblocks, it is critical that information such as block groups, block\nbitmaps and the block descriptor table that map the swap file were\nresident in memory.  This patch adds address_space_operations that the VM\ncan call when activating or deactivating swap backed by a file.\n\n  int swap_activate(struct file *);\n  int swap_deactivate(struct file *);\n\nThe -\u003eswap_activate() method is used to communicate to the file that the\nVM relies on it, and the address_space should take adequate measures such\nas reserving space in the underlying device, reserving memory for mempools\nand pinning information such as the block descriptor table in memory.  The\n-\u003eswap_deactivate() method is called on sys_swapoff() if -\u003eswap_activate()\nreturned success.\n\nAfter a successful swapfile -\u003eswap_activate, the swapfile is marked\nSWP_FILE and swapper_space.a_ops will proxy to\nsis-\u003eswap_file-\u003ef_mappings-\u003ea_ops using -\u003edirect_io to write swapcache\npages and -\u003ereadpage to read.\n\nIt is perfectly possible that direct_IO be used to read the swap pages but\nit is an unnecessary complication.  Similarly, it is possible that\n-\u003ewritepage be used instead of direct_io to write the pages but filesystem\ndevelopers have stated that calling writepage from the VM is undesirable\nfor a variety of reasons and using direct_IO opens up the possibility of\nwriting back batches of swap pages in the future.\n\n[a.p.zijlstra@chello.nl: Original patch]\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Xiaotian Feng \u003cdfeng@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "18022c5d8627a7a9ba8097a0f238b513fae6f5b8",
      "tree": "57e0d0ec6a5369c56bd00957eb9c0e1220e62917",
      "parents": [
        "f981c5950fa85916ba49bea5d9a7a5078f47e569"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue Jul 31 16:44:51 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 18:42:47 2012 -0700"
      },
      "message": "mm: add get_kernel_page[s] for pinning of kernel addresses for I/O\n\nThis patch adds two new APIs get_kernel_pages() and get_kernel_page() that\nmay be used to pin a vector of kernel addresses for IO.  The initial user\nis expected to be NFS for allowing pages to be written to swap using\naops-\u003edirect_IO().  Strictly speaking, swap-over-NFS only needs to pin one\npage for IO but it makes sense to express the API in terms of a vector and\nadd a helper for pinning single pages.\n\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Eric B Munson \u003cemunson@mgebm.net\u003e\nCc: Eric Paris \u003ceparis@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Sebastian Andrzej Siewior \u003csebastian@breakpoint.cc\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Xiaotian Feng \u003cdfeng@redhat.com\u003e\nCc: Mark Salter \u003cmsalter@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "08843b79fb35d33859e0f8f11a7318341076e4d1",
      "tree": "e56e122146985b359d50787e3d1df640c4582dfa",
      "parents": [
        "cc8362b1f6d724e46f515121d442779924b19fec",
        "2c142baa7b237584bae7dc28630851701497e1ef"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 14:42:28 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 31 14:42:28 2012 -0700"
      },
      "message": "Merge branch \u0027nfsd-next\u0027 of git://linux-nfs.org/~bfields/linux\n\nPull nfsd changes from J. Bruce Fields:\n \"This has been an unusually quiet cycle--mostly bugfixes and cleanup.\n  The one large piece is Stanislav\u0027s work to containerize the server\u0027s\n  grace period--but that in itself is just one more step in a\n  not-yet-complete project to allow fully containerized nfs service.\n\n  There are a number of outstanding delegation, container, v4 state, and\n  gss patches that aren\u0027t quite ready yet; 3.7 may be wilder.\"\n\n* \u0027nfsd-next\u0027 of git://linux-nfs.org/~bfields/linux: (35 commits)\n  NFSd: make boot_time variable per network namespace\n  NFSd: make grace end flag per network namespace\n  Lockd: move grace period management from lockd() to per-net functions\n  LockD: pass actual network namespace to grace period management functions\n  LockD: manage grace list per network namespace\n  SUNRPC: service request network namespace helper introduced\n  NFSd: make nfsd4_manager allocated per network namespace context.\n  LockD: make lockd manager allocated per network namespace\n  LockD: manage grace period per network namespace\n  Lockd: add more debug to host shutdown functions\n  Lockd: host complaining function introduced\n  LockD: manage used host count per networks namespace\n  LockD: manage garbage collection timeout per networks namespace\n  LockD: make garbage collector network namespace aware.\n  LockD: mark host per network namespace on garbage collect\n  nfsd4: fix missing fault_inject.h include\n  locks: move lease-specific code out of locks_delete_lock\n  locks: prevent side-effects of locks_release_private before file_lock is initialized\n  NFSd: set nfsd_serv to NULL after service destruction\n  NFSd: introduce nfsd_destroy() helper\n  ...\n"
    },
    {
      "commit": "d9c95bdd53a8d9116d269c91ce3d151472e6bcd6",
      "tree": "43559cf0897c98796df34a585ffab0ca02fa2576",
      "parents": [
        "1e8b212fe5dcee9d3dbb152d235f3c33458fb26e"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Jun 12 16:20:47 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 31 09:45:54 2012 +0400"
      },
      "message": "fs: Remove old freezing mechanism\n\nNow that all users are converted, we can remove functions, variables, and\nconstants defined by the old freezing mechanism.\n\nBugLink: https://bugs.launchpad.net/bugs/897421\nTested-by: Kamal Mostafa \u003ckamal@canonical.com\u003e\nTested-by: Peter M. Petrakis \u003cpeter.petrakis@canonical.com\u003e\nTested-by: Dann Frazier \u003cdann.frazier@canonical.com\u003e\nTested-by: Massimo Morana \u003cmassimo.morana@canonical.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5accdf82ba25cacefd6c1867f1704beb4d244cdd",
      "tree": "7125b01d9bf0f23d5c5eaed0cbafa9a1cbe544d5",
      "parents": [
        "d87aae2f3c8e90bd0fe03f5309b4d066b712b8ec"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Jun 12 16:20:34 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 31 09:30:13 2012 +0400"
      },
      "message": "fs: Improve filesystem freezing handling\n\nvfs_check_frozen() tests are racy since the filesystem can be frozen just after\nthe test is performed. Thus in write paths we can end up marking some pages or\ninodes dirty even though the file system is already frozen. This creates\nproblems with flusher thread hanging on frozen filesystem.\n\nAnother problem is that exclusion between -\u003epage_mkwrite() and filesystem\nfreezing has been handled by setting page dirty and then verifying s_frozen.\nThis guaranteed that either the freezing code sees the faulted page, writes it,\nand writeprotects it again or we see s_frozen set and bail out of page fault.\nThis works to protect from page being marked writeable while filesystem\nfreezing is running but has an unpleasant artefact of leaving dirty (although\nunmodified and writeprotected) pages on frozen filesystem resulting in similar\nproblems with flusher thread as the first problem.\n\nThis patch aims at providing exclusion between write paths and filesystem\nfreezing. We implement a writer-freeze read-write semaphore in the superblock.\nActually, there are three such semaphores because of lock ranking reasons - one\nfor page fault handlers (-\u003epage_mkwrite), one for all other writers, and one of\ninternal filesystem purposes (used e.g. to track running transactions).  Write\npaths which should block freezing (e.g. directory operations, -\u003eaio_write(),\n-\u003epage_mkwrite) hold reader side of the semaphore. Code freezing the filesystem\ntakes the writer side.\n\nOnly that we don\u0027t really want to bounce cachelines of the semaphores between\nCPUs for each write happening. So we implement the reader side of the semaphore\nas a per-cpu counter and the writer side is implemented using s_writers.frozen\nsuperblock field.\n\n[AV: microoptimize sb_start_write(); we want it fast in normal case]\n\nBugLink: https://bugs.launchpad.net/bugs/897421\nTested-by: Kamal Mostafa \u003ckamal@canonical.com\u003e\nTested-by: Peter M. Petrakis \u003cpeter.petrakis@canonical.com\u003e\nTested-by: Dann Frazier \u003cdann.frazier@canonical.com\u003e\nTested-by: Massimo Morana \u003cmassimo.morana@canonical.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "800179c9b8a1e796e441674776d11cd4c05d61d7",
      "tree": "5760992f4453c35b57b2686d8b8d5caee239b637",
      "parents": [
        "3134f37e931d75931bdf6d4eacd82a3fd26eca7c"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Wed Jul 25 17:29:07 2012 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 29 21:37:58 2012 +0400"
      },
      "message": "fs: add link restrictions\n\nThis adds symlink and hardlink restrictions to the Linux VFS.\n\nSymlinks:\n\nA long-standing class of security issues is the symlink-based\ntime-of-check-time-of-use race, most commonly seen in world-writable\ndirectories like /tmp. The common method of exploitation of this flaw\nis to cross privilege boundaries when following a given symlink (i.e. a\nroot process follows a symlink belonging to another user). For a likely\nincomplete list of hundreds of examples across the years, please see:\nhttp://cve.mitre.org/cgi-bin/cvekey.cgi?keyword\u003d/tmp\n\nThe solution is to permit symlinks to only be followed when outside\na sticky world-writable directory, or when the uid of the symlink and\nfollower match, or when the directory owner matches the symlink\u0027s owner.\n\nSome pointers to the history of earlier discussion that I could find:\n\n 1996 Aug, Zygo Blaxell\n  http://marc.info/?l\u003dbugtraq\u0026m\u003d87602167419830\u0026w\u003d2\n 1996 Oct, Andrew Tridgell\n  http://lkml.indiana.edu/hypermail/linux/kernel/9610.2/0086.html\n 1997 Dec, Albert D Cahalan\n  http://lkml.org/lkml/1997/12/16/4\n 2005 Feb, Lorenzo Hernández García-Hierro\n  http://lkml.indiana.edu/hypermail/linux/kernel/0502.0/1896.html\n 2010 May, Kees Cook\n  https://lkml.org/lkml/2010/5/30/144\n\nPast objections and rebuttals could be summarized as:\n\n - Violates POSIX.\n   - POSIX didn\u0027t consider this situation and it\u0027s not useful to follow\n     a broken specification at the cost of security.\n - Might break unknown applications that use this feature.\n   - Applications that break because of the change are easy to spot and\n     fix. Applications that are vulnerable to symlink ToCToU by not having\n     the change aren\u0027t. Additionally, no applications have yet been found\n     that rely on this behavior.\n - Applications should just use mkstemp() or O_CREATE|O_EXCL.\n   - True, but applications are not perfect, and new software is written\n     all the time that makes these mistakes; blocking this flaw at the\n     kernel is a single solution to the entire class of vulnerability.\n - This should live in the core VFS.\n   - This should live in an LSM. (https://lkml.org/lkml/2010/5/31/135)\n - This should live in an LSM.\n   - This should live in the core VFS. (https://lkml.org/lkml/2010/8/2/188)\n\nHardlinks:\n\nOn systems that have user-writable directories on the same partition\nas system files, a long-standing class of security issues is the\nhardlink-based time-of-check-time-of-use race, most commonly seen in\nworld-writable directories like /tmp. The common method of exploitation\nof this flaw is to cross privilege boundaries when following a given\nhardlink (i.e. a root process follows a hardlink created by another\nuser). Additionally, an issue exists where users can \"pin\" a potentially\nvulnerable setuid/setgid file so that an administrator will not actually\nupgrade a system fully.\n\nThe solution is to permit hardlinks to only be created when the user is\nalready the existing file\u0027s owner, or if they already have read/write\naccess to the existing file.\n\nMany Linux users are surprised when they learn they can link to files\nthey have no access to, so this change appears to follow the doctrine\nof \"least surprise\". Additionally, this change does not violate POSIX,\nwhich states \"the implementation may require that the calling process\nhas permission to access the existing file\"[1].\n\nThis change is known to break some implementations of the \"at\" daemon,\nthough the version used by Fedora and Ubuntu has been fixed[2] for\na while. Otherwise, the change has been undisruptive while in use in\nUbuntu for the last 1.5 years.\n\n[1] http://pubs.opengroup.org/onlinepubs/9699919799/functions/linkat.html\n[2] http://anonscm.debian.org/gitweb/?p\u003dcollab-maint/at.git;a\u003dcommitdiff;h\u003df4114656c3a6c6f6070e315ffdf940a49eda3279\n\nThis patch is based on the patches in Openwall and grsecurity, along with\nsuggestions from Al Viro. I have added a sysctl to enable the protected\nbehavior, and documentation.\n\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e4fad8e5d220e3dfb1050eee752ee5058f29a232",
      "tree": "b56356fda1d1f4f47e1da63aa24080db999dafc1",
      "parents": [
        "b5bcdda32736b94a7d178d156d80a69f536ad468"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 21 15:33:25 2012 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 29 21:24:19 2012 +0400"
      },
      "message": "consolidate pipe file creation\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5ccb0066f2d561549cc4d73d7f56b4ce3ca7a8a1",
      "tree": "43ca9eff5c94fc3609d858ce2a430c544fcc5f99",
      "parents": [
        "db9c4553412d72c6a05e0168d1d487f66e0660b3"
      ],
      "author": {
        "name": "Stanislav Kinsbursky",
        "email": "skinsbursky@parallels.com",
        "time": "Wed Jul 25 16:57:22 2012 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Fri Jul 27 16:49:22 2012 -0400"
      },
      "message": "LockD: pass actual network namespace to grace period management functions\n\nPassed network namespace replaced hard-coded init_net\n\nSigned-off-by: Stanislav Kinsbursky \u003cskinsbursky@parallels.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "765927b2d508712d320c8934db963bbe14c3fcec",
      "tree": "97acdb14fae285764def396c4ed01d4d5c93e76a",
      "parents": [
        "bf349a447059656ebe63fb4fd1ccb27ac1da22ad"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jun 26 21:58:53 2012 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 23 00:01:29 2012 +0400"
      },
      "message": "switch dentry_open() to struct path, make it grab references itself\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e8b96eb5034a0ccebf36760f88e31ea3e3cdf1e4",
      "tree": "3ea1b85311b3d059f2bbf38e484aa2ce06bab017",
      "parents": [
        "4ea425b63a3dfeb7707fc7cc7161c11a51e871ed"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Mon Apr 30 13:11:29 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 23 00:00:15 2012 +0400"
      },
      "message": "vfs: allow custom EOF in generic_file_llseek code\n\nFor ext3/4 htree directories, using the vfs llseek function with\nSEEK_END goes to i_size like for any other file, but in reality\nwe want the maximum possible hash value.  Recent changes\nin ext4 have cut \u0026 pasted generic_file_llseek() back into fs/ext4/dir.c,\nbut replicating this core code seems like a bad idea, especially\nsince the copy has already diverged from the vfs.\n\nThis patch updates generic_file_llseek_size to accept\nboth a custom maximum offset, and a custom EOF position.  With this\nin place, ext4_dir_llseek can pass in the appropriate maximum hash\nposition for both maxsize and eof, and get what it wants.\n\nAs far as I know, this does not fix any bugs - nfs in the kernel\ndoesn\u0027t use SEEK_END, and I don\u0027t know of any user who does.  But\nsome ext4 folks seem keen on doing the right thing here, and I can\u0027t\nreally argue.\n\n(Patch also fixes up some comments slightly)\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5c0d6b60a0ba46d45020547eacf7199171920935",
      "tree": "7d9f99cc40981dc0872e1ac33317f48b9e1f2bfb",
      "parents": [
        "b3de653105180b57af90ef2f5b8441f085f4ff56"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Jul 03 16:45:31 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 22 23:58:45 2012 +0400"
      },
      "message": "vfs: Create function for iterating over block devices\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9249e17fe094d853d1ef7475dd559a2cc7e23d42",
      "tree": "fa80a6044c14b38994d232c0e05cb7365800adf2",
      "parents": [
        "f015f1267b23d3530d3f874243fb83cb5f443005"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Mon Jun 25 12:55:37 2012 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:38:34 2012 +0400"
      },
      "message": "VFS: Pass mount flags to sget()\n\nPass mount flags to sget() so that it can use them in initialising a new\nsuperblock before the set function is called.  They could also be passed to the\ncompare function.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "312b63fba9e88a0dcf800834b8ede8716bcc1e17",
      "tree": "a069e3b9ff142912fd09f09a22466707d31c6812",
      "parents": [
        "ebfc3b49a7ac25920cb5be5445f602e51d2ea559"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 18:09:36 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:34:50 2012 +0400"
      },
      "message": "don\u0027t pass nameidata * to vfs_create()\n\nall we want is a boolean flag, same as the method gets now\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ebfc3b49a7ac25920cb5be5445f602e51d2ea559",
      "tree": "c3241f875dd04ab9f63b4e7ded7ed206e4df1b9f",
      "parents": [
        "72bd866a01fc62ccbc466f3eb7599b14c937e96b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 18:05:36 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:34:47 2012 +0400"
      },
      "message": "don\u0027t pass nameidata to -\u003ecreate()\n\nboolean \"does it have to be exclusive?\" flag is passed instead;\nLocal filesystem should just ignore it - the object is guaranteed\nnot to be there yet.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "00cd8dd3bf95f2cc8435b4cac01d9995635c6d0b",
      "tree": "d44be476ced0317ae79f28853734ebe2210ad38e",
      "parents": [
        "201f956e43d4542723514e024d948011dd766d43"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 17:13:09 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:34:32 2012 +0400"
      },
      "message": "stop passing nameidata to -\u003elookup()\n\nJust the flags; only NFS cares even about that, but there are\nlegitimate uses for such argument.  And getting rid of that\ncompletely would require splitting -\u003elookup() into a couple\nof methods (at least), so let\u0027s leave that alone for now...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e45198a6ac24bd2c4ad4a43b670c2f1a23dd2df3",
      "tree": "d44f4217a8a556ac9ebb11cfc41c0e148fb1084c",
      "parents": [
        "2675a4eb6a9f1240098721c8a84ede28abd9d7b3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 10 06:48:09 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:45 2012 +0400"
      },
      "message": "make finish_no_open() return int\n\nnamely, 1 ;-)  That\u0027s what we want to return from -\u003eatomic_open()\ninstances after finish_no_open().\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "30d904947459cca2beb69e0110716f5248b31f2a",
      "tree": "024e2a913266377d234147b14b7eb37017546173",
      "parents": [
        "a4a3bdd778715999ddfeefdc52ab76254580fa76"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 22 12:40:19 2012 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:39 2012 +0400"
      },
      "message": "kill struct opendata\n\nJust pass struct file *.  Methods are happier that way...\nThere\u0027s no need to return struct file * from finish_open() now,\nso let it return int.  Next: saner prototypes for parts in\nnamei.c\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d95852777bc8ba6b3ad3397d495c5f9dd8ca8383",
      "tree": "96e9d8b1d33c4f6f7b5ba5be0fa4fd8f77c7a67f",
      "parents": [
        "3d8a00d2099ebc6d5a6e95fadaf861709d9919a8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 22 12:39:14 2012 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 14 16:33:35 2012 +0400"
      },
      "message": "make -\u003eatomic_open() return int\n\nChange of calling conventions:\nold\t\tnew\nNULL\t\t1\nfile\t\t0\nERR_PTR(-ve)\t-ve\n\nCaller *knows* that struct file *; no need to return it.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    }
  ],
  "next": "47237687d73cbeae1dd7a133c3fc3d7239094568"
}
