)]}'
{
  "log": [
    {
      "commit": "85cf0ac38c10b1f19fb1682354df1f7d9380a973",
      "tree": "4a892a01cd844f574566b8b3381aab03edb4dea2",
      "parents": [
        "50f3515828024582402044bcced6804c070c491c",
        "af71dda0b8e667d03eec21d25f90265eec5efea1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 30 09:46:36 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 30 09:46:36 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2:\n  nilfs2: fix whitespace coding style issues\n  nilfs2: fix oops due to a bad aops initialization\n  nilfs2: fix data loss in mmap page write for hole blocks\n"
    },
    {
      "commit": "50f3515828024582402044bcced6804c070c491c",
      "tree": "f9cf25bee56d0ca54acf4d571536268774dc56ed",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067",
        "4b2a58abd1e17c0ee53c8dded879e015917cca67"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 30 09:46:09 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 30 09:46:09 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  libceph: Create a new key type \"ceph\".\n  libceph: Get secret from the kernel keys api when mounting with key\u003dNAME.\n  ceph: Move secret key parsing earlier.\n  libceph: fix null dereference when unregistering linger requests\n  ceph: unlock on error in ceph_osdc_start_request()\n  ceph: fix possible NULL pointer dereference\n  ceph: flush msgr_wq during mds_client shutdown\n"
    },
    {
      "commit": "af71dda0b8e667d03eec21d25f90265eec5efea1",
      "tree": "fe070073c86352f4ffd30381b8f7ba3a158d4619",
      "parents": [
        "d611b22f1a5ddd0823e9d6a30bac91219f800e41"
      ],
      "author": {
        "name": "Nicolas Kaiser",
        "email": "nikai@nikai.net",
        "time": "Sat Mar 19 16:47:54 2011 +0100"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 30 17:39:54 2011 +0900"
      },
      "message": "nilfs2: fix whitespace coding style issues\n\nFixes whitespace coding style issues.\n\nSigned-off-by: Nicolas Kaiser \u003cnikai@nikai.net\u003e\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\n"
    },
    {
      "commit": "d611b22f1a5ddd0823e9d6a30bac91219f800e41",
      "tree": "a0896c5007c47662dd52158e76972cac7a682d4c",
      "parents": [
        "34094537943113467faee98fe67c8a3d3f9a0a8b"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 30 11:49:20 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 30 17:39:25 2011 +0900"
      },
      "message": "nilfs2: fix oops due to a bad aops initialization\n\nNilfs in 2.6.39-rc1 hit the following oops:\n\n BUG: unable to handle kernel NULL pointer dereference at 0000000000000048\n IP: [\u003cffffffff810ac235\u003e] try_to_release_page+0x2a/0x3d\n PGD 234cb6067 PUD 234c72067 PMD 0\n Oops: 0000 [#1] SMP\n \u003csnip\u003e\n Process truncate (pid: 10995, threadinfo ffff8802353c2000, task ffff880234cfa000)\n Stack:\n  ffff8802333c77b8 ffffffff810b64b0 0000000000003802 ffffffffa0052cca\n  0000000000000000 ffff8802353c3b58 0000000000000000 ffff8802353c3b58\n  0000000000000001 0000000000000000 ffffea0007b92308 ffffea0007b92308\n Call Trace:\n  [\u003cffffffff810b64b0\u003e] ? invalidate_inode_pages2_range+0x15f/0x273\n  [\u003cffffffffa0052cca\u003e] ? nilfs_palloc_get_block+0x2d/0xaf [nilfs2]\n  [\u003cffffffff810589e7\u003e] ? bit_waitqueue+0x14/0xa1\n  [\u003cffffffff81058ab1\u003e] ? wake_up_bit+0x10/0x20\n  [\u003cffffffffa00433fd\u003e] ? nilfs_forget_buffer+0x66/0x7a [nilfs2]\n  [\u003cffffffffa00467b8\u003e] ? nilfs_btree_concat_left+0x5c/0x77 [nilfs2]\n  [\u003cffffffffa00471fc\u003e] ? nilfs_btree_delete+0x395/0x3cf [nilfs2]\n  [\u003cffffffffa00449a3\u003e] ? nilfs_bmap_do_delete+0x6e/0x79 [nilfs2]\n  [\u003cffffffffa0045845\u003e] ? nilfs_btree_last_key+0x14b/0x15e [nilfs2]\n  [\u003cffffffffa00449dd\u003e] ? nilfs_bmap_truncate+0x2f/0x83 [nilfs2]\n  [\u003cffffffffa0044ab2\u003e] ? nilfs_bmap_last_key+0x35/0x62 [nilfs2]\n  [\u003cffffffffa003e99b\u003e] ? nilfs_truncate_bmap+0x6b/0xc7 [nilfs2]\n  [\u003cffffffffa003ee4a\u003e] ? nilfs_truncate+0x79/0xe4 [nilfs2]\n  [\u003cffffffff810b6c00\u003e] ? vmtruncate+0x33/0x3b\n  [\u003cffffffffa003e8f1\u003e] ? nilfs_setattr+0x4d/0x8c [nilfs2]\n  [\u003cffffffff81026106\u003e] ? do_page_fault+0x31b/0x356\n  [\u003cffffffff810f9d61\u003e] ? notify_change+0x17d/0x262\n  [\u003cffffffff810e5046\u003e] ? do_truncate+0x65/0x80\n  [\u003cffffffff810e52af\u003e] ? sys_ftruncate+0xf1/0xf6\n  [\u003cffffffff8132c012\u003e] ? system_call_fastpath+0x16/0x1b\n Code: c3 48 83 ec 08 48 8b 17 48 8b 47 18 80 e2 01 75 04 0f 0b eb fe 48 8b 17 80 e6 20 74 05 31 c0 41 59 c3 48 85 c0 74 11 48 8b 40 58\n  8b 40 48 48 85 c0 74 04 41 58 ff e0 59 e9 b1 b5 05 00 41 54\n RIP  [\u003cffffffff810ac235\u003e] try_to_release_page+0x2a/0x3d\n  RSP \u003cffff8802353c3b08\u003e\n CR2: 0000000000000048\n\nThis oops was brought in by the change \"block: remove per-queue\nplugging\" (commit: 7eaceaccab5f40bb).  It initializes mapping-\u003ea_ops\nwith a NULL pointer for some pages in nilfs (e.g. btree node pages),\nbut mm code doesn\u0027t NULL pointer checks against mapping-\u003ea_ops. (the\ncheck is done for each callback function)\n\nThis corrects the aops initialization and fixes the oops.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nAcked-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "34094537943113467faee98fe67c8a3d3f9a0a8b",
      "tree": "b848b18c90bfd29655e5806e81c54d02946c980d",
      "parents": [
        "0ce790e7d736cedc563e1fb4e998babf5a4dbc3d"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Sun Mar 27 22:50:49 2011 +0900"
      },
      "committer": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Wed Mar 30 10:45:31 2011 +0900"
      },
      "message": "nilfs2: fix data loss in mmap page write for hole blocks\n\nFrom the result of a function test of mmap, mmap write to shared pages\nturned out to be broken for hole blocks.  It doesn\u0027t write out filled\nblocks and the data will be lost after umount.  This is due to a bug\nthat the target file is not queued for log writer when filling hole\nblocks.\n\nAlso, nilfs_page_mkwrite function exits normal code path even after\nsuccessfully filled hole blocks due to a change of block_page_mkwrite\nfunction; just after nilfs was merged into the mainline,\nblock_page_mkwrite() started to return VM_FAULT_LOCKED instead of zero\nby the patch \"mm: close page_mkwrite races\" (commit:\nb827e496c893de0c).  The current nilfs_page_mkwrite() is not handling\nthis value properly.\n\nThis corrects nilfs_page_mkwrite() and will resolve the data loss\nproblem in mmap write.\n\n[This should be applied to every kernel since 2.6.30 but a fix is\n needed for 2.6.37 and prior kernels]\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nTested-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: stable \u003cstable@kernel.org\u003e  [2.6.38]\n"
    },
    {
      "commit": "8323c3aa74cd92465350294567142d12ffdcc963",
      "tree": "052e7374393994eea8d534f98ee1bc7acea4c2d9",
      "parents": [
        "fbdb9190482fd83a3eb20cdeb0da454759f479d7"
      ],
      "author": {
        "name": "Tommi Virtanen",
        "email": "tommi.virtanen@dreamhost.com",
        "time": "Fri Mar 25 16:32:57 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 29 12:11:16 2011 -0700"
      },
      "message": "ceph: Move secret key parsing earlier.\n\nThis makes the base64 logic be contained in mount option parsing,\nand prepares us for replacing the homebew key management with the\nkernel key retention service.\n\nSigned-off-by: Tommi Virtanen \u003ctommi.virtanen@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0444d76ae64fffc7851797fc1b6ebdbb44ac504a",
      "tree": "d0678f0f8c82f3c2b2c66a6b47242eef1b323142",
      "parents": [
        "cb1817b37313b4b6c7f8f93c730553dd3cb6ac57"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 29 18:08:50 2011 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 29 07:50:34 2011 -0700"
      },
      "message": "fs: don\u0027t use igrab() while holding i_lock\n\nFix the incorrect use of igrab() inside the i_lock in NFS and Ceph‥\n\nIf we are already holding the i_lock, we have a reference to the\ninode so we can safely use ihold() to gain an extra reference. This\navoids hangs due to lock recursion on the i_lock now that the\ninode_lock is gone and igrab() uses the i_lock itself.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: linux-fsdevel@vger.kernel.org\nCc: Ryan Mallon \u003cryan@bluewatersys.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c5850150d0b9ae16840c5d9846f9d5a759996a15",
      "tree": "6e3f66bff48916af728aa4173f2b7657b31c2600",
      "parents": [
        "243b422af9ea9af4ead07a8ad54c90d4f9b6081a",
        "0e6e847ffe37436e331c132639f9f872febce82e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 15:51:02 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 15:51:02 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs\n\n* \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs:\n  xfs: stop using the page cache to back the buffer cache\n  xfs: register the inode cache shrinker before quotachecks\n  xfs: xfs_trans_read_buf() should return an error on failure\n  xfs: introduce inode cluster buffer trylocks for xfs_iflush\n  vmap: flush vmap aliases when mapping fails\n  xfs: preallocation transactions do not need to be synchronous\n\nFix up trivial conflicts in fs/xfs/linux-2.6/xfs_buf.c due to plug removal.\n"
    },
    {
      "commit": "7f5fe3ec8eab23cc28e8fb7d23b4777ad6a05734",
      "tree": "1c553d6a92115aea7d24d279c0bee5dc6e894902",
      "parents": [
        "212a17ab878305600e607f637d2d8a49d9f7ef25",
        "b5695d04634fa4ccca7dcbc05bb4a66522f02e0b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 15:43:25 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 15:43:25 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6:\n  eCryptfs: write lock requested keys\n  eCryptfs: move ecryptfs_find_auth_tok_for_sig() call before mutex_lock\n  eCryptfs: verify authentication tokens before their use\n  eCryptfs: modified size of keysig in the ecryptfs_key_sig structure\n  eCryptfs: removed num_global_auth_toks from ecryptfs_mount_crypt_stat\n  eCryptfs: ecryptfs_keyring_auth_tok_for_sig() bug fix\n  eCryptfs: Unlock page in write_begin error path\n  ecryptfs: modify write path to encrypt page in writepage\n  eCryptfs: Remove ECRYPTFS_NEW_FILE crypt stat flag\n  eCryptfs: Remove unnecessary grow_file() function\n"
    },
    {
      "commit": "212a17ab878305600e607f637d2d8a49d9f7ef25",
      "tree": "64ad97fcc3d5c49ebd735f5508643c798aeecddf",
      "parents": [
        "baaca1a61497d97cec595fedce03b0a23b983e64",
        "d9d04879321af570ea7285c6dad92d9c3cd108a1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 15:31:05 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 15:31:05 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus-unmerged\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus-unmerged\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (45 commits)\n  Btrfs: fix __btrfs_map_block on 32 bit machines\n  btrfs: fix possible deadlock by clearing __GFP_FS flag\n  btrfs: check link counter overflow in link(2)\n  btrfs: don\u0027t mess with i_nlink of unlocked inode in rename()\n  Btrfs: check return value of btrfs_alloc_path()\n  Btrfs: fix OOPS of empty filesystem after balance\n  Btrfs: fix memory leak of empty filesystem after balance\n  Btrfs: fix return value of setflags ioctl\n  Btrfs: fix uncheck memory allocations\n  btrfs: make inode ref log recovery faster\n  Btrfs: add btrfs_trim_fs() to handle FITRIM\n  Btrfs: adjust btrfs_discard_extent() return errors and trimmed bytes\n  Btrfs: make btrfs_map_block() return entire free extent for each device of RAID0/1/10/DUP\n  Btrfs: make update_reserved_bytes() public\n  btrfs: return EXDEV when linking from different subvolumes\n  Btrfs: Per file/directory controls for COW and compression\n  Btrfs: add datacow flag in inode flag\n  btrfs: use GFP_NOFS instead of GFP_KERNEL\n  Btrfs: check return value of read_tree_block()\n  btrfs: properly access unaligned checksum buffer\n  ...\n\nFix up trivial conflicts in fs/btrfs/volumes.c due to plug removal in\nthe block layer.\n"
    },
    {
      "commit": "03e4970c10151c5fb25ddd7e9a142d63c6a8d058",
      "tree": "393447b9d0a6ebc64689d6e793e80ad549b97e35",
      "parents": [
        "1788c208aab15f9d9d1d24cff0d0c64b5c73bbee",
        "272b62c1f0f6f742046e45b50b6fec98860208a0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 13:03:31 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 13:03:31 2011 -0700"
      },
      "message": "Merge branch \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2\n\n* \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2: (39 commits)\n  Treat writes as new when holes span across page boundaries\n  fs,ocfs2: Move o2net_get_func_run_time under CONFIG_OCFS2_FS_STATS.\n  ocfs2/dlm: Move kmalloc() outside the spinlock\n  ocfs2: Make the left masklogs compat.\n  ocfs2: Remove masklog ML_AIO.\n  ocfs2: Remove masklog ML_UPTODATE.\n  ocfs2: Remove masklog ML_BH_IO.\n  ocfs2: Remove masklog ML_JOURNAL.\n  ocfs2: Remove masklog ML_EXPORT.\n  ocfs2: Remove masklog ML_DCACHE.\n  ocfs2: Remove masklog ML_NAMEI.\n  ocfs2: Remove mlog(0) from fs/ocfs2/dir.c\n  ocfs2: remove NAMEI from symlink.c\n  ocfs2: Remove masklog ML_QUOTA.\n  ocfs2: Remove mlog(0) from quota_local.c.\n  ocfs2: Remove masklog ML_RESERVATIONS.\n  ocfs2: Remove masklog ML_XATTR.\n  ocfs2: Remove masklog ML_SUPER.\n  ocfs2: Remove mlog(0) from fs/ocfs2/heartbeat.c\n  ocfs2: Remove mlog(0) from fs/ocfs2/slot_map.c\n  ...\n\nFix up trivial conflict in fs/ocfs2/super.c\n"
    },
    {
      "commit": "272b62c1f0f6f742046e45b50b6fec98860208a0",
      "tree": "e57667bcd599a145f845fdb6aa4925ead19c0592",
      "parents": [
        "99bdc3880c611c7f2061fbd5372ef81b40217e26"
      ],
      "author": {
        "name": "Goldwyn Rodrigues",
        "email": "rgoldwyn@gmail.com",
        "time": "Thu Feb 17 09:44:40 2011 -0600"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "jlbec@evilplan.org",
        "time": "Mon Mar 28 09:44:58 2011 -0700"
      },
      "message": "Treat writes as new when holes span across page boundaries\n\nWhen a hole spans across page boundaries, the next write forces\na read of the block. This could end up reading existing garbage\ndata from the disk in ocfs2_map_page_blocks. This leads to\nnon-zero holes. In order to avoid this, mark the writes as new\nwhen the holes span across page boundaries.\n\nSigned-off-by: Goldwyn Rodrigues \u003crgoldwyn@suse.de\u003e\nSigned-off-by: jlbec \u003cjlbec@evilplan.org\u003e\n"
    },
    {
      "commit": "99bdc3880c611c7f2061fbd5372ef81b40217e26",
      "tree": "ef68a53e28e9ee53ce9db3642bab5fa5b3d44866",
      "parents": [
        "ed59992e8d91b70053c53d846a76f7e1ac000454",
        "b4e1b7e88b2c87c358c2a88bec0c76d25accc604"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "jlbec@evilplan.org",
        "time": "Mon Mar 28 09:44:26 2011 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "jlbec@evilplan.org",
        "time": "Mon Mar 28 09:44:26 2011 -0700"
      },
      "message": "Merge branch \u0027mlog_replace_for_39\u0027 of git://repo.or.cz/taoma-kernel into ocfs2-merge-window-fix\n"
    },
    {
      "commit": "ed59992e8d91b70053c53d846a76f7e1ac000454",
      "tree": "f8e3cebab68a6a5919225e95dde9f3f3a9d00817",
      "parents": [
        "770c4d81e0d2ca45516ddc9ae0a69565790b5533"
      ],
      "author": {
        "name": "Rakib Mullick",
        "email": "rakib.mullick@gmail.com",
        "time": "Fri Mar 18 17:01:08 2011 +0600"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "jlbec@evilplan.org",
        "time": "Mon Mar 28 09:43:28 2011 -0700"
      },
      "message": "fs,ocfs2: Move o2net_get_func_run_time under CONFIG_OCFS2_FS_STATS.\n\nWhen CONFIG_DEBUG_FS\u003dy and CONFIG_OCFS2_FS_STATS\u003dn, we get the\nfollowing warning:\n\nfs/ocfs2/cluster/tcp.c:213:16: warning: ‘o2net_get_func_run_time’\ndefined but not used\n\nSince o2net_get_func_run_time is only called from\no2net_update_recv_stats, so move it under CONFIG_OCFS2_FS_STATS.\n\nSigned-off-by: Rakib Mullick \u003crakib.mullick@gmail.com\u003e\nSigned-off-by: jlbec \u003cjlbec@evilplan.org\u003e\n"
    },
    {
      "commit": "1788c208aab15f9d9d1d24cff0d0c64b5c73bbee",
      "tree": "faf11b0fe60042af282a57f339031728dda28594",
      "parents": [
        "15b7cf1416c0e3ae6163ade3349d717fe2729952",
        "a271c5a0dea418931b6a903ef85adc30ad4c54be"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 07:52:58 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 07:52:58 2011 -0700"
      },
      "message": "Merge branch \u0027bugfixes\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027bugfixes\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6:\n  NFS: Ensure that rpc_release_resources_task() can be called twice.\n  NFS: Don\u0027t leak RPC clients in NFSv4 secinfo negotiation\n  NFS: Fix a hang in the writeback path\n"
    },
    {
      "commit": "d9d04879321af570ea7285c6dad92d9c3cd108a1",
      "tree": "5a861897ca626d7bfa95ffc82a8448da2987533d",
      "parents": [
        "1561deda687eef0e95065f1268d680ddc5976ee7"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sun Mar 27 21:23:21 2011 -0400"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:59 2011 -0400"
      },
      "message": "Btrfs: fix __btrfs_map_block on 32 bit machines\n\nRecent changes for discard support didn\u0027t compile,\nthis fixes them not to try and % 64 bit numbers.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1561deda687eef0e95065f1268d680ddc5976ee7",
      "tree": "3ad8a8305fc3ca960cf7ef472f64d9cfef246ffd",
      "parents": [
        "c055e99eea6e4f614267632fac546e7896c0227b"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Sun Mar 27 16:07:36 2011 +0800"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:58 2011 -0400"
      },
      "message": "btrfs: fix possible deadlock by clearing __GFP_FS flag\n\nUsing the GFP_HIGHUSER_MOVABLE flag to allocate the metadata\u0027s page may cause\ndeadlock.\n  Task1\n  open()\n    ...\n    btrfs_search_slot()\n      ...\n      btrfs_cow_block()\n\t...\n\talloc_page()\n\t  wait for reclaiming\n\t\t\t\t\tshrink_slab()\n\t\t\t\t\t  ...\n\t\t\t\t\t  shrink_icache_memory()\n\t\t\t\t\t    ...\n\t\t\t\t\t    btrfs_evict_inode()\n\t\t\t\t\t      ...\n\t\t\t\t\t      btrfs_search_slot()\n\nIf the path is locked by task1, the deadlock happens.\n\nSo the btree\u0027s page cache is different with the file\u0027s page cache, it can not\nallocate pages by GFP_HIGHUSER_MOVABLE flag, we must clear __GFP_FS flag in\nGFP_HIGHUSER_MOVABLE flag.\n\nReported-by: Itaru Kitayama \u003ckitayama@cl.bb4u.ne.jp\u003e\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c055e99eea6e4f614267632fac546e7896c0227b",
      "tree": "df65ff7c1a3b0c4301edffbadd9f23f9023e5159",
      "parents": [
        "92986796d84ef939e304099dece32572a755b280"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Fri Mar 04 17:15:18 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:56 2011 -0400"
      },
      "message": "btrfs: check link counter overflow in link(2)\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "92986796d84ef939e304099dece32572a755b280",
      "tree": "d3356c2aa2bbc64166b09647c8760f7a6941df44",
      "parents": [
        "c2db1073fdf9757e6fd8b4a59d15b6ecc7a2af8a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Fri Mar 04 17:14:37 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:55 2011 -0400"
      },
      "message": "btrfs: don\u0027t mess with i_nlink of unlocked inode in rename()\n\nold_inode is not locked; it\u0027s not safe to play with its link\ncount.  Instead of bumping it and calling btrfs_unlink_inode(),\nadd a variant of the latter that does not do btrfs_drop_nlink()/\nbtrfs_update_inode(), call it instead of btrfs_inc_nlink()/\nbtrfs_unlink_inode() and do btrfs_update_inode() ourselves.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c2db1073fdf9757e6fd8b4a59d15b6ecc7a2af8a",
      "tree": "024264b2d27f75b967efbde01060ebb8626fa39d",
      "parents": [
        "c59021f846881a957ac5afe456d0f59d6a517b61"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Tue Mar 01 06:48:31 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:54 2011 -0400"
      },
      "message": "Btrfs: check return value of btrfs_alloc_path()\n\nAdding the check on the return value of btrfs_alloc_path() to several places.\nAnd, some of callers are modified by this change.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c59021f846881a957ac5afe456d0f59d6a517b61",
      "tree": "63e0552f2850b55dcc6bde31e0610e5f22046675",
      "parents": [
        "9f7c43c96727a53bea45f7f2549d897f0a6117b8"
      ],
      "author": {
        "name": "liubo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Mon Mar 07 02:13:14 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:53 2011 -0400"
      },
      "message": "Btrfs: fix OOPS of empty filesystem after balance\n\nbtrfs will remove unused block groups after balance.\nWhen a empty filesystem is balanced, the block group with tag \"DATA\" may be\ndropped, and after umount and mount again, it will not find \"DATA\" space_info\nand lead to OOPS.\nSo we initial the necessary space_infos(DATA, SYSTEM, METADATA) to avoid OOPS.\n\nReported-by: Daniel J Blueman \u003cdaniel.blueman@gmail.com\u003e\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "9f7c43c96727a53bea45f7f2549d897f0a6117b8",
      "tree": "92037cbb39566fa8ba1b8a7644c8cb445be2c48a",
      "parents": [
        "2d4e6f6ad2b9f84f568d07dae4bdbc7f48a70ad1"
      ],
      "author": {
        "name": "liubo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Mon Mar 07 02:13:33 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:52 2011 -0400"
      },
      "message": "Btrfs: fix memory leak of empty filesystem after balance\n\nAfter Josef\u0027s patch(commit 3c14874acc71180553fb5aba528e3cf57c5b958b),\nbtrfs will exclude super bytes when reading block groups(by marking a extent\nstate UPTODATE).  However, these bytes do not get freed while balance remove\nunused block groups, and we won\u0027t process those removed ones any more, when\nwe do umount and unload the btrfs module,  btrfs hits a memory leak.\n\nThis patch add the missing free operation.\n\nReproduce steps:\n$ mkfs.btrfs disk\n$ mount disk /mnt/btrfs -o loop\n$ btrfs filesystem balance /mnt/btrfs\n$ umount /mnt/btrfs\n$ rmmod btrfs\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "2d4e6f6ad2b9f84f568d07dae4bdbc7f48a70ad1",
      "tree": "eb1490b2b5383fc92eaf276ef31011ec206a2439",
      "parents": [
        "dac97e516c617f9c797f64b0224050b70aea30c7"
      ],
      "author": {
        "name": "liubo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Feb 24 09:38:16 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:51 2011 -0400"
      },
      "message": "Btrfs: fix return value of setflags ioctl\n\nsetflags ioctl should return error when any checks fail.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nReviewed-by: David Sterba \u003cdsterba@suse.cz\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "dac97e516c617f9c797f64b0224050b70aea30c7",
      "tree": "c5c7e7a40e649ee9beb9014b284d3a6e66fb94f2",
      "parents": [
        "c622ae6085d0c6ad834213bbf1477eb311359078"
      ],
      "author": {
        "name": "Yoshinori Sano",
        "email": "yoshinori.sano@gmail.com",
        "time": "Tue Feb 15 12:01:42 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:49 2011 -0400"
      },
      "message": "Btrfs: fix uncheck memory allocations\n\nTo make Btrfs code more robust, several return value checks where memory\nallocation can fail are introduced. I use BUG_ON where I don\u0027t know how\nto handle the error properly, which increases the number of using the\nnotorious BUG_ON, though.\n\nSigned-off-by: Yoshinori Sano \u003cyoshinori.sano@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c622ae6085d0c6ad834213bbf1477eb311359078",
      "tree": "27e12a77c1759d17102c702606d535e78d7c3003",
      "parents": [
        "f7039b1d5c32241f87a513e33120db36bf30264d"
      ],
      "author": {
        "name": "liubo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Sat Mar 26 08:01:12 2011 -0400"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:48 2011 -0400"
      },
      "message": "btrfs: make inode ref log recovery faster\n\nWhen we recover from crash via write-ahead log tree and process\nthe inode refs, for each btrfs_inode_ref item, we will\n1) check if we already have a perfect match in fs/file tree, if\n   we have, then we\u0027re done.\n2) search the corresponding back reference in fs/file tree, and\n   check all the names in this back reference to see if they are\n   also in the log to avoid conflict corners.\n3) recover the logged inode refs to fs/file tree.\n\nIn current btrfs, however,\n- for 2)\u0027s check, once is enough, since the checked back reference\n  will remain unchanged after processing all the inode refs belonged\n  to the key.\n- it has no need to do another 1) between 2) and 3).\n\nI\u0027ve made a small test to show how it improves,\n\n$dd if\u003d/dev/zero of\u003dfoobar bs\u003d4K count\u003d1\n$sync\n$make 100 hard links continuously, like ln foobar link_i\n$fsync foobar\n$echo b \u003e /proc/sysrq-trigger\nafter reboot\n$time mount DEV PATH\n\nwithout patch:\nreal    0m0.285s\nuser    0m0.001s\nsys     0m0.009s\n\nwith patch:\nreal    0m0.123s\nuser    0m0.000s\nsys     0m0.010s\n\nChangelog v1-\u003ev2:\n- fix double free - pointed by David Sterba\nChangelog v2-\u003ev3:\n- adjust free order\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "f7039b1d5c32241f87a513e33120db36bf30264d",
      "tree": "e911bc79c795fceb3e9a618d8f18571c2a776307",
      "parents": [
        "5378e60734f5b7bfe1b43dc191aaf6131c1befe7"
      ],
      "author": {
        "name": "Li Dongyang",
        "email": "lidongyang@novell.com",
        "time": "Thu Mar 24 10:24:28 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:47 2011 -0400"
      },
      "message": "Btrfs: add btrfs_trim_fs() to handle FITRIM\n\nWe take an free extent out from allocator, trim it, then put it back,\nbut before we trim the block group, we should make sure the block group is\ncached, so plus a little change to make cache_block_group() run without a\ntransaction.\n\nSigned-off-by: Li Dongyang \u003clidongyang@novell.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5378e60734f5b7bfe1b43dc191aaf6131c1befe7",
      "tree": "b02c78e744a2a148b60a9c8046abef3f4381f544",
      "parents": [
        "fce3bb9a1bd492793170e117c60d5718b7896af4"
      ],
      "author": {
        "name": "Li Dongyang",
        "email": "lidongyang@novell.com",
        "time": "Thu Mar 24 10:24:27 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:46 2011 -0400"
      },
      "message": "Btrfs: adjust btrfs_discard_extent() return errors and trimmed bytes\n\nCallers of btrfs_discard_extent() should check if we are mounted with -o discard,\nas we want to make fitrim to work even the fs is not mounted with -o discard.\nAlso we should use REQ_DISCARD to map the free extent to get a full mapping,\nlast we only return errors if\n1. the error is not a EOPNOTSUPP\n2. no device supports discard\n\nSigned-off-by: Li Dongyang \u003clidongyang@novell.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "fce3bb9a1bd492793170e117c60d5718b7896af4",
      "tree": "6704e735635531438bdc7dda074ad5e89d89d8eb",
      "parents": [
        "b4d00d569a49fcef02195635dbf8d15904b1fb63"
      ],
      "author": {
        "name": "Li Dongyang",
        "email": "lidongyang@novell.com",
        "time": "Thu Mar 24 10:24:26 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:45 2011 -0400"
      },
      "message": "Btrfs: make btrfs_map_block() return entire free extent for each device of RAID0/1/10/DUP\n\nbtrfs_map_block() will only return a single stripe length, but we want the\nfull extent be mapped to each disk when we are trimming the extent,\nso we add length to btrfs_bio_stripe and fill it if we are mapping for REQ_DISCARD.\n\nSigned-off-by: Li Dongyang \u003clidongyang@novell.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b4d00d569a49fcef02195635dbf8d15904b1fb63",
      "tree": "fc2414cdb122d4c4c5d1c0a37f9217ad3e2d5e3f",
      "parents": [
        "3ab3564f018b9b265d0258e4a231794bacd5ad85"
      ],
      "author": {
        "name": "Li Dongyang",
        "email": "lidongyang@novell.com",
        "time": "Thu Mar 24 10:24:25 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:43 2011 -0400"
      },
      "message": "Btrfs: make update_reserved_bytes() public\n\nMake the function public as we should update the reserved extents calculations\nafter taking out an extent for trimming.\n\nSigned-off-by: Li Dongyang \u003clidongyang@novell.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3ab3564f018b9b265d0258e4a231794bacd5ad85",
      "tree": "53bb771dbb18194a9d13ce2c84c81f2ab834b7e5",
      "parents": [
        "75e7cb7fe0c391561bd3af36515be3f3c64a04c6"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Mar 22 17:20:26 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:42 2011 -0400"
      },
      "message": "btrfs: return EXDEV when linking from different subvolumes\n\nbtrfs_link returns EPERM if a cross-subvolume link is attempted.\n\nHowever, in this case I believe EXDEV to be the more appropriate value.\n\u003eFrom the link(2) man page:\n\nEXDEV  oldpath and newpath are not on the same mounted file system.  (Linux\n       permits a file system to be mounted at multiple points, but link()\n       does not work across different mount points, even if the same file\n       system is mounted on both.)\n\nThis matters because an application may have different behaviors based on\nreturn codes.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "75e7cb7fe0c391561bd3af36515be3f3c64a04c6",
      "tree": "3738481e2db10b2904a4434e4ca42d326da02be7",
      "parents": [
        "32471f6e1983922473573da62cbee58699574aa4"
      ],
      "author": {
        "name": "Liu Bo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Tue Mar 22 10:12:20 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:41 2011 -0400"
      },
      "message": "Btrfs: Per file/directory controls for COW and compression\n\nData compression and data cow are controlled across the entire FS by mount\noptions right now.  ioctls are needed to set this on a per file or per\ndirectory basis.  This has been proposed previously, but VFS developers\nwanted us to use generic ioctls rather than btrfs-specific ones.\n\nAccording to Chris\u0027s comment, there should be just one true compression\nmethod(probably LZO) stored in the super.  However, before this, we would\nwait for that one method is stable enough to be adopted into the super.\nSo I list it as a long term goal, and just store it in ram today.\n\nAfter applying this patch, we can use the generic \"FS_IOC_SETFLAGS\" ioctl to\ncontrol file and directory\u0027s datacow and compression attribute.\n\nNOTE:\n - The compression type is selected by such rules:\n   If we mount btrfs with compress options, ie, zlib/lzo, the type is it.\n   Otherwise, we\u0027ll use the default compress type (zlib today).\n\nv1-\u003ev2:\n- rebase to the latest btrfs.\nv2-\u003ev3:\n- fix a problem, i.e. when a file is set NOCOW via mount option, then this NOCOW\n  will be screwed by inheritance from parent directory.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "fc0e4a314e361af3b13d9320e92c64118f9a3e61",
      "tree": "5bb9f51968375e5a7e19751da028bb5a8b74c624",
      "parents": [
        "97d9a8a420444eb5b5c071d4b3b9c4100a7ae015"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Thu Mar 24 11:41:21 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:39 2011 -0400"
      },
      "message": "btrfs: use GFP_NOFS instead of GFP_KERNEL\n\nIn the filesystem context, we must allocate memory by GFP_NOFS,\nor we may start another filesystem operation and make kswap thread hang up.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "97d9a8a420444eb5b5c071d4b3b9c4100a7ae015",
      "tree": "4ed3e77541ebcc4885c4a10630e2f6bf94d3cef2",
      "parents": [
        "7e75bf3ff3a716d7b21d8fb43bf823115801c1e9"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Thu Mar 24 06:33:21 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:37 2011 -0400"
      },
      "message": "Btrfs: check return value of read_tree_block()\n\nThis patch is checking return value of read_tree_block(),\nand if it is NULL, error processing.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "7e75bf3ff3a716d7b21d8fb43bf823115801c1e9",
      "tree": "98509e562fe9577001f60e1035283c5cb4e076ea",
      "parents": [
        "db5b493ac78e46c7b6bad22cd25d8041564cd8ea"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dave@jikos.cz",
        "time": "Fri Mar 18 22:56:43 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:36 2011 -0400"
      },
      "message": "btrfs: properly access unaligned checksum buffer\n\nOn Fri, Mar 18, 2011 at 11:56:53AM -0400, Chris Mason wrote:\n\u003e Thanks for fielding this one.  Does put_unaligned_le32 optimize away on\n\u003e platforms with efficient access?  It would be great if we didn\u0027t need\n\u003e the #ifdef.\n\n(quicktest: assembly output is same for put_unaligned_le32 and direct\nassignment on my x86_64)\nI was originally following examples in\nDocumentation/unaligned-memory-access.txt. From other code it seems to me that\nthe define CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is intended for larger\nportions of code. Macros/wrappers for {put,get}_unaligned* are chosen via\narch/\u003carch\u003e/include/asm/unaligned.h accordingly, therefore it\u0027s safe to use\nput_unaligned_le32 without the ifdef.\n\ndave\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "db5b493ac78e46c7b6bad22cd25d8041564cd8ea",
      "tree": "18f484c3d8194b80165e5400831931a3ac5c58ba",
      "parents": [
        "1abe9b8a138c9988ba8f7bfded6453649a31541f"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Wed Mar 23 08:14:16 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:35 2011 -0400"
      },
      "message": "Btrfs: cleanup some BUG_ON()\n\nThis patch changes some BUG_ON() to the error return.\n(but, most callers still use BUG_ON())\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "1abe9b8a138c9988ba8f7bfded6453649a31541f",
      "tree": "9fe0c181e78b075b65f6b1802f0a5092e7afbc6a",
      "parents": [
        "240f62c8756df285da11469259b3900f32883168"
      ],
      "author": {
        "name": "liubo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Thu Mar 24 11:18:59 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:33 2011 -0400"
      },
      "message": "Btrfs: add initial tracepoint support for btrfs\n\nTracepoints can provide insight into why btrfs hits bugs and be greatly\nhelpful for debugging, e.g\n              dd-7822  [000]  2121.641088: btrfs_inode_request: root \u003d 5(FS_TREE), gen \u003d 4, ino \u003d 256, blocks \u003d 8, disk_i_size \u003d 0, last_trans \u003d 8, logged_trans \u003d 0\n              dd-7822  [000]  2121.641100: btrfs_inode_new: root \u003d 5(FS_TREE), gen \u003d 8, ino \u003d 257, blocks \u003d 0, disk_i_size \u003d 0, last_trans \u003d 0, logged_trans \u003d 0\n btrfs-transacti-7804  [001]  2146.935420: btrfs_cow_block: root \u003d 2(EXTENT_TREE), refs \u003d 2, orig_buf \u003d 29368320 (orig_level \u003d 0), cow_buf \u003d 29388800 (cow_level \u003d 0)\n btrfs-transacti-7804  [001]  2146.935473: btrfs_cow_block: root \u003d 1(ROOT_TREE), refs \u003d 2, orig_buf \u003d 29364224 (orig_level \u003d 0), cow_buf \u003d 29392896 (cow_level \u003d 0)\n btrfs-transacti-7804  [001]  2146.972221: btrfs_transaction_commit: root \u003d 1(ROOT_TREE), gen \u003d 8\n   flush-btrfs-2-7821  [001]  2155.824210: btrfs_chunk_alloc: root \u003d 3(CHUNK_TREE), offset \u003d 1103101952, size \u003d 1073741824, num_stripes \u003d 1, sub_stripes \u003d 0, type \u003d DATA\n   flush-btrfs-2-7821  [001]  2155.824241: btrfs_cow_block: root \u003d 2(EXTENT_TREE), refs \u003d 2, orig_buf \u003d 29388800 (orig_level \u003d 0), cow_buf \u003d 29396992 (cow_level \u003d 0)\n   flush-btrfs-2-7821  [001]  2155.824255: btrfs_cow_block: root \u003d 4(DEV_TREE), refs \u003d 2, orig_buf \u003d 29372416 (orig_level \u003d 0), cow_buf \u003d 29401088 (cow_level \u003d 0)\n   flush-btrfs-2-7821  [000]  2155.824329: btrfs_cow_block: root \u003d 3(CHUNK_TREE), refs \u003d 2, orig_buf \u003d 20971520 (orig_level \u003d 0), cow_buf \u003d 20975616 (cow_level \u003d 0)\n btrfs-endio-wri-7800  [001]  2155.898019: btrfs_cow_block: root \u003d 5(FS_TREE), refs \u003d 2, orig_buf \u003d 29384704 (orig_level \u003d 0), cow_buf \u003d 29405184 (cow_level \u003d 0)\n btrfs-endio-wri-7800  [001]  2155.898043: btrfs_cow_block: root \u003d 7(CSUM_TREE), refs \u003d 2, orig_buf \u003d 29376512 (orig_level \u003d 0), cow_buf \u003d 29409280 (cow_level \u003d 0)\n\nHere is what I have added:\n\n1) ordere_extent:\n        btrfs_ordered_extent_add\n        btrfs_ordered_extent_remove\n        btrfs_ordered_extent_start\n        btrfs_ordered_extent_put\n\nThese provide critical information to understand how ordered_extents are\nupdated.\n\n2) extent_map:\n        btrfs_get_extent\n\nextent_map is used in both read and write cases, and it is useful for tracking\nhow btrfs specific IO is running.\n\n3) writepage:\n        __extent_writepage\n        btrfs_writepage_end_io_hook\n\nPages are cirtical resourses and produce a lot of corner cases during writeback,\nso it is valuable to know how page is written to disk.\n\n4) inode:\n        btrfs_inode_new\n        btrfs_inode_request\n        btrfs_inode_evict\n\nThese can show where and when a inode is created, when a inode is evicted.\n\n5) sync:\n        btrfs_sync_file\n        btrfs_sync_fs\n\nThese show sync arguments.\n\n6) transaction:\n        btrfs_transaction_commit\n\nIn transaction based filesystem, it will be useful to know the generation and\nwho does commit.\n\n7) back reference and cow:\n\tbtrfs_delayed_tree_ref\n\tbtrfs_delayed_data_ref\n\tbtrfs_delayed_ref_head\n\tbtrfs_cow_block\n\nBtrfs natively supports back references, these tracepoints are helpful on\nunderstanding btrfs\u0027s COW mechanism.\n\n8) chunk:\n\tbtrfs_chunk_alloc\n\tbtrfs_chunk_free\n\nChunk is a link between physical offset and logical offset, and stands for space\ninfomation in btrfs, and these are helpful on tracing space things.\n\n9) reserved_extent:\n\tbtrfs_reserved_extent_alloc\n\tbtrfs_reserved_extent_free\n\nThese can show how btrfs uses its space.\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "240f62c8756df285da11469259b3900f32883168",
      "tree": "eb973ef95389a9511c137c7c26248dfd04a2495f",
      "parents": [
        "c0da7aa1a2d8fcafe271a7077599253c8ed94bb2"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Wed Mar 23 14:54:42 2011 -0400"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:22 2011 -0400"
      },
      "message": "Btrfs: use RCU instead of a spinlock to protect the root node\n\nThe pointer to the extent buffer for the root of each tree\nis protected by a spinlock so that we can safely read the pointer\nand take a reference on the extent buffer.\n\nBut now that the extent buffers are freed via RCU, we can safely\nuse rcu_read_lock instead.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b5695d04634fa4ccca7dcbc05bb4a66522f02e0b",
      "tree": "568155380ea1b1fa3b9e68f68dd74cdd9d651229",
      "parents": [
        "950983fc04e02232e0d25717903461578a755ebb"
      ],
      "author": {
        "name": "Roberto Sassu",
        "email": "roberto.sassu@polito.it",
        "time": "Mon Mar 21 16:00:55 2011 +0100"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Mar 28 01:49:43 2011 -0500"
      },
      "message": "eCryptfs: write lock requested keys\n\nA requested key is write locked in order to prevent modifications on the\nauthentication token while it is being used.\n\nSigned-off-by: Roberto Sassu \u003croberto.sassu@polito.it\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "950983fc04e02232e0d25717903461578a755ebb",
      "tree": "e78bd71ecfd12b87237db398116ac2c19082505b",
      "parents": [
        "0e1fc5ef470cc1d157005c437a434868d59fead4"
      ],
      "author": {
        "name": "Roberto Sassu",
        "email": "roberto.sassu@polito.it",
        "time": "Mon Mar 21 16:00:54 2011 +0100"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Mar 28 01:49:42 2011 -0500"
      },
      "message": "eCryptfs: move ecryptfs_find_auth_tok_for_sig() call before mutex_lock\n\nThe ecryptfs_find_auth_tok_for_sig() call is moved before the\nmutex_lock(s-\u003etfm_mutex) instruction in order to avoid possible deadlocks\nthat may occur by holding the lock on the two semaphores \u0027key-\u003esem\u0027 and\n\u0027s-\u003etfm_mutex\u0027 in reverse order.\n\nSigned-off-by: Roberto Sassu \u003croberto.sassu@polito.it\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "0e1fc5ef470cc1d157005c437a434868d59fead4",
      "tree": "a15889a237ad7db00ef695d4338286e663127ee0",
      "parents": [
        "7762e230fd31fcc1abc03ba32ee957fadc8eafb4"
      ],
      "author": {
        "name": "Roberto Sassu",
        "email": "roberto.sassu@polito.it",
        "time": "Mon Mar 21 16:00:53 2011 +0100"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Mar 28 01:49:41 2011 -0500"
      },
      "message": "eCryptfs: verify authentication tokens before their use\n\nAuthentication tokens content may change if another requestor calls the\nupdate() method of the corresponding key. The new function\necryptfs_verify_auth_tok_from_key() retrieves the authentication token from\nthe provided key and verifies if it is still valid before being used to\nencrypt or decrypt an eCryptfs file.\n\nSigned-off-by: Roberto Sassu \u003croberto.sassu@polito.it\u003e\n[tyhicks: Minor formatting changes]\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "7762e230fd31fcc1abc03ba32ee957fadc8eafb4",
      "tree": "d49635aa3406a0e3590e1a0886c4aba9e5ed0145",
      "parents": [
        "cf35ca69131d5fc8febb74629d173e0731bf49c0"
      ],
      "author": {
        "name": "Roberto Sassu",
        "email": "roberto.sassu@polito.it",
        "time": "Mon Mar 21 16:00:52 2011 +0100"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Mar 28 01:49:40 2011 -0500"
      },
      "message": "eCryptfs: modified size of keysig in the ecryptfs_key_sig structure\n\nThe size of the \u0027keysig\u0027 array is incremented of one byte in order to make\nroom for the NULL character. The \u0027keysig\u0027 variable is used, in the function\necryptfs_generate_key_packet_set(), to find an authentication token with\nthe given signature and is printed a debug message if it cannot be\nretrieved.\n\nSigned-off-by: Roberto Sassu \u003croberto.sassu@polito.it\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "cf35ca69131d5fc8febb74629d173e0731bf49c0",
      "tree": "894ff15a7806dbe4f7f899b0c92a1ffadacbd719",
      "parents": [
        "1821df040ac3cd6a57518739f345da6d50ea9d3f"
      ],
      "author": {
        "name": "Roberto Sassu",
        "email": "roberto.sassu@polito.it",
        "time": "Mon Mar 21 16:00:51 2011 +0100"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Mar 28 01:49:39 2011 -0500"
      },
      "message": "eCryptfs: removed num_global_auth_toks from ecryptfs_mount_crypt_stat\n\nThis patch removes the \u0027num_global_auth_toks\u0027 field of the\necryptfs_mount_crypt_stat structure, used to count the number of items in\nthe \u0027global_auth_tok_list\u0027 list. This variable is not needed because there\nare no checks based upon it.\n\nSigned-off-by: Roberto Sassu \u003croberto.sassu@polito.it\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "1821df040ac3cd6a57518739f345da6d50ea9d3f",
      "tree": "ca353d7cdde5c3bcaa5d9657d8f20d124dbdd3cd",
      "parents": [
        "50f198ae16ac66508d4b8d5a40967a8507ad19ee"
      ],
      "author": {
        "name": "Roberto Sassu",
        "email": "roberto.sassu@polito.it",
        "time": "Thu Mar 17 12:48:50 2011 +0100"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Mar 28 01:49:15 2011 -0500"
      },
      "message": "eCryptfs: ecryptfs_keyring_auth_tok_for_sig() bug fix\n\nThe pointer \u0027(*auth_tok_key)\u0027 is set to NULL in case request_key()\nfails, in order to prevent its use by functions calling\necryptfs_keyring_auth_tok_for_sig().\n\nSigned-off-by: Roberto Sassu \u003croberto.sassu@polito.it\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "50f198ae16ac66508d4b8d5a40967a8507ad19ee",
      "tree": "cfd582a98eca9b93177fe6e417b82e7c4e345f45",
      "parents": [
        "57db4e8d73ef2b5e94a3f412108dff2576670a8a"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Wed Mar 09 11:49:13 2011 -0600"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Mar 28 01:47:46 2011 -0500"
      },
      "message": "eCryptfs: Unlock page in write_begin error path\n\nUnlock the page in error path of ecryptfs_write_begin(). This may\nhappen, for example, if decryption fails while bring the page\nup-to-date.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "57db4e8d73ef2b5e94a3f412108dff2576670a8a",
      "tree": "ab6eae8e879cfa41cdb3309d8e6a52de14746ca4",
      "parents": [
        "fed8859b3ab94274c986cbdf7d27130e0545f02c"
      ],
      "author": {
        "name": "Thieu Le",
        "email": "thieule@chromium.org",
        "time": "Tue Mar 08 16:26:03 2011 -0800"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Mar 28 01:47:45 2011 -0500"
      },
      "message": "ecryptfs: modify write path to encrypt page in writepage\n\nChange the write path to encrypt the data only when the page is written to\ndisk in ecryptfs_writepage. Previously, ecryptfs encrypts the page in\necryptfs_write_end which means that if there are multiple write requests to\nthe same page, ecryptfs ends up re-encrypting that page over and over again.\nThis patch minimizes the number of encryptions needed.\n\nSigned-off-by: Thieu Le \u003cthieule@chromium.org\u003e\n[tyhicks: Changed NULL .drop_inode sop pointer to generic_drop_inode]\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "fed8859b3ab94274c986cbdf7d27130e0545f02c",
      "tree": "01d36d5f87469aa25a7431e0b21ff86b7e524052",
      "parents": [
        "bd4f0fe8bb7c73c738e1e11bc90d6e2cf9c6e20e"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Wed Feb 23 00:54:20 2011 -0600"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Mar 28 01:47:44 2011 -0500"
      },
      "message": "eCryptfs: Remove ECRYPTFS_NEW_FILE crypt stat flag\n\nNow that grow_file() is not called in the ecryptfs_create() path, the\nECRYPTFS_NEW_FILE flag is no longer needed. It helped\necryptfs_readpage() know not to decrypt zeroes that were read from the\nlower file in the grow_file() path.\n\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "bd4f0fe8bb7c73c738e1e11bc90d6e2cf9c6e20e",
      "tree": "caa1915ec444bbdb52a1646274d73e733979bb44",
      "parents": [
        "40471856f2e38e9bfa8d605295e8234421110dd6"
      ],
      "author": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Wed Feb 23 00:14:19 2011 -0600"
      },
      "committer": {
        "name": "Tyler Hicks",
        "email": "tyhicks@linux.vnet.ibm.com",
        "time": "Mon Mar 28 01:47:43 2011 -0500"
      },
      "message": "eCryptfs: Remove unnecessary grow_file() function\n\nWhen creating a new eCryptfs file, the crypto metadata is written out\nand then the lower file was being \"grown\" with 4 kB of encrypted zeroes.\nI suspect that growing the encrypted file was to prevent an information\nleak that the unencrypted file was empty. However, the unencrypted file\nsize is stored, in plaintext, in the metadata so growing the file is\nunnecessary.\n\nSigned-off-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "a17d47300b4042a3893217c0c3f2d806fe1faa3b",
      "tree": "91964353354d358cbafc350421e2bddb9455c73c",
      "parents": [
        "04a6553f0766df3f56830c89b7da2f618b7ef0b0",
        "7bf7e370d5919112c223a269462cd0b546903829"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 27 19:40:56 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 27 19:40:56 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus-1\u0027 of git://git.infradead.org/mtd-2.6\n\n* \u0027for-linus-1\u0027 of git://git.infradead.org/mtd-2.6: (49 commits)\n  mtd: mtdswap: fix compilation warning\n  mtdswap: kill strict error handling option\n  mtd: nand: enable software BCH ECC in nand simulator\n  mtd: nand: add software BCH ECC support\n  mtd: fix printf format warnings, mostly lack of %zd for size_t, in mtdswap\n  mtd: sm_rtl: check kmalloc return value\n  mtd: cfi: add support for AMIC flashes (e.g. A29L160AT)\n  lib: add shared BCH ECC library\n  mtd: mxc_nand: fix OOB corruption when page size \u003e 2KiB\n  mtd: DaVinci: Removed header file that is not required\n  mtd: pxa3xx_nand: clean the keep configure code\n  mtd: pxa3xx_nand: mtd scan id process could be defined by driver itself\n  mtd: pxa3xx_nand: unify prepare command\n  mtd: pxa3xx_nand: discard wait_for_event,write_cmd,__readid function\n  mtd: pxa3xx_nand: rework irq logic\n  mtd: pxa3xx_nand: make scan procedure more clear\n  mtd: speedtest: fix integer overflow\n  mtd: mxc_nand: fix read past buffer end\n  mtd: omap3: nand: report corrected ecc errors\n  jffs2: remove a trailing white space in commentaries\n  ...\n"
    },
    {
      "commit": "b6d0ad686da95fa85ce0c583ec35017bf1583563",
      "tree": "357c740a9d8bb37397ead382dc3dd302f91d0e28",
      "parents": [
        "6213cfe82461e39219a3b06ecf1d0679b4c0657f"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Sat Mar 26 13:27:47 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 27 19:30:19 2011 -0700"
      },
      "message": "fs: fix inode.c kernel-doc warning\n\nFix inode.c kernel-doc fatal error: 2 comment sections have the same name:\n\n  Error(fs/inode.c:1171): duplicate section name \u0027Note\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "76597cd31470fa130784c78fadb4dab2e624a723",
      "tree": "94387f243f4b8211352a95fda5b23bd12bbf8873",
      "parents": [
        "16c29dafcc86024048f1dbb8349d31cb22c7c55a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 27 19:09:29 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 27 19:09:29 2011 -0700"
      },
      "message": "proc: fix oops on invalid /proc/\u003cpid\u003e/maps access\n\nWhen m_start returns an error, the seq_file logic will still call m_stop\nwith that error entry, so we\u0027d better make sure that we check it before\nusing it as a vma.\n\nIntroduced by commit ec6fd8a4355c (\"report errors in /proc/*/*map*\nsanely\"), which replaced NULL with various ERR_PTR() cases.\n\n(On ia64, you happen to get a unaligned fault instead of a page fault,\nsince the address used is generally some random error code like -EPERM)\n\nReported-by: Anca Emanuel \u003canca.emanuel@gmail.com\u003e\nReported-by: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Américo Wang \u003cxiyou.wangcong@gmail.com\u003e\nCc: Stephen Wilson \u003cwilsons@start.ca\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a0e7e3cf7932d6c77de0dc79a40dbaeb8060b544",
      "tree": "fcc8ab44418afe356b683674fcd2c1589b7c6efa",
      "parents": [
        "4d65c520fb4abed970069d18c119cfe85624f46d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat Mar 26 02:24:35 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Mar 27 17:48:17 2011 +0200"
      },
      "message": "NFS: Don\u0027t leak RPC clients in NFSv4 secinfo negotiation\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "4d65c520fb4abed970069d18c119cfe85624f46d",
      "tree": "74671eb263380317f1e4a958a6a7f73749e98eec",
      "parents": [
        "16c29dafcc86024048f1dbb8349d31cb22c7c55a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Mar 25 14:15:11 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sun Mar 27 17:48:07 2011 +0200"
      },
      "message": "NFS: Fix a hang in the writeback path\n\nNow that the inode scalability patches have been merged, it is no longer\nsafe to call igrab() under the inode-\u003ei_lock.\nNow that we no longer call nfs_clear_request() until the nfs_page is\nbeing freed, we know that we are always holding a reference to the\nnfs_open_context, which again holds a reference to the path, and so\nthe inode cannot be freed until the last nfs_page has been removed\nfrom the radix tree and freed.\n\nWe can therefore skip the igrab()/iput() altogether.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c03e3126e4f9535f4983d727f036440255c43c82",
      "tree": "eb77abe288341b582ed255d0dda1940c7d1ea00b",
      "parents": [
        "9263412501022fecef844907129ee2513b5a89de"
      ],
      "author": {
        "name": "Rakib Mullick",
        "email": "rakib.mullick@gmail.com",
        "time": "Fri Mar 25 01:57:01 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 17:45:16 2011 -0700"
      },
      "message": "codafs: fix build break when CONFIG_PROC_SYSCTL\u003dn\n\nCommit 0bc825d240ab (\"codafs: fix compile warning when CONFIG_SYSCTL\u003dn\")\nintroduces build breakage, when CONFIG_PROC_SYSCTL\u003dn and\nCONFIG_CODA_FS\u003dy:\n\n  fs/built-in.o: In function `init_coda\u0027:\n  psdev.c:(.init.text+0xc02): undefined reference to `coda_sysctl_init\u0027\n  psdev.c:(.init.text+0xc7c): undefined reference to `coda_sysctl_clean\u0027\n  fs/built-in.o: In function `exit_coda\u0027:\n  psdev.c:(.exit.text+0xa9): undefined reference to `coda_sysctl_clean\u0027\n  make: *** [.tmp_vmlinux1] Error 1\n\nSigned-off-by: Rakib Mullick \u003crakib.mullick@gmail.com\u003e\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c0da7aa1a2d8fcafe271a7077599253c8ed94bb2",
      "tree": "232a22b93eb56090c5a0ecdba377ffb761d5549c",
      "parents": [
        "98bc3149fad639c8f50c7110b961a2a2fe085eed"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Mar 22 11:05:07 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Mar 25 19:08:19 2011 -0400"
      },
      "message": "Btrfs: mark the bio with an error if we have a failure in dio\n\nI noticed that dio_end_io calls the appropriate endio function with an error,\nbut the endio functions don\u0027t actually do anything with that error, they assume\nthat if there was an error then the bio will not be uptodate.  So if we had\nchecksum failures we would never pass back EIO.  So if there is an error in our\nendio functions make sure to clear the uptodate flag on the bio.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "98bc3149fad639c8f50c7110b961a2a2fe085eed",
      "tree": "76b102e79a9adde87c4e93f475db643567c393da",
      "parents": [
        "4e69b598f6cfb0940b75abf7e179d6020e94ad1e"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Mar 22 11:00:46 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Mar 25 19:08:18 2011 -0400"
      },
      "message": "Btrfs: don\u0027t allocate dip-\u003ecsums when doing writes\n\nWhen doing direct writes we store the checksums in the ordered sum stuff in the\nordered extent for writing them when the write completes, so we don\u0027t even use\nthe dip-\u003ecsums array.  So if we\u0027re writing, don\u0027t bother allocating dip-\u003ecsums\nsince we won\u0027t use it anyway.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "4e69b598f6cfb0940b75abf7e179d6020e94ad1e",
      "tree": "ae14c7078bd7540200ffe32726e33dd8ff64f5d5",
      "parents": [
        "32cb0840ce8e13901fe71a9a8e834a531802ffc4"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Mar 21 10:11:24 2011 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Fri Mar 25 19:08:08 2011 -0400"
      },
      "message": "Btrfs: cleanup how we setup free space clusters\n\nThis patch makes the free space cluster refilling code a little easier to\nunderstand, and fixes some things with the bitmap part of it.  Currently we\neither want to refill a cluster with\n\n1) All normal extent entries (those without bitmaps)\n2) A bitmap entry with enough space\n\nThe current code has this ugly jump around logic that will first try and fill up\nthe cluster with extent entries and then if it can\u0027t do that it will try and\nfind a bitmap to use.  So instead split this out into two functions, one that\ntries to find only normal entries, and one that tries to find bitmaps.\n\nThis also fixes a suboptimal thing we would do with bitmaps.  If we used a\nbitmap we would just tell the cluster that we were pointing at a bitmap and it\nwould do the tree search in the block group for that entry every time we tried\nto make an allocation.  Instead of doing that now we just add it to the clusters\ngroup.\n\nI tested this with my ENOSPC tests and xfstests and it survived.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "0e6e847ffe37436e331c132639f9f872febce82e",
      "tree": "eb440ef910af695eafef787e12badc64fac0f8fe",
      "parents": [
        "704b2907c2d47ceb187c0e25a6bbc2174b198f2f"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Sat Mar 26 09:16:45 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Sat Mar 26 09:16:45 2011 +1100"
      },
      "message": "xfs: stop using the page cache to back the buffer cache\n\nNow that the buffer cache has it\u0027s own LRU, we do not need to use\nthe page cache to provide persistent caching and reclaim\ninfrastructure. Convert the buffer cache to use alloc_pages()\ninstead of the page cache. This will remove all the overhead of page\ncache management from setup and teardown of the buffers, as well as\nneeding to mark pages accessed as we find buffers in the buffer\ncache.\n\nBy avoiding the page cache, we also remove the need to keep state in\nthe page_private(page) field for persistant storage across buffer\nfree/buffer rebuild and so all that code can be removed. This also\nfixes the long-standing problem of not having enough bits in the\npage_private field to track all the state needed for a 512\nsector/64k page setup.\n\nIt also removes the need for page locking during reads as the pages\nare unique to the buffer and nobody else will be attempting to\naccess them.\n\nFinally, it removes the buftarg address space lock as a point of\nglobal contention on workloads that allocate and free buffers\nquickly such as when creating or removing large numbers of inodes in\nparallel. This remove the 16TB limit on filesystem size on 32 bit\nmachines as the page index (32 bit) is no longer used for lookups\nof metadata buffers - the buffer cache is now solely indexed by disk\naddress which is stored in a 64 bit field in the buffer.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "704b2907c2d47ceb187c0e25a6bbc2174b198f2f",
      "tree": "0ca2703390a5ba43998eca28d85d77ee49a790f6",
      "parents": [
        "7401aafd5019d32a888e5f27332cf580945574bf"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Sat Mar 26 09:14:57 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Sat Mar 26 09:14:57 2011 +1100"
      },
      "message": "xfs: register the inode cache shrinker before quotachecks\n\nDuring mount, we can do a quotacheck that involves a bulkstat pass\non all inodes. If there are more inodes in the filesystem than can\nbe held in memory, we require the inode cache shrinker to run to\nensure that we don\u0027t run out of memory.\n\nUnfortunately, the inode cache shrinker is not registered until we\nget to the end of the superblock setup process, which is after a\nquotacheck is run if it is needed. Hence we need to register the\ninode cache shrinker earlier in the mount process so that we don\u0027t\nOOM during mount. This requires that we also initialise the syncd\nwork before we register the shrinker, so we nee dto juggle that\naround as well.\n\nWhile there, make sure that we have set up the block sizes in the\nVFS superblock correctly before the quotacheck is run so that any\ninodes that are cached as a result of the quotacheck have their\nblock size fields set up correctly.\n\nCc: stable@kernel.org\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "7401aafd5019d32a888e5f27332cf580945574bf",
      "tree": "6a09fb6c38e6e96e239873bdefd24a890da09c9d",
      "parents": [
        "1bfd8d04190c615bb8d1d98188dead0c09702208"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Sat Mar 26 09:14:44 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Sat Mar 26 09:14:44 2011 +1100"
      },
      "message": "xfs: xfs_trans_read_buf() should return an error on failure\n\nWhen inside a transaction and we fail to read a buffer,\nxfs_trans_read_buf returns a null buffer pointer and no error.\nxfs_do_da_buf() checks the error return, but not the buffer, and as\na result this read failure condition causes a panic when it attempts\nto dereference the non-existant buffer.\n\nMake xfs_trans_read_buf() return the same error for this situation\nregardless of whether it is in a transaction or not. This means\nevery caller does not need to check both the error return and the\nbuffer before proceeding to use the buffer.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "1bfd8d04190c615bb8d1d98188dead0c09702208",
      "tree": "f2eb5d4e9b730b7ecef25bcc1cc26caa2b306339",
      "parents": [
        "a19fb380961f209a3a406443686647bcd01bb9a6"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Sat Mar 26 09:13:55 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Sat Mar 26 09:13:55 2011 +1100"
      },
      "message": "xfs: introduce inode cluster buffer trylocks for xfs_iflush\n\nThere is an ABBA deadlock between synchronous inode flushing in\nxfs_reclaim_inode and xfs_icluster_free. xfs_icluster_free locks the\nbuffer, then takes inode ilocks, whilst synchronous reclaim takes\nthe ilock followed by the buffer lock in xfs_iflush().\n\nTo avoid this deadlock, separate the inode cluster buffer locking\nsemantics from the synchronous inode flush semantics, allowing\ncallers to attempt to lock the buffer but still issue synchronous IO\nif it can get the buffer. This requires xfs_iflush() calls that\ncurrently use non-blocking semantics to pass SYNC_TRYLOCK rather\nthan 0 as the flags parameter.\n\nThis allows xfs_reclaim_inode to avoid the deadlock on the buffer\nlock and detect the failure so that it can drop the inode ilock and\nrestart the reclaim attempt on the inode. This allows\nxfs_ifree_cluster to obtain the inode lock, mark the inode stale and\nrelease it and hence defuse the deadlock situation. It also has the\npleasant side effect of avoiding IO in xfs_reclaim_inode when it\ntries to next reclaim the inode as it is now marked stale.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "a19fb380961f209a3a406443686647bcd01bb9a6",
      "tree": "304baceb45f2b40991900a546c39663bb37814ea",
      "parents": [
        "8287889742940cf3c416e755322090d09f2829be"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Sat Mar 26 09:13:42 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Sat Mar 26 09:13:42 2011 +1100"
      },
      "message": "vmap: flush vmap aliases when mapping fails\n\nOn 32 bit systems, vmalloc space is limited and XFS can chew through\nit quickly as the vmalloc space is lazily freed. This can result in\nfailure to map buffers, even when there is apparently large amounts\nof vmalloc space available. Hence, if we fail to map a buffer, purge\nthe aliases that have not yet been freed to hopefuly free up enough\nvmalloc space to allow a retry to succeed.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "8287889742940cf3c416e755322090d09f2829be",
      "tree": "50d67d48b4375a80b5ed04cc6d4cc88912c270f6",
      "parents": [
        "0c9ba97318fc9a905bcc1419b6966de061203a70"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Sat Mar 26 09:13:08 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Sat Mar 26 09:13:08 2011 +1100"
      },
      "message": "xfs: preallocation transactions do not need to be synchronous\n\nPreallocation and hole punch transactions are currently synchronous\nand this is causing performance problems in some cases. The\ntransactions don\u0027t need to be synchronous as we don\u0027t need to\nguarantee the preallocation is persistent on disk until a\nfdatasync, fsync, sync operation occurs. If the file is opened\nO_SYNC or O_DATASYNC, only then should the transaction be issued\nsynchronously.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "ef550f6f4f6c9345a27ec85d98f4f7de1adce79c",
      "tree": "dafd71f3e7fe46ed685b5ab3fd62c2bb7d3cb679",
      "parents": [
        "59c2be1e4d42c0d4949cecdeef3f37070a1fbc13"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Mar 25 13:27:48 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Mar 25 13:27:48 2011 -0700"
      },
      "message": "ceph: flush msgr_wq during mds_client shutdown\n\nThe release method for mds connections uses a backpointer to the\nmds_client, so we need to flush the workqueue of any pending work (and\nceph_connection references) prior to freeing the mds_client.  This fixes\nan oops easily triggered under UML by\n\n while true ; do mount ... ; umount ... ; done\n\nAlso fix an outdated comment: the flush in ceph_destroy_client only flushes\nOSD connections out.  This bug is basically an artifact of the ceph -\u003e\nceph+libceph conversion.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "40471856f2e38e9bfa8d605295e8234421110dd6",
      "tree": "9757e42e40bdbfcff7c52ab133e32b5c2203153b",
      "parents": [
        "ae005cbed12d0b340b04b59d6f5c56e710b3895d",
        "0acd2201920d0968919f4f5797d63f7b6f2b19d4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 10:03:28 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 10:03:28 2011 -0700"
      },
      "message": "Merge branch \u0027nfs-for-2.6.39\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027nfs-for-2.6.39\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (28 commits)\n  Cleanup XDR parsing for LAYOUTGET, GETDEVICEINFO\n  NFSv4.1 convert layoutcommit sync to boolean\n  NFSv4.1 pnfs_layoutcommit_inode fixes\n  NFS: Determine initial mount security\n  NFS: use secinfo when crossing mountpoints\n  NFS: Add secinfo procedure\n  NFS: lookup supports alternate client\n  NFS: convert call_sync() to a function\n  NFSv4.1 remove temp code that prevented ds commits\n  NFSv4.1: layoutcommit\n  NFSv4.1: filelayout driver specific code for COMMIT\n  NFSv4.1: remove GETATTR from ds commits\n  NFSv4.1: add generic layer hooks for pnfs COMMIT\n  NFSv4.1: alloc and free commit_buckets\n  NFSv4.1: shift filelayout_free_lseg\n  NFSv4.1: pull out code from nfs_commit_release\n  NFSv4.1: pull error handling out of nfs_commit_list\n  NFSv4.1: add callback to nfs4_commit_done\n  NFSv4.1: rearrange nfs_commit_rpcsetup\n  NFSv4.1: don\u0027t send COMMIT to ds for data sync writes\n  ...\n"
    },
    {
      "commit": "ae005cbed12d0b340b04b59d6f5c56e710b3895d",
      "tree": "d464865bcc97bea05eab4eba0d10bcad4ec89b93",
      "parents": [
        "3961cdf85b749f6bab50ad31ee97e9277e7a3b70",
        "0ba0851714beebb800992e5105a79dc3a4c504b0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 09:57:40 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 09:57:41 2011 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (43 commits)\n  ext4: fix a BUG in mb_mark_used during trim.\n  ext4: unused variables cleanup in fs/ext4/extents.c\n  ext4: remove redundant set_buffer_mapped() in ext4_da_get_block_prep()\n  ext4: add more tracepoints and use dev_t in the trace buffer\n  ext4: don\u0027t kfree uninitialized s_group_info members\n  ext4: add missing space in printk\u0027s in __ext4_grp_locked_error()\n  ext4: add FITRIM to compat_ioctl.\n  ext4: handle errors in ext4_clear_blocks()\n  ext4: unify the ext4_handle_release_buffer() api\n  ext4: handle errors in ext4_rename\n  jbd2: add COW fields to struct jbd2_journal_handle\n  jbd2: add the b_cow_tid field to journal_head struct\n  ext4: Initialize fsync transaction ids in ext4_new_inode()\n  ext4: Use single thread to perform DIO unwritten convertion\n  ext4: optimize ext4_bio_write_page() when no extent conversion is needed\n  ext4: skip orphan cleanup if fs has unknown ROCOMPAT features\n  ext4: use the nblocks arg to ext4_truncate_restart_trans()\n  ext4: fix missing iput of root inode for some mount error paths\n  ext4: make FIEMAP and delayed allocation play well together\n  ext4: suppress verbose debugging information if malloc-debug is off\n  ...\n\nFi up conflicts in fs/ext4/super.c due to workqueue changes\n"
    },
    {
      "commit": "7bf7e370d5919112c223a269462cd0b546903829",
      "tree": "03ccc715239df14ae168277dbccc9d9cf4d8a2c8",
      "parents": [
        "68b1a1e786f29c900fa1c516a402e24f0ece622a",
        "d39dd11c3e6a7af5c20bfac40594db36cf270f42"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Mar 25 17:41:20 2011 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Mar 25 17:41:20 2011 +0200"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-linus-1\n\n* \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6: (9356 commits)\n  [media] rc: update for bitop name changes\n  fs: simplify iget \u0026 friends\n  fs: pull inode-\u003ei_lock up out of writeback_single_inode\n  fs: rename inode_lock to inode_hash_lock\n  fs: move i_wb_list out from under inode_lock\n  fs: move i_sb_list out from under inode_lock\n  fs: remove inode_lock from iput_final and prune_icache\n  fs: Lock the inode LRU list separately\n  fs: factor inode disposal\n  fs: protect inode-\u003ei_state with inode-\u003ei_lock\n  lib, arch: add filter argument to show_mem and fix private implementations\n  SLUB: Write to per cpu data when allocating it\n  slub: Fix debugobjects with lockless fastpath\n  autofs4: Do not potentially dereference NULL pointer returned by fget() in autofs_dev_ioctl_setpipefd()\n  autofs4 - remove autofs4_lock\n  autofs4 - fix d_manage() return on rcu-walk\n  autofs4 - fix autofs4_expire_indirect() traversal\n  autofs4 - fix dentry leak in autofs4_expire_direct()\n  autofs4 - reinstate last used update on access\n  vfs - check non-mountpoint dentry might block in __follow_mount_rcu()\n  ...\n\nNOTE!\n\nThis merge commit was created to fix compilation error. The block\ntree was merged upstream and removed the \u0027elv_queue_empty()\u0027\nfunction which the new \u0027mtdswap\u0027 driver is using. So a simple\nmerge of the mtd tree with upstream does not compile. And the\nmtd tree has already be published, so re-basing it is not an option.\n\nTo fix this unfortunate situation, I had to merge upstream into the\nmtd-2.6.git tree without committing, put the fixup patch on top of\nthis, and then commit this. The result is that we do not have commits\nwhich do not compile.\n\nIn other words, this merge commit \"merges\" 3 things: the MTD tree, the\nupstream tree, and the fixup patch.\n"
    },
    {
      "commit": "d39dd11c3e6a7af5c20bfac40594db36cf270f42",
      "tree": "6384e07fa2f347b286cde9754c4507b5a738ab47",
      "parents": [
        "30f5b28e7f937608e0407edaa459cc8161de81d9",
        "0b2d0724e26a335cd326eb7ad552c109116a8795"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 19:01:30 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 19:01:30 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  fs: simplify iget \u0026 friends\n  fs: pull inode-\u003ei_lock up out of writeback_single_inode\n  fs: rename inode_lock to inode_hash_lock\n  fs: move i_wb_list out from under inode_lock\n  fs: move i_sb_list out from under inode_lock\n  fs: remove inode_lock from iput_final and prune_icache\n  fs: Lock the inode LRU list separately\n  fs: factor inode disposal\n  fs: protect inode-\u003ei_state with inode-\u003ei_lock\n  autofs4: Do not potentially dereference NULL pointer returned by fget() in autofs_dev_ioctl_setpipefd()\n  autofs4 - remove autofs4_lock\n  autofs4 - fix d_manage() return on rcu-walk\n  autofs4 - fix autofs4_expire_indirect() traversal\n  autofs4 - fix dentry leak in autofs4_expire_direct()\n  autofs4 - reinstate last used update on access\n  vfs - check non-mountpoint dentry might block in __follow_mount_rcu()\n"
    },
    {
      "commit": "0b2d0724e26a335cd326eb7ad552c109116a8795",
      "tree": "fabd651e35f3fbc60d4ca9ca7fbdad0a04596d43",
      "parents": [
        "0f1b1fd86f6fd662e04da3e82a6780b226fcd0d1"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 23 15:03:28 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 21:17:52 2011 -0400"
      },
      "message": "fs: simplify iget \u0026 friends\n\nMerge get_new_inode/get_new_inode_fast into iget5_locked/iget_locked\nas those were the only callers.  Remove the internal ifind/ifind_fast\nhelpers - ifind_fast only had a single caller, and ifind had two\ncallers wanting it to do different things.  Also clean up the comments\nin this area to focus on information important to a developer trying\nto use it, instead of overloading them with implementation details.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0f1b1fd86f6fd662e04da3e82a6780b226fcd0d1",
      "tree": "422e2923193f5ac4ea2a6864a6635878ad58c43b",
      "parents": [
        "67a23c494621ff1d5431c3bc320947865b224625"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 22 22:23:43 2011 +1100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 21:17:51 2011 -0400"
      },
      "message": "fs: pull inode-\u003ei_lock up out of writeback_single_inode\n\nFirst thing we do in writeback_single_inode() is take the i_lock and\nthe last thing we do is drop it. A caller already holds the i_lock,\nso pull the i_lock out of writeback_single_inode() to reduce the\nround trips on this lock during inode writeback.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "67a23c494621ff1d5431c3bc320947865b224625",
      "tree": "cce0868fc73031d8b0addc4dc7412d49ee9ec370",
      "parents": [
        "a66979abad090b2765a6c6790c9fdeab996833f2"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 22 22:23:42 2011 +1100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 21:17:51 2011 -0400"
      },
      "message": "fs: rename inode_lock to inode_hash_lock\n\nAll that remains of the inode_lock is protecting the inode hash list\nmanipulation and traversals. Rename the inode_lock to\ninode_hash_lock to reflect it\u0027s actual function.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a66979abad090b2765a6c6790c9fdeab996833f2",
      "tree": "e48b2d0fac8f96456286a503aeeb952620234961",
      "parents": [
        "55fa6091d83160ca772fc37cebae45d42695a708"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 22 22:23:41 2011 +1100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 21:17:51 2011 -0400"
      },
      "message": "fs: move i_wb_list out from under inode_lock\n\nProtect the inode writeback list with a new global lock\ninode_wb_list_lock and use it to protect the list manipulations and\ntraversals. This lock replaces the inode_lock as the inodes on the\nlist can be validity checked while holding the inode-\u003ei_lock and\nhence the inode_lock is no longer needed to protect the list.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "55fa6091d83160ca772fc37cebae45d42695a708",
      "tree": "4df49f372032e30449e1a2dd64daf443e20b781c",
      "parents": [
        "f283c86afe6aa70b733d1ecebad5d9464943b774"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 22 22:23:40 2011 +1100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 21:16:32 2011 -0400"
      },
      "message": "fs: move i_sb_list out from under inode_lock\n\nProtect the per-sb inode list with a new global lock\ninode_sb_list_lock and use it to protect the list manipulations and\ntraversals. This lock replaces the inode_lock as the inodes on the\nlist can be validity checked while holding the inode-\u003ei_lock and\nhence the inode_lock is no longer needed to protect the list.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f283c86afe6aa70b733d1ecebad5d9464943b774",
      "tree": "beaeca959996f2d8a00a997c56932dc5916bfec8",
      "parents": [
        "02afc410f363f98ac4f186341e38dcec13fc0e60"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 22 22:23:39 2011 +1100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 21:16:32 2011 -0400"
      },
      "message": "fs: remove inode_lock from iput_final and prune_icache\n\nNow that inode state changes are protected by the inode-\u003ei_lock and\nthe inode LRU manipulations by the inode_lru_lock, we can remove the\ninode_lock from prune_icache and the initial part of iput_final().\n\ninstead of using the inode_lock to protect the inode during\niput_final, use the inode-\u003ei_lock instead. This protects the inode\nagainst new references being taken while we change the inode state\nto I_FREEING, as well as preventing prune_icache from grabbing the\ninode while we are manipulating it. Hence we no longer need the\ninode_lock in iput_final prior to setting I_FREEING on the inode.\n\nFor prune_icache, we no longer need the inode_lock to protect the\nLRU list, and the inodes themselves are protected against freeing\nraces by the inode-\u003ei_lock. Hence we can lift the inode_lock from\nprune_icache as well.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "02afc410f363f98ac4f186341e38dcec13fc0e60",
      "tree": "2c5d5b2f1556806da135f2323b4df4d7d72d3734",
      "parents": [
        "b2b2af8e614b4dcd8aca1369d82ce5ad0461a7b1"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 22 22:23:38 2011 +1100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 21:16:31 2011 -0400"
      },
      "message": "fs: Lock the inode LRU list separately\n\nIntroduce the inode_lru_lock to protect the inode_lru list. This\nlock is nested inside the inode-\u003ei_lock to allow the inode to be\nadded to the LRU list in iput_final without needing to deal with\nlock inversions. This keeps iput_final() clean and neat.\n\nFurther, where marking the inode I_FREEING and removing it from the\nLRU, move the LRU list manipulation within the inode-\u003ei_lock to keep\nthe list manipulation consistent with iput_final. This also means\nthat most of the open coded LRU list removal + unused inode\naccounting can now use the inode_lru_list_del() wrappers which\ncleans the code up further.\n\nHowever, this locking change means what the LRU traversal in\nprune_icache() inverts this lock ordering and needs to use trylock\nsemantics on the inode-\u003ei_lock to avoid deadlocking. In these cases,\nif we fail to lock the inode we move it to the back of the LRU to\nprevent spinning on it.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b2b2af8e614b4dcd8aca1369d82ce5ad0461a7b1",
      "tree": "08b810e4df93a0705cc3c430a327344ae46ebfc8",
      "parents": [
        "250df6ed274d767da844a5d9f05720b804240197"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 22 22:23:37 2011 +1100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 21:16:31 2011 -0400"
      },
      "message": "fs: factor inode disposal\n\nWe have a couple of places that dispose of inodes. factor the\ndisposal into evict() to isolate this code and make it simpler to\npeel away the inode_lock from the code.\n\nWhile doing this, change the logic flow in iput_final() to separate\nthe different cases that need to be handled to make the transitions\nthe inode goes through more obvious.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "250df6ed274d767da844a5d9f05720b804240197",
      "tree": "b74f49a86c4451d9e3e82f90e3f791163025be21",
      "parents": [
        "3dc8fe4dca9cd3e4aa828ed36451e2bcfd2350da"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 22 22:23:36 2011 +1100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 21:16:31 2011 -0400"
      },
      "message": "fs: protect inode-\u003ei_state with inode-\u003ei_lock\n\nProtect inode state transitions and validity checks with the\ninode-\u003ei_lock. This enables us to make inode state transitions\nindependently of the inode_lock and is the first step to peeling\naway the inode_lock from the code.\n\nThis requires that __iget() is done atomically with i_state checks\nduring list traversals so that we don\u0027t race with another thread\nmarking the inode I_FREEING between the state check and grabbing the\nreference.\n\nAlso remove the unlock_new_inode() memory barrier optimisation\nrequired to avoid taking the inode_lock when clearing I_NEW.\nSimplify the code by simply taking the inode-\u003ei_lock around the\nstate change and wakeup. Because the wakeup is no longer tricky,\nremove the wake_up_inode() function and open code the wakeup where\nnecessary.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0acd2201920d0968919f4f5797d63f7b6f2b19d4",
      "tree": "9b241d264f42eff3ff4eeffb67616fca0490e460",
      "parents": [
        "8f70e95f9f4159184f557a1db60c909d7c1bd2e3",
        "35124a0994fc02545b14b9fa3aad000b3331f1c0"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 17:03:14 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 17:03:14 2011 -0400"
      },
      "message": "Merge branch \u0027nfs-for-2.6.39\u0027 into nfs-for-next\n"
    },
    {
      "commit": "35124a0994fc02545b14b9fa3aad000b3331f1c0",
      "tree": "5149267f387199fd9ca2718c74d86b6779013501",
      "parents": [
        "ef31153786bc1e4304e6b9422cc8b9efef455611"
      ],
      "author": {
        "name": "Weston Andros Adamson",
        "email": "dros@netapp.com",
        "time": "Thu Mar 24 16:48:21 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 17:01:41 2011 -0400"
      },
      "message": "Cleanup XDR parsing for LAYOUTGET, GETDEVICEINFO\n\nchanges LAYOUTGET and GETDEVICEINFO XDR parsing to:\n - not use vmap, which doesn\u0027t work on incoherent archs\n - use xdr_stream parsing for all xdr\n\nSigned-off-by: Weston Andros Adamson \u003cdros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ef31153786bc1e4304e6b9422cc8b9efef455611",
      "tree": "32739af2c6b0f2ab0fdf05e84b674d94721ffa6d",
      "parents": [
        "de4b15c7e9fe9fdd1eb6333be0a08c822db1ca0e"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Sat Mar 12 02:58:10 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 15:49:48 2011 -0400"
      },
      "message": "NFSv4.1 convert layoutcommit sync to boolean\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "de4b15c7e9fe9fdd1eb6333be0a08c822db1ca0e",
      "tree": "5851c3352d20c6433677da072d2fdbc63d303b8e",
      "parents": [
        "cccb4d063b263ac0713ab27d98460fda3b4f83ff"
      ],
      "author": {
        "name": "Andy Adamson",
        "email": "andros@netapp.com",
        "time": "Sat Mar 12 02:58:09 2011 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 15:49:48 2011 -0400"
      },
      "message": "NFSv4.1 pnfs_layoutcommit_inode fixes\n\nTest NFS_INO_LAYOUTCOMMIT before kzalloc\nMark inode dirty to retry LAYOUTCOMMIT on kzalloc failure.\nAdd comments.\n\nSigned-off-by: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "3dc8fe4dca9cd3e4aa828ed36451e2bcfd2350da",
      "tree": "9350ad63804b66df6f94781335d509aa5ae8f557",
      "parents": [
        "e7854723d0f3626f260c880d8db8e5136f29db19"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Fri Mar 25 01:51:37 2011 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 14:54:35 2011 -0400"
      },
      "message": "autofs4: Do not potentially dereference NULL pointer returned by fget() in autofs_dev_ioctl_setpipefd()\n\nIn fs/autofs4/dev-ioctl.c::autofs_dev_ioctl_setpipefd() we call fget(),\nwhich may return NULL, but we do not explicitly test for that NULL return\nso we may end up dereferencing a NULL pointer - bad.\n\nWhen I originally submitted this patch I had chosen EBUSY as the return\nvalue to use if this happens. Ian Kent was kind enough to explain why that\nwould most likely be wrong and why EBADF should most likely be used\ninstead. This version of the patch uses EBADF.\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e7854723d0f3626f260c880d8db8e5136f29db19",
      "tree": "3fe4f138922f51d8214ccc6bd2fb9ed4dfa1f234",
      "parents": [
        "83fb96bfc792e5ca693e53f7fd878d51b8493da8"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Fri Mar 25 01:51:31 2011 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 14:54:35 2011 -0400"
      },
      "message": "autofs4 - remove autofs4_lock\n\nThe autofs4_lock introduced by the rcu-walk changes has unnecessarily\nbroad scope. The locking is better handled by the per-autofs super\nblock lookup_lock.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "83fb96bfc792e5ca693e53f7fd878d51b8493da8",
      "tree": "315b3d418e9e4cf046195a6fbe12e9e9537d54ee",
      "parents": [
        "d4a85e35d1465da055264407d8395e84483084e6"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Fri Mar 25 01:51:25 2011 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 14:54:34 2011 -0400"
      },
      "message": "autofs4 - fix d_manage() return on rcu-walk\n\nThe daemon never needs to block and, in the rcu-walk case an error\nreturn isn\u0027t used, so always return zero.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d4a85e35d1465da055264407d8395e84483084e6",
      "tree": "d3bdbf9edd438ecd1a6de1bc30b9c13b466559e5",
      "parents": [
        "f9398c233e3201874395eea8558eb616fb198648"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Fri Mar 25 01:51:20 2011 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 14:54:34 2011 -0400"
      },
      "message": "autofs4 - fix autofs4_expire_indirect() traversal\n\nThe vfs-scale changes changed the traversal used in\nautofs4_expire_indirect() from a list to a depth first tree traversal\nwhich isn\u0027t right.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f9398c233e3201874395eea8558eb616fb198648",
      "tree": "adf805206a5bba08a44878dba61256a9dca6120d",
      "parents": [
        "3c3199852905ceb90a70e98777e71d369a5f0823"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Fri Mar 25 01:51:14 2011 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 14:54:34 2011 -0400"
      },
      "message": "autofs4 - fix dentry leak in autofs4_expire_direct()\n\nThere is a missing dput() when returning from autofs4_expire_direct()\nwhen we see that the dentry is already a pending mount.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3c3199852905ceb90a70e98777e71d369a5f0823",
      "tree": "aec40f3721955394587fc4ad364606161bc98cc5",
      "parents": [
        "62a7375e5d77d654695297c4b39d5d740d901184"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Fri Mar 25 01:51:08 2011 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 14:54:34 2011 -0400"
      },
      "message": "autofs4 - reinstate last used update on access\n\nWhen direct (and offset) mounts were introduced the the last used\ntimeout could no longer be updated in -\u003ed_revalidate(). This is\nbecause covered direct mounts would be followed over without calling\nthe autofs file system. As a result the definition of the busyness\ncheck for all entries was changed to be \"actually busy\" being an open\nfile or working directory within the automount. But now we have a call\nback in the follow so the last used update on any access can be\nre-instated. This requires DCACHE_MANAGE_TRANSIT to always be set.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "62a7375e5d77d654695297c4b39d5d740d901184",
      "tree": "b479c60a43f22e3bb99d9ebf1af89de2a7020673",
      "parents": [
        "b81a618dcd3ea99de292dbe624f41ca68f464376"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Fri Mar 25 01:51:02 2011 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 14:24:32 2011 -0400"
      },
      "message": "vfs - check non-mountpoint dentry might block in __follow_mount_rcu()\n\nWhen following a mount in rcu-walk mode we must check if the incoming dentry\nis telling us it may need to block, even if it isn\u0027t actually a mountpoint.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8f70e95f9f4159184f557a1db60c909d7c1bd2e3",
      "tree": "80acf6fa7d35d29ba03798fb6745ad9791f965c9",
      "parents": [
        "7ebb931598cd95cccea10d4bc4c0123a464ea565"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Mar 24 17:12:31 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 13:52:42 2011 -0400"
      },
      "message": "NFS: Determine initial mount security\n\nWhen sec\u003d\u003csomething\u003e is not presented as a mount option,\nwe should attempt to determine what security flavor the\nserver is using.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7ebb931598cd95cccea10d4bc4c0123a464ea565",
      "tree": "dec1af6eefdbbc3ce42346d7c6d407088eaf509e",
      "parents": [
        "5a5ea0d485c9715c86bf858bbdc5f6d373b3db88"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Mar 24 17:12:30 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 13:52:42 2011 -0400"
      },
      "message": "NFS: use secinfo when crossing mountpoints\n\nA submount may use different security than the parent\nmount does.  We should figure out what sec flavor the\nsubmount uses at mount time.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "5a5ea0d485c9715c86bf858bbdc5f6d373b3db88",
      "tree": "0aef824c36b7eb6eac6ea706c4c9a33930128ee3",
      "parents": [
        "7c5130588d691a3b34d02312f1bd1b6d56fe0100"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Mar 24 17:12:29 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 13:52:41 2011 -0400"
      },
      "message": "NFS: Add secinfo procedure\n\nThis patch adds the nfs4 operation secinfo as a\nvalid nfs rpc operation.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "7c5130588d691a3b34d02312f1bd1b6d56fe0100",
      "tree": "154ccea3a837ca1aae2c5676e0946b79fb4bb671",
      "parents": [
        "e73b83f270828630a9ce33728f6ef61c37a82340"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Mar 24 17:12:24 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 13:52:41 2011 -0400"
      },
      "message": "NFS: lookup supports alternate client\n\nA later patch will need to perform a lookup using an\nalternate client with a different security flavor.\nThis patch adds support for doing that on NFS v4.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "e73b83f270828630a9ce33728f6ef61c37a82340",
      "tree": "2a2c707b7248ad1bca741a96ec736852776d2822",
      "parents": [
        "4bbba111d94781d34081c37856bbc5eb33f6c72a"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Mar 24 17:12:23 2011 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Mar 24 13:52:41 2011 -0400"
      },
      "message": "NFS: convert call_sync() to a function\n\nThis patch changes nfs4_call_sync() from a macro into a\nstatic inline function.  As a macro, the call_sync()\nfunction will not do any type checking and depends\non the sequence arguments always having the same name.\nAs a function, we get to have type checking and can\nrename the arguments if we so choose.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "6c5103890057b1bb781b26b7aae38d33e4c517d8",
      "tree": "e6e57961dcddcb5841acb34956e70b9dc696a880",
      "parents": [
        "3dab04e6978e358ad2307bca563fabd6c5d2c58b",
        "9d2e157d970a73b3f270b631828e03eb452d525e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "message": "Merge branch \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block: (65 commits)\n  Documentation/iostats.txt: bit-size reference etc.\n  cfq-iosched: removing unnecessary think time checking\n  cfq-iosched: Don\u0027t clear queue stats when preempt.\n  blk-throttle: Reset group slice when limits are changed\n  blk-cgroup: Only give unaccounted_time under debug\n  cfq-iosched: Don\u0027t set active queue in preempt\n  block: fix non-atomic access to genhd inflight structures\n  block: attempt to merge with existing requests on plug flush\n  block: NULL dereference on error path in __blkdev_get()\n  cfq-iosched: Don\u0027t update group weights when on service tree\n  fs: assign sb-\u003es_bdi to default_backing_dev_info if the bdi is going away\n  block: Require subsystems to explicitly allocate bio_set integrity mempool\n  jbd2: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  jbd: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  fs: make fsync_buffers_list() plug\n  mm: make generic_writepages() use plugging\n  blk-cgroup: Add unaccounted time to timeslice_used.\n  block: fixup plugging stubs for !CONFIG_BLOCK\n  block: remove obsolete comments for blkdev_issue_zeroout.\n  blktrace: Use rq-\u003ecmd_flags directly in blk_add_trace_rq.\n  ...\n\nFix up conflicts in fs/{aio.c,super.c}\n"
    },
    {
      "commit": "6d1e9a42e7176bbce9348274784b2e5f69223936",
      "tree": "628404d7cffd7ac8ab6629cf5052e21d50e86633",
      "parents": [
        "95985725367e55642755ca6986d0c930cd3738e2",
        "7415982732bcb30100582cff8d2aca12a55123b4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:05:23 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:05:23 2011 -0700"
      },
      "message": "Merge branch \u0027release\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6\n\n* \u0027release\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:\n  pstore: cleanups to pstore_dump()\n  [IA64] New syscalls for 2.6.39\n"
    },
    {
      "commit": "fdc0ad80a4f27efcb457b49f5dd8455a3d623559",
      "tree": "189cde09de3a52aece0493385921b4dd7e096ed2",
      "parents": [
        "dc87c55120b0a5b0c4d731183f8bb348981aba65",
        "6ed09c34b7984a978a73a855f4c2e6662acc8bdb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 08:22:34 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 08:22:34 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.infradead.org/ubi-2.6\n\n* \u0027for-linus\u0027 of git://git.infradead.org/ubi-2.6:\n  UBIFS: fix assertion warning and refine comments\n  UBIFS: kill CONFIG_UBIFS_FS_DEBUG_CHKS\n  UBIFS: use GFP_NOFS properly\n  UBI: use GFP_NOFS properly\n"
    },
    {
      "commit": "dc87c55120b0a5b0c4d731183f8bb348981aba65",
      "tree": "c5a4f94ed6cc1678072c125f2cae08f04ce4f2b8",
      "parents": [
        "5818fcc8bd1b27af4d40b8357b91a56cc3fae6a4",
        "4be34b9d69c97211ff4eb00d79078f3c1593804d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 08:20:39 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 08:20:39 2011 -0700"
      },
      "message": "Merge branch \u0027for-2.6.39\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.39\u0027 of git://linux-nfs.org/~bfields/linux:\n  SUNRPC: Remove resource leak in svc_rdma_send_error()\n  nfsd: wrong index used in inner loop\n  nfsd4: fix comment and remove unused nfsd4_file fields\n  nfs41: make sure nfs server return right ca_maxresponsesize_cached\n  nfsd: fix compile error\n  svcrpc: fix bad argument in unix_domain_find\n  nfsd4: fix struct file leak\n  nfsd4: minor nfs4state.c reshuffling\n  svcrpc: fix rare race on unix_domain creation\n  nfsd41: modify the members value of nfsd4_op_flags\n  nfsd: add proc file listing kernel\u0027s gss_krb5 enctypes\n  gss:krb5 only include enctype numbers in gm_upcall_enctypes\n  NFSD, VFS: Remove dead code in nfsd_rename()\n  nfsd: kill unused macro definition\n  locks: use assign_type()\n"
    },
    {
      "commit": "5818fcc8bd1b27af4d40b8357b91a56cc3fae6a4",
      "tree": "c2f266e82306fa98c78130b0dc79ef9716d3c9c7",
      "parents": [
        "0625bef6060fab4aab0e484130b59af5e9ac81bc",
        "117a91e0f25fd7698e20ac3dfa62086be3dc82a3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 08:02:21 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 08:02:21 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-linus\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-linus:\n  Squashfs: Use vmalloc rather than kmalloc for zlib workspace\n  Squashfs: handle corruption of directory structure\n  Squashfs: wrap squashfs_mount() definition\n  Squashfs: xz_wrapper doesn\u0027t need to include squashfs_fs_i.h anymore\n  Squashfs: Update documentation to include compression options\n  Squashfs: Update Kconfig help text to include xz compression\n  Squashfs: add compression options support to xz decompressor\n  Squashfs: extend decompressor framework to handle compression options\n"
    },
    {
      "commit": "1b506cfb6ae63f352643d6e208c85c1351547036",
      "tree": "4556cbdb0443eadc4406778a45d7b771f0dc7be7",
      "parents": [
        "4cc4d24efce4672f9b0e7fa27963770ae602998f",
        "a49fb4c3d035ab516507b31ec3bd49263caee14d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 07:57:38 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 07:57:38 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.open-osd.org/linux-open-osd\n\n* \u0027for-linus\u0027 of git://git.open-osd.org/linux-open-osd:\n  exofs: deprecate the commands pending counter\n  exofs: Write sbi-\u003es_nextid as part of the Create command\n  exofs: Add option to mount by osdname\n  exofs: Override read-ahead to align on stripe_size\n  exofs: simple fsync race fix\n  exofs: Optimize read_4_write\n  exofs: Trivial: fix some indentation and debug prints\n  exofs: Remove redundant unlikely()\n"
    },
    {
      "commit": "6ed09c34b7984a978a73a855f4c2e6662acc8bdb",
      "tree": "c6177f03d1a523d1ae66c2b26ac2c8817df70b29",
      "parents": [
        "9d523cafbe0dab5a2b873ecd85c37fec9d1368f3"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Mar 23 10:32:58 2011 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Mar 24 16:16:18 2011 +0200"
      },
      "message": "UBIFS: fix assertion warning and refine comments\n\nThis patch fixes the following UBIFS assertion warning:\n\nUBIFS assert failed in do_readpage at 115 (pid 199)\n[\u003cb00321b8\u003e] (unwind_backtrace+0x0/0xdc) from [\u003caf025118\u003e]\n(do_readpage+0x108/0x594 [ubifs])\n[\u003caf025118\u003e] (do_readpage+0x108/0x594 [ubifs]) from [\u003caf025764\u003e]\n(ubifs_write_end+0x1c0/0x2e8 [ubifs])\n[\u003caf025764\u003e] (ubifs_write_end+0x1c0/0x2e8 [ubifs]) from\n[\u003cb00a0164\u003e] (generic_file_buffered_write+0x18c/0x270)\n[\u003cb00a0164\u003e] (generic_file_buffered_write+0x18c/0x270) from\n[\u003cb00a08d4\u003e] (__generic_file_aio_write+0x478/0x4c0)\n[\u003cb00a08d4\u003e] (__generic_file_aio_write+0x478/0x4c0) from\n[\u003cb00a0984\u003e] (generic_file_aio_write+0x68/0xc8)\n[\u003cb00a0984\u003e] (generic_file_aio_write+0x68/0xc8) from\n[\u003caf024a78\u003e] (ubifs_aio_write+0x178/0x1d8 [ubifs])\n[\u003caf024a78\u003e] (ubifs_aio_write+0x178/0x1d8 [ubifs]) from\n[\u003cb00d104c\u003e] (do_sync_write+0xb0/0x100)\n[\u003cb00d104c\u003e] (do_sync_write+0xb0/0x100) from [\u003cb00d1abc\u003e]\n(vfs_write+0xac/0x154)\n[\u003cb00d1abc\u003e] (vfs_write+0xac/0x154) from [\u003cb00d1c10\u003e]\n(sys_write+0x3c/0x68)\n[\u003cb00d1c10\u003e] (sys_write+0x3c/0x68) from [\u003cb002d9a0\u003e]\n(ret_fast_syscall+0x0/0x2c)\n\nThe \u0027PG_checked\u0027 flag is used to indicate that the page does not\nsupposedly exist on the media (e.g., a hole or a page beyond the\ninode size), so it requires slightly bigger budget, because we have\nto account the indexing size increase. And this flag basically\ntells that the budget for this page has to be \"new page budget\".\nThe \"new page budget\" is slightly bigger than the \"existing page\nbudget\".\n\nThe \u0027do_readpage()\u0027 function has the following assertion which\nsometimes is hit: \u0027ubifs_assert(!PageChecked(page))\u0027. Obviously,\nthe meaning of this assertion is: \"I should not be asked to read\na page which does not exist on the media\".\n\nHowever, in \u0027ubifs_write_begin()\u0027 we have a small \"trick\". Notice,\nthat VFS may write pages which were not read yet, so the page data\nwere not loaded from the media to the page cache yet. If VFS tells\nthat it is going to change only some part of the page, we obviously\nhave to load it from the media. However, if VFS tells that it is\ngoing to change whole page, we do not read it from the media for\noptimization purposes.\n\nHowever, since we do not read it, we do not know if it exists on\nthe media or not (a hole, etc). So we set the \u0027PG_checked\u0027 flag\nto this page to force bigger budget, just in case.\n\nSo \u0027ubifs_write_begin()\u0027 sets \u0027PG_checked\u0027. Then we are in\n\u0027ubifs_write_end()\u0027. And VFS tells us: \"hey, for some reasons I\nchanged my mind and did not change whole page\". Frankly, I do not\nknow why this happens, but I hit this somehow on an ARM platform.\nAnd this is extremely rare.\n\nSo in this case UBIFS does the following:\n\n1. Cancels allocated budget.\n2. Loads the page from the media by calling \u0027do_readpage()\u0027.\n3. Asks VFS to repeat the whole write operation from the very\n   beginning (call \u0027-\u003ewrite_begin() again, etc).\n\nAnd the assertion warning is hit at the step 2 - remember we have\nthe \u0027PG_checked\u0027 set for this page, and \u0027do_readpage()\u0027 does not\nlike this. So this patch fixes the problem by adding step 1.5 and\ncleaning the \u0027PG_checked\u0027 before calling \u0027do_readpage()\u0027.\n\nAll in all, this patch does not fix any functionality issue, but it\nsilences UBIFS false positive warning which may happen in very very\nrare cases.\n\nAnd while on it, this patch also improves a commentary which explains\nthe reasons of setting the \u0027PG_checked\u0027 flag for the page. The old\ncommentary was a bit difficult to understand.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "9d523cafbe0dab5a2b873ecd85c37fec9d1368f3",
      "tree": "b9555d625c0c9fb6e7036e28f53eef7b118513b3",
      "parents": [
        "fc5e58c0c4fd86881ec8ba8e46e41a07e25dc7a6"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Mar 21 16:16:29 2011 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Mar 24 16:16:08 2011 +0200"
      },
      "message": "UBIFS: kill CONFIG_UBIFS_FS_DEBUG_CHKS\n\nSimplify UBIFS configuration menu and kill the option to enable self-check\ncompile-time. We do not really need this because we can do this run-time\nusing the module parameters or the corresponding sysfs interfaces. And\nthere is a value in simplifying the kernel configuration menu which becomes\nincreasingly large.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    }
  ],
  "next": "fc5e58c0c4fd86881ec8ba8e46e41a07e25dc7a6"
}
