)]}'
{
  "log": [
    {
      "commit": "1e05ff020f692de078226fd5480adc76317e37bb",
      "tree": "daae233648b0afc36cdab0de675d40e2b40042bd",
      "parents": [
        "a97b52022a73ec12e43f0b2c7d4bd1f40f89c81d",
        "39411f81eec7dc01677b14dda97684c0ce23ac1b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 11 15:48:57 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 11 15:48:57 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: use proper interfaces for on-stack plugging\n  xfs: fix xfs_debug warnings\n  xfs: fix variable set but not used warnings\n  xfs: convert log tail checking to a warning\n  xfs: catch bad block numbers freeing extents.\n  xfs: push the AIL from memory reclaim and periodic sync\n  xfs: clean up code layout in xfs_trans_ail.c\n  xfs: convert the xfsaild threads to a workqueue\n  xfs: introduce background inode reclaim work\n  xfs: convert ENOSPC inode flushing to use new syncd workqueue\n  xfs: introduce a xfssyncd workqueue\n  xfs: fix extent format buffer allocation size\n  xfs: fix unreferenced var error in xfs_buf.c\n\nAlso, applied patch from Tony Luck that fixes ia64:\n  xfs_destroy_workqueues() should not be tagged with__exit\nin the branch before merging.\n"
    },
    {
      "commit": "39411f81eec7dc01677b14dda97684c0ce23ac1b",
      "tree": "332cbcd641b09f25c35167b44bcd8fc70918c66e",
      "parents": [
        "a1b7ea5d58c53c13f082110e535d98bc4e8e5cfe"
      ],
      "author": {
        "name": "Luck, Tony",
        "email": "tony.luck@intel.com",
        "time": "Mon Apr 11 12:06:12 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 11 15:47:20 2011 -0700"
      },
      "message": "xfs_destroy_workqueues() should not be tagged with__exit\n\nia64 throws away .exit sections for the built-in CONFIG case, so routines\nthat are used in other circumstances should not be tagged as __exit.\n\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a97b52022a73ec12e43f0b2c7d4bd1f40f89c81d",
      "tree": "1a35544915a5704fa59c63b43e9f46e20be1e296",
      "parents": [
        "18770c7c3a0ccd60017ac76b5d2e7d1f71376b94",
        "c8205636029fc869278c55b7336053b3e7ae3ef4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 11 15:45:47 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 11 15:45:47 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:\n  ext4: fix data corruption regression by reverting commit 6de9843dab3f\n  ext4: Allow indirect-block file to grow the file size to max file size\n  ext4: allow an active handle to be started when freezing\n  ext4: sync the directory inode in ext4_sync_parent()\n  ext4: init timer earlier to avoid a kernel panic in __save_error_info\n  jbd2: fix potential memory leak on transaction commit\n  ext4: fix a double free in ext4_register_li_request\n  ext4: fix credits computing for indirect mapped files\n  ext4: remove unnecessary [cm]time update of quota file\n  jbd2: move bdget out of critical section\n"
    },
    {
      "commit": "18770c7c3a0ccd60017ac76b5d2e7d1f71376b94",
      "tree": "548e113ab83307d25e41ea1e67ace6f53b194798",
      "parents": [
        "6b98cd5aad3bb51a3b5b51ba670ab8d5fe1cc487",
        "23fcf2ec93fb8573a653408316af599939ff9a8e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 11 15:45:17 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 11 15:45:17 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  nfsd4: fix oops on lock failure\n  nfsd: fix auth_domain reference leak on nlm operations\n"
    },
    {
      "commit": "c8205636029fc869278c55b7336053b3e7ae3ef4",
      "tree": "c22b4f2fab37d14d4b81ad5683110075afdc35ea",
      "parents": [
        "f80da1e70f1ffec3825aa0a1d0801f4896e002b6"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 10 22:30:07 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 10 22:30:07 2011 -0400"
      },
      "message": "ext4: fix data corruption regression by reverting commit 6de9843dab3f\n\nRevert commit 6de9843dab3f2a1d4d66d80aa9e5782f80977d20, since it\ncaused a data corruption regression with BitTorrent downloads.  Thanks\nto Damien for discovering and bisecting to find the problem commit.\n\nhttps://bugzilla.kernel.org/show_bug.cgi?id\u003d32972\n\nReported-by: Damien Grassart \u003cdamien@grassart.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f80da1e70f1ffec3825aa0a1d0801f4896e002b6",
      "tree": "42976f4e0fc07da78ffce618b7e98b87d82a2bff",
      "parents": [
        "be4f27d324e8ddd57cc0d4d604fe85ee0425cba9"
      ],
      "author": {
        "name": "Kazuya Mio",
        "email": "k-mio@sx.jp.nec.com",
        "time": "Sun Apr 10 22:06:36 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 10 22:06:36 2011 -0400"
      },
      "message": "ext4: Allow indirect-block file to grow the file size to max file size\n\nWe can create 4402345721856 byte file with indirect block mapping.\nHowever, if we grow an indirect-block file to the size with ftruncate(),\nwe can see an ext4 warning. The following patch fixes this problem.\n\nHow to reproduce:\n# dd if\u003d/dev/zero of\u003d/mnt/mp1/hoge bs\u003d1 count\u003d0 seek\u003d4402345721856\n0+0 records in\n0+0 records out\n0 bytes (0 B) copied, 0.000221428 s, 0.0 kB/s\n# tail -n 1 /var/log/messages\nNov 25 15:10:27 test kernel: EXT4-fs warning (device sda8): ext4_block_to_path:345: block 1074791436 \u003e max in inode 12\n\nSigned-off-by: Kazuya Mio \u003ck-mio@sx.jp.nec.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "be4f27d324e8ddd57cc0d4d604fe85ee0425cba9",
      "tree": "e4262a9e1ade9095e1bf937dc4b9d56a08824eda",
      "parents": [
        "0893ed458b4b1d7c7667ca7ffb8b11febe7e7e6c"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Sun Apr 10 22:06:07 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 10 22:06:07 2011 -0400"
      },
      "message": "ext4: allow an active handle to be started when freezing\n\next4_journal_start_sb() should not prevent an active handle from being\nstarted due to s_frozen.  Otherwise, deadlock is easy to happen, below\nis a situation.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n     freeze         |       truncate\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                    |  ext4_ext_truncate()\n    freeze_super()  |   starts a handle\n    sets s_frozen   |\n                    |  ext4_ext_truncate()\n                    |  holds i_data_sem\n  ext4_freeze()     |\n  waits for updates |\n                    |  ext4_free_blocks()\n                    |  calls dquot_free_block()\n                    |\n                    |  dquot_free_blocks()\n                    |  calls ext4_dirty_inode()\n                    |\n                    |  ext4_dirty_inode()\n                    |  trys to start an active\n                    |  handle\n                    |\n                    |  block due to s_frozen\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReported-by: Amir Goldstein \u003camir73il@users.sf.net\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nReviewed-by: Andreas Dilger \u003cadilger@dilger.ca\u003e\n"
    },
    {
      "commit": "0893ed458b4b1d7c7667ca7ffb8b11febe7e7e6c",
      "tree": "a9a4e226a6bfa7a13e0cad545280e5e8ce2a80b2",
      "parents": [
        "0449641130f5652b344ef6fa39fa019d7e94660a"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Sun Apr 10 22:05:31 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 10 22:05:31 2011 -0400"
      },
      "message": "ext4: sync the directory inode in ext4_sync_parent()\n\next4 has taken the stance that, in the absence of a journal,\nwhen an fsync/fdatasync of an inode is done, the parent\ndirectory should be sync\u0027ed if this inode entry is new.\next4_sync_parent(), which implements this, does indeed sync\nthe dirent pages for parent directories, but it does not\nsync the directory *inode*.  This patch fixes this.\n\nAlso now return error status from ext4_sync_parent().\n\nI tested this using a power fail test, which panics a\nmachine running a file server getting requests from a\nclient.  Without this patch, on about every other test run,\nthe server is missing many, many files that had been synced.\nWith this patch, on \u003e 6 runs, I see zero files being lost.\n\nGoogle-Bug-Id: 4179519\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "23fcf2ec93fb8573a653408316af599939ff9a8e",
      "tree": "36fcfe93f655c77651f4417b6882b9a4e04392c3",
      "parents": [
        "954032d2527f2fce7355ba70709b5e143d6b686f"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Mon Mar 28 15:15:09 2011 +0800"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Sun Apr 10 12:21:27 2011 -0400"
      },
      "message": "nfsd4: fix oops on lock failure\n\nLock stateid\u0027s can have access_bmap 0 if they were only partially\ninitialized (due to a failed lock request); handle that case in\nfree_generic_stateid.\n\n------------[ cut here ]------------\nkernel BUG at fs/nfsd/nfs4state.c:380!\ninvalid opcode: 0000 [#1] SMP\nlast sysfs file: /sys/kernel/mm/ksm/run\nModules linked in: nfs fscache md4 nls_utf8 cifs ip6table_filter ip6_tables ebtable_nat ebtables ipt_MASQUERADE iptable_nat nf_nat bridge stp llc nfsd lockd nfs_acl auth_rpcgss sunrpc ipv6 ppdev parport_pc parport pcnet32 mii pcspkr microcode i2c_piix4 BusLogic floppy [last unloaded: mperf]\n\nPid: 1468, comm: nfsd Not tainted 2.6.38+ #120 VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform\nEIP: 0060:[\u003ce24f180d\u003e] EFLAGS: 00010297 CPU: 0\nEIP is at nfs4_access_to_omode+0x1c/0x29 [nfsd]\nEAX: ffffffff EBX: dd758120 ECX: 00000000 EDX: 00000004\nESI: dd758120 EDI: ddfe657c EBP: dd54dde0 ESP: dd54dde0\n DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068\nProcess nfsd (pid: 1468, ti\u003ddd54c000 task\u003dddc92580 task.ti\u003ddd54c000)\nStack:\n dd54ddf0 e24f19ca 00000000 ddfe6560 dd54de08 e24f1a5d dd758130 deee3a20\n ddfe6560 31270000 dd54df1c e24f52fd 0000000f dd758090 e2505dd0 0be304cf\n dbb51d68 0000000e ddfe657c ddcd8020 dd758130 dd758128 dd7580d8 dd54de68\nCall Trace:\n [\u003ce24f19ca\u003e] free_generic_stateid+0x1c/0x3e [nfsd]\n [\u003ce24f1a5d\u003e] release_lockowner+0x71/0x8a [nfsd]\n [\u003ce24f52fd\u003e] nfsd4_lock+0x617/0x66c [nfsd]\n [\u003ce24e57b6\u003e] ? nfsd_setuser+0x199/0x1bb [nfsd]\n [\u003ce24e056c\u003e] ? nfsd_setuser_and_check_port+0x65/0x81 [nfsd]\n [\u003cc07a0052\u003e] ? _cond_resched+0x8/0x1c\n [\u003cc04ca61f\u003e] ? slab_pre_alloc_hook.clone.33+0x23/0x27\n [\u003cc04cac01\u003e] ? kmem_cache_alloc+0x1a/0xd2\n [\u003cc04835a0\u003e] ? __call_rcu+0xd7/0xdd\n [\u003ce24e0dfb\u003e] ? fh_verify+0x401/0x452 [nfsd]\n [\u003ce24f0b61\u003e] ? nfsd4_encode_operation+0x52/0x117 [nfsd]\n [\u003ce24ea0d7\u003e] ? nfsd4_putfh+0x33/0x3b [nfsd]\n [\u003ce24f4ce6\u003e] ? nfsd4_delegreturn+0xd4/0xd4 [nfsd]\n [\u003ce24ea2c9\u003e] nfsd4_proc_compound+0x1ea/0x33e [nfsd]\n [\u003ce24de6ee\u003e] nfsd_dispatch+0xd1/0x1a5 [nfsd]\n [\u003ce1d6e1c7\u003e] svc_process_common+0x282/0x46f [sunrpc]\n [\u003ce1d6e578\u003e] svc_process+0xdc/0xfa [sunrpc]\n [\u003ce24de0fa\u003e] nfsd+0xd6/0x115 [nfsd]\n [\u003ce24de024\u003e] ? nfsd_shutdown+0x24/0x24 [nfsd]\n [\u003cc0454322\u003e] kthread+0x62/0x67\n [\u003cc04542c0\u003e] ? kthread_worker_fn+0x114/0x114\n [\u003cc07a6ebe\u003e] kernel_thread_helper+0x6/0x10\nCode: eb 05 b8 00 00 27 4f 8d 65 f4 5b 5e 5f 5d c3 83 e0 03 55 83 f8 02 89 e5 74 17 83 f8 03 74 05 48 75 09 eb 09 b8 02 00 00 00 eb 0b \u003c0f\u003e 0b 31 c0 eb 05 b8 01 00 00 00 5d c3 55 89 e5 57 56 89 d6 8d\nEIP: [\u003ce24f180d\u003e] nfs4_access_to_omode+0x1c/0x29 [nfsd] SS:ESP 0068:dd54dde0\n---[ end trace 2b0bf6c6557cb284 ]---\n\nThe trace route is:\n\n -\u003e nfsd4_lock()\n   -\u003e if (lock-\u003elk_is_new) {\n     -\u003e alloc_init_lock_stateid()\n\n        3739: stp-\u003est_access_bmap \u003d 0;\n\n   -\u003eif (status \u0026\u0026 lock-\u003elk_is_new \u0026\u0026 lock_sop)\n     -\u003e release_lockowner()\n      -\u003e free_generic_stateid()\n       -\u003e nfs4_access_bmap_to_omode()\n          -\u003e nfs4_access_to_omode()\n\n        380: BUG();   *****\n\nThis problem was introduced by 0997b173609b9229ece28941c118a2a9b278796e.\n\nReported-by: Mi Jinlong \u003cmijinlong@cn.fujitsu.com\u003e\nTested-by: Mi Jinlong \u003cmijinlong@cn.fujitsu.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "94c8a984ae2adbd9a9626fb42e0f2faf3e36e86f",
      "tree": "a4beddd64501ef00ad41c8fd5974340bec2fcf73",
      "parents": [
        "f9fa0bc1fabe1d861e46d80ecbe7e85da359195c",
        "37adb89fadd65ce47f7e5cfd564938a76b351948"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 08 11:47:35 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 08 11:47:35 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: Change initial mount authflavor only when server returns NFS4ERR_WRONGSEC\n  NFS: Fix a signed vs. unsigned secinfo bug\n  Revert \"net/sunrpc: Use static const char arrays\"\n"
    },
    {
      "commit": "3d762ca1cdf38b5fb7d1774734176d1d4d56bbb7",
      "tree": "2fed11327a86c05ec945c31aa6e1307fbca527c9",
      "parents": [
        "0c3efe54d0165cecf0698b468e253577b555dde6",
        "b03f24567ce7caf2420b8be4c6eb74c191d59a91"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 08 07:35:17 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 08 07:35:17 2011 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6:\n  quota: Don\u0027t write quota info in dquot_commit()\n  ext3: Fix writepage credits computation for ordered mode\n"
    },
    {
      "commit": "a1b7ea5d58c53c13f082110e535d98bc4e8e5cfe",
      "tree": "8238090fc86fa6198680012b9d65d272529ba44b",
      "parents": [
        "957935dcd8e11d6f789b4ed769b376040e15565b"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 30 11:05:09 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Apr 08 08:09:28 2011 -0500"
      },
      "message": "xfs: use proper interfaces for on-stack plugging\n\nAdd proper blk_start_plug/blk_finish_plug pairs for the two places where\nwe issue buffer I/O, and remove the blk_flush_plug in xfs_buf_lock and\nxfs_buf_iowait, given that context switches already flush the per-process\nplugging lists.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "957935dcd8e11d6f789b4ed769b376040e15565b",
      "tree": "6f120bac2011bdba637f39d3704ec0272b883726",
      "parents": [
        "ecb697c16c1718ae97bb73ce41a5d5ac2aed29ec"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sat Apr 02 18:13:40 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Apr 08 08:09:24 2011 -0500"
      },
      "message": "xfs: fix xfs_debug warnings\n\nFor a CONFIG_XFS_DEBUG\u003dn build gcc complains about statements with no\neffect in xfs_debug:\n\nfs/xfs/quota/xfs_qm_syscalls.c: In function \u0027xfs_qm_scall_trunc_qfiles\u0027:\nfs/xfs/quota/xfs_qm_syscalls.c:291:3: warning: statement with no effect\n\nThe reason for that is that the various new xfs message functions have a\nreturn value which is never used, and in case of the non-debug build\nxfs_debug the macro evaluates to a plain 0 which produces the above\nwarnings.  This can be fixed by turning xfs_debug into an inline function\ninstead of a macro, but in addition to that I\u0027ve also changed all the\nmessage helpers to return void as we never use their return values.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "ecb697c16c1718ae97bb73ce41a5d5ac2aed29ec",
      "tree": "a4a54638bedf89e29fb8487b3493188d462b3fad",
      "parents": [
        "da8a1a4a4dfc1ead12c343b992fc8300a22d33d0"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Apr 04 12:55:44 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Apr 08 08:09:12 2011 -0500"
      },
      "message": "xfs: fix variable set but not used warnings\n\nGCC 4.6 now warnings about variables set but not used.  Fix the trivially\nfixable warnings of this sort.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "da8a1a4a4dfc1ead12c343b992fc8300a22d33d0",
      "tree": "903485755dcfdd4908cc1d33c1af0e69f45b79a5",
      "parents": [
        "be65b18a10e62321c5ba09a1dc0f70babeb0eba1"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "message": "xfs: convert log tail checking to a warning\n\nOn the Power platform, the log tail debug checks fire excessively\ncausing the system to panic early in testing. The debug checks are\nknown to be racy, though on x86_64 there is no evidence that they\ntrigger at all.\n\nWe want to keep the checks active on debug systems to alert us to\nproblems with log space accounting, but we need to reduce the impact\nof a racy check on testing on the Power platform.\n\nAs a result, convert the ASSERT conditions to warnings, and\nallow them to fire only once per filesystem mount. This will prevent\nfalse positives from interfering with testing, whilst still\nproviding us with the indication that they may be a problem with log\nspace accounting should that occur.\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": "be65b18a10e62321c5ba09a1dc0f70babeb0eba1",
      "tree": "512dba387c91b778c4e2b9fafa42bfef7f074bb7",
      "parents": [
        "fd074841cfe01b006465fb9388091012585e8dfb"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "message": "xfs: catch bad block numbers freeing extents.\n\nA fuzzed filesystem crashed a kernel when freeing an extent with a\nblock number beyond the end of the filesystem. Convert all the debug\nasserts in xfs_free_extent() to active checks so that we catch bad\nextents and return that the filesytsem is corrupted rather than\ncrashing.\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": "fd074841cfe01b006465fb9388091012585e8dfb",
      "tree": "7ec409fade00b6c18987e1cb2a62443c074ce274",
      "parents": [
        "cd4a3c503c185f5f0a20f04f90da0a6966dd03bd"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "message": "xfs: push the AIL from memory reclaim and periodic sync\n\nWhen we are short on memory, we want to expedite the cleaning of\ndirty objects.  Hence when we run short on memory, we need to kick\nthe AIL flushing into action to clean as many dirty objects as\nquickly as possible.  To implement this, sample the lsn of the log\nitem at the head of the AIL and use that as the push target for the\nAIL flush.\n\nFurther, we keep items in the AIL that are dirty that are not\ntracked any other way, so we can get objects sitting in the AIL that\ndon\u0027t get written back until the AIL is pushed. Hence to get the\nfilesystem to the idle state, we might need to push the AIL to flush\nout any remaining dirty objects sitting in the AIL. This requires\nthe same push mechanism as the reclaim push.\n\nThis patch also renames xfs_trans_ail_tail() to xfs_ail_min_lsn() to\nmatch the new xfs_ail_max_lsn() function introduced in this patch.\nSimilarly for xfs_trans_ail_push -\u003e xfs_ail_push.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "cd4a3c503c185f5f0a20f04f90da0a6966dd03bd",
      "tree": "18edb2203a85a778b2d88121430bcb3e2c3a9b4c",
      "parents": [
        "0bf6a5bd4b55b466964ead6fa566d8f346a828ee"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "message": "xfs: clean up code layout in xfs_trans_ail.c\n\nThis patch rearranges the location of functions in xfs_trans_ail.c\nto remove the need for forward declarations of those functions in\npreparation for adding new functions without the need for forward\ndeclarations.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "0bf6a5bd4b55b466964ead6fa566d8f346a828ee",
      "tree": "661f2bcc36458c807752243c6f2a76b43a64302c",
      "parents": [
        "a7b339f1b8698667eada006e717cdb4523be2ed5"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "message": "xfs: convert the xfsaild threads to a workqueue\n\nSimilar to the xfssyncd, the per-filesystem xfsaild threads can be\nconverted to a global workqueue and run periodically by delayed\nworks. This makes sense for the AIL pushing because it uses\nvariable timeouts depending on the work that needs to be done.\n\nBy removing the xfsaild, we simplify the AIL pushing code and\nremove the need to spread the code to implement the threading\nand pushing across multiple files.\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": "a7b339f1b8698667eada006e717cdb4523be2ed5",
      "tree": "77c44400c32284bdcf15829e10d01eb15ddd1d41",
      "parents": [
        "89e4cb550a492cfca038a555fcc1bdac58822ec3"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "message": "xfs: introduce background inode reclaim work\n\nBackground inode reclaim needs to run more frequently that the XFS\nsyncd work is run as 30s is too long between optimal reclaim runs.\nAdd a new periodic work item to the xfs syncd workqueue to run a\nfast, non-blocking inode reclaim scan.\n\nBackground inode reclaim is kicked by the act of marking inodes for\nreclaim.  When an AG is first marked as having reclaimable inodes,\nthe background reclaim work is kicked. It will continue to run\nperiodically untill it detects that there are no more reclaimable\ninodes. It will be kicked again when the first inode is queued for\nreclaim.\n\nTo ensure shrinker based inode reclaim throttles to the inode\ncleaning and reclaim rate but still reclaim inodes efficiently, make it kick the\nbackground inode reclaim so that when we are low on memory we are\ntrying to reclaim inodes as efficiently as possible. This kick shoul\nd not be necessary, but it will protect against failures to kick the\nbackground reclaim when inodes are first dirtied.\n\nTo provide the rate throttling, make the shrinker pass do\nsynchronous inode reclaim so that it blocks on inodes under IO. This\nmeans that the shrinker will reclaim inodes rather than just\nskipping over them, but it does not adversely affect the rate of\nreclaim because most dirty inodes are already under IO due to the\nbackground reclaim work the shrinker kicked.\n\nThese two modifications solve one of the two OOM killer invocations\nChris Mason reported recently when running a stress testing script.\nThe particular workload trigger for the OOM killer invocation is\nwhere there are more threads than CPUs all unlinking files in an\nextremely memory constrained environment. Unlike other solutions,\nthis one does not have a performance impact on performance when\nmemory is not constrained or the number of concurrent threads\noperating is \u003c\u003d to the number of CPUs.\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": "89e4cb550a492cfca038a555fcc1bdac58822ec3",
      "tree": "ab688a1849d6361c92b9f60ae0586045908010da",
      "parents": [
        "c6d09b666de11eb272326a6eb6cd3246da571014"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "message": "xfs: convert ENOSPC inode flushing to use new syncd workqueue\n\nOn of the problems with the current inode flush at ENOSPC is that we\nqueue a flush per ENOSPC event, regardless of how many are already\nqueued. Thi can result in    hundreds of queued flushes, most of\nwhich simply burn CPU scanned and do no real work. This simply slows\ndown allocation at ENOSPC.\n\nWe really only need one active flush at a time, and we can easily\nimplement that via the new xfs_syncd_wq. All we need to do is queue\na flush if one is not already active, then block waiting for the\ncurrently active flush to complete. The result is that we only ever\nhave a single ENOSPC inode flush active at a time and this greatly\nreduces the overhead of ENOSPC processing.\n\nOn my 2p test machine, this results in tests exercising ENOSPC\nconditions running significantly faster - 042 halves execution time,\n083 drops from 60s to 5s, etc - while not introducing test\nregressions.\n\nThis allows us to remove the old xfssyncd threads and infrastructure\nas they are no longer used.\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": "c6d09b666de11eb272326a6eb6cd3246da571014",
      "tree": "74951ec04191b47a1fb75f9e79de6c00837a7c17",
      "parents": [
        "e828776a8abe6b9bae7ed9638710bff7642c568a"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "message": "xfs: introduce a xfssyncd workqueue\n\nAll of the work xfssyncd does is background functionality. There is\nno need for a thread per filesystem to do this work - it can al be\nmanaged by a global workqueue now they manage concurrency\neffectively.\n\nIntroduce a new gglobal xfssyncd workqueue, and convert the periodic\nwork to use this new functionality. To do this, use a delayed work\nconstruct to schedule the next running of the periodic sync work\nfor the filesystem. When the sync work is complete, queue a new\ndelayed work for the next running of the sync work.\n\nFor laptop mode, we wait on completion for the sync works, so ensure\nthat the sync work queuing interface can flush and wait for work to\ncomplete to enable the work queue infrastructure to replace the\ncurrent sequence number and wakeup that is used.\n\nBecause the sync work does non-trivial amounts of work, mark the\nnew work queue as CPU intensive.\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": "e828776a8abe6b9bae7ed9638710bff7642c568a",
      "tree": "978a74827e670e2aab8dec943944e63ce43afc2d",
      "parents": [
        "89b3600ccfb01aed6873bc499442fc0bed00bbdd"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "message": "xfs: fix extent format buffer allocation size\n\nWhen formatting an inode item, we have to allocate a separate buffer\nto hold extents when there are delayed allocation extents on the\ninode and it is in extent format. The allocation size is derived\nfrom the in-core data fork representation, which accounts for\ndelayed allocation extents, while the on-disk representation does\nnot contain any delalloc extents.\n\nAs a result of this mismatch, the allocated buffer can be far larger\nthan needed to hold the real extent list which, due to the fact the\ninode is in extent format, is limited to the size of the literal\narea of the inode. However, we can have thousands of delalloc\nextents, resulting in an allocation size orders of magnitude larger\nthan is needed to hold all the real extents.\n\nFix this by limiting the size of the buffer being allocated to the\nsize of the literal area of the inodes in the filesystem (i.e. the\nmaximum size an inode fork can grow to).\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "37adb89fadd65ce47f7e5cfd564938a76b351948",
      "tree": "b935bde3f61965a8e0810f9d12281b97b2376351",
      "parents": [
        "418875900e3de4831c84f86ae4756690dac5be77"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Thu Apr 07 16:02:20 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Thu Apr 07 13:19:40 2011 -0700"
      },
      "message": "NFS: Change initial mount authflavor only when server returns NFS4ERR_WRONGSEC\n\nWhen attempting an initial mount, we should only attempt other\nauthflavors if AUTH_UNIX receives a NFS4ERR_WRONGSEC error.\nThis allows other errors to be passed back to userspace programs.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "ccfeef0ff76ebd632ae51bc56700f0072c4f1864",
      "tree": "83ec5932dac631a455a69212b505f68f57f68cdf",
      "parents": [
        "42933bac11e811f02200c944d8562a15f8ec4ff0",
        "6bef0b67474d71e0d6484cbabcc87657a1176d8d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 07 11:31:03 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 07 11:31:03 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.infradead.org/ubifs-2.6\n\n* \u0027for-linus\u0027 of git://git.infradead.org/ubifs-2.6:\n  UBI: do not select KALLSYMS_ALL\n  UBI: do not compare array with NULL\n  UBI: check if we are in RO mode in the erase routine\n  UBIFS: fix debugging failure in dbg_check_space_info\n  UBIFS: fix error path in dbg_debugfs_init_fs\n  UBIFS: unify error path dbg_debugfs_init_fs\n  UBIFS: do not select KALLSYMS_ALL\n  UBIFS: fix assertion warnings\n  UBIFS: fix oops on error path in read_pnode\n  UBIFS: do not read flash unnecessarily\n"
    },
    {
      "commit": "42933bac11e811f02200c944d8562a15f8ec4ff0",
      "tree": "fcdd9afe56eb0e746565ddd1f92f22d36678b843",
      "parents": [
        "2b9accbee563f535046ff2cd382d0acaa92e130c",
        "25985edcedea6396277003854657b5f3cb31a628"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 07 11:14:49 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 07 11:14:49 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus2\u0027 of git://git.profusion.mobi/users/lucas/linux-2.6\n\n* \u0027for-linus2\u0027 of git://git.profusion.mobi/users/lucas/linux-2.6:\n  Fix common misspellings\n"
    },
    {
      "commit": "418875900e3de4831c84f86ae4756690dac5be77",
      "tree": "d0609f12b62962806adc092867350b7bfcfed5a3",
      "parents": [
        "0867659fa3c245bf203d837a82e0f6ea5079c2c5"
      ],
      "author": {
        "name": "Bryan Schumaker",
        "email": "bjschuma@netapp.com",
        "time": "Wed Apr 06 14:33:28 2011 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 06 13:25:04 2011 -0700"
      },
      "message": "NFS: Fix a signed vs. unsigned secinfo bug\n\nrpc_authflavor_t is cast from an unsigned int, but the\ninitial code tried to use it as a signed int.  I fix\nthis by passing an rpc_authflavor_t pointer around, and\nreturning signed integers from functions.\n\nSigned-off-by: Bryan Schumaker \u003cbjschuma@netapp.com\u003e\nReported-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "0449641130f5652b344ef6fa39fa019d7e94660a",
      "tree": "d24779d75a6d3fafff8082591b3572a5fdb32858",
      "parents": [
        "6cba611e600ded15f642552ce6b5f7ee243bacf0"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Tue Apr 05 19:55:28 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Apr 05 19:55:28 2011 -0400"
      },
      "message": "ext4: init timer earlier to avoid a kernel panic in __save_error_info\n\nDuring mount, when we fail to open journal inode or root inode, the\n__save_error_info will mod_timer. But actually s_err_report isn\u0027t\ninitialized yet and the kernel oops. The detailed information can\nbe found https://bugzilla.kernel.org/show_bug.cgi?id\u003d32082.\n\nThe best way is to check whether the timer s_err_report is initialized\nor not. But it seems that in include/linux/timer.h, we can\u0027t find a\ngood function to check the status of this timer, so this patch just\nmove the initializtion of s_err_report earlier so that we can avoid\nthe kernel panic. The corresponding del_timer is also added in the\nerror path.\n\nReported-by: Sami Liedes \u003csliedes@cc.hut.fi\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "6cba611e600ded15f642552ce6b5f7ee243bacf0",
      "tree": "5ffde3bc5fb87bbf9693bc83a53d9212ae04f267",
      "parents": [
        "46e4690bbd9a4f8d9e7c4f34e34b48f703ad47e0"
      ],
      "author": {
        "name": "Zhang Huan",
        "email": "zhhuan@gmail.com",
        "time": "Tue Apr 05 19:16:20 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Apr 05 19:16:20 2011 -0400"
      },
      "message": "jbd2: fix potential memory leak on transaction commit\n\nThere is potential memory leak of journal head in function\njbd2_journal_commit_transaction. The problem is that JBD2 will not\nreclaim the journal head of commit record if error occurs or journal\nis abotred.\n\nI use the following script to reproduce this issue, on a RHEL6\nsystem. I found it very easy to reproduce with async commit enabled.\n\nmount /dev/sdb /mnt -o journal_checksum,journal_async_commit\ntouch /mnt/xxx\necho offline \u003e /sys/block/sdb/device/state\nsync\numount /mnt\nrmmod ext4\nrmmod jbd2\n\nRemoval of the jbd2 module will make slab complaining that\n\"cache `jbd2_journal_head\u0027: can\u0027t free all objects\".\n\nSigned-off-by: Zhang Huan \u003czhhuan@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "44148a667d3715f3a1c37eeff7e954c946cc1efe",
      "tree": "fd8685dd17dcef45993b733f4ec4df97e6808304",
      "parents": [
        "d0de4dc584ec6aa3b26fffea320a8457827768fc",
        "782b86e2656762382ae1c2686d8d5c91f7d5eacf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 05 15:29:01 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 05 15:29:01 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-2.6-block:\n  ide: always ensure that blk_delay_queue() is called if we have pending IO\n  block: fix request sorting at unplug\n  dm: improve block integrity support\n  fs: export empty_aops\n  ide: ide_requeue_and_plug() reinstate \"always plug\" behaviour\n  blk-throttle: don\u0027t call xchg on bool\n  ufs: remove unessecary blk_flush_plug\n  block: make the flush insertion use the tail of the dispatch list\n  block: get rid of elv_insert() interface\n  block: dump request state on seeing a corrupted request completion\n"
    },
    {
      "commit": "d0de4dc584ec6aa3b26fffea320a8457827768fc",
      "tree": "6895419a694ba323c6b18cdb6aa2714892b6f481",
      "parents": [
        "623dda65b6f71e6474f3f156dbed2acf6ff43584"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue Apr 05 17:20:50 2011 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 05 15:27:14 2011 -0700"
      },
      "message": "inotify: fix double free/corruption of stuct user\n\nOn an error path in inotify_init1 a normal user can trigger a double\nfree of struct user.  This is a regression introduced by a2ae4cc9a16e\n(\"inotify: stop kernel memory leak on file creation failure\").\n\nWe fix this by making sure that if a group exists the user reference is\ndropped when the group is cleaned up.  We should not explictly drop the\nreference on error and also drop the reference when the group is cleaned\nup.\n\nThe new lifetime rules are that an inotify group lives from\ninotify_new_group to the last fsnotify_put_group.  Since the struct user\nand inotify_devs are directly tied to this lifetime they are only\nchanged/updated in those two locations.  We get rid of all special\ncasing of struct user or user-\u003einotify_devs.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nCc: stable@kernel.org (2.6.37 and up)\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7dcda1c96d7c643101d4a05579ef4512a4baa7ef",
      "tree": "62051d63c47a3df7381cdc294815e79da5ebdc93",
      "parents": [
        "929e27252e8ca69363f81f26af5eaba62cb4c572"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 05 23:51:48 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 05 23:51:48 2011 +0200"
      },
      "message": "fs: export empty_aops\n\nWith the -\u003esync_page() hook gone, we have a few users that\nadd their own static address_space_operations without any\nfunctions defined.\n\nfs/inode.c already has an empty_aops that it uses for init\npurposes. Lets export that and use it in the places where\nan otherwise empty aops was defined.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "ee3dea3549444e6e76d27af48b4929983e6f023c",
      "tree": "73bb5266cc383717139f50d4b077d5301c14cb53",
      "parents": [
        "53d63e6b0dfb95882ec0219ba6bbd50cde423794"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Mar 30 12:17:43 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 05 23:51:37 2011 +0200"
      },
      "message": "ufs: remove unessecary blk_flush_plug\n\nWe already flush the per-process plugging list when context switching,\nso a blk_flush_plug call just before a yield() is not needed.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "884b8267d5f13bdcdc7e675ecbd0dbb0257689bb",
      "tree": "637c734a7466e43d3786968891e746c5b70d6a4b",
      "parents": [
        "d14f5b810b49c7dbd1a01be1c6d3641d46090080",
        "c9ddec74aa950a220cc4caa5215cfc5d886050b7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 05 12:29:25 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 05 12:29:25 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: don\u0027t warn in btrfs_add_orphan\n  Btrfs: fix free space cache when there are pinned extents and clusters V2\n  Btrfs: Fix uninitialized root flags for subvolumes\n  btrfs: clear __GFP_FS flag in the space cache inode\n  Btrfs: fix memory leak in start_transaction()\n  Btrfs: fix memory leak in btrfs_ioctl_start_sync()\n  Btrfs: fix subvol_sem leak in btrfs_rename()\n  Btrfs: Fix oops for defrag with compression turned on\n  Btrfs: fix /proc/mounts info.\n  Btrfs: fix compiler warning in file.c\n"
    },
    {
      "commit": "7da6443aca9be29c6948dcbd636ad50154d0bc0c",
      "tree": "e7489f3d988171c4737f46ce6120411e995ed2ac",
      "parents": [
        "95169535113073993a3ed97ecc21831657f42a80"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Apr 04 17:16:39 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Apr 05 11:07:37 2011 +0300"
      },
      "message": "UBIFS: fix debugging failure in dbg_check_space_info\n\nThis patch fixes a debugging failure with which looks like this:\nUBIFS error (pid 32313): dbg_check_space_info: free space changed from 6019344 to 6022654\n\nThe reason for this failure is described in the comment this patch adds\nto the code. But in short - \u0027c-\u003efreeable_cnt\u0027 may be different before\nand after re-mounting, and this is normal. So the debugging code should\nmake sure that free space calculations do not depend on \u0027c-\u003efreeable_cnt\u0027.\n\nA similar issue has been reported here:\nhttp://lists.infradead.org/pipermail/linux-mtd/2011-April/034647.html\n\nThis patch should fix it.\n\nFor the -stable guys: this patch is only relevant for kernels 2.6.30\nonwards.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nCc: stable@kernel.org [2.6.30+]\n"
    },
    {
      "commit": "95169535113073993a3ed97ecc21831657f42a80",
      "tree": "7f118921eb0d46effe0f9bd4e4d766ead16bd663",
      "parents": [
        "cc6a86b950d69cfe542ee0d0ff30790152936a00"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Apr 01 10:16:17 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Apr 05 10:46:01 2011 +0300"
      },
      "message": "UBIFS: fix error path in dbg_debugfs_init_fs\n\nThe debug interface is substandard and on error returns either\nNULL or an error code packed in the pointer. So using \"IS_ERR\"\nfor the pointers returned by debugfs function is incorrect.\nInstead, we should use IS_ERR_OR_NULL.\n\nThis path is an improved vestion of the original patch from\nPhil Carmody.\n\nReported-by: Phil Carmody \u003cext-phil.2.carmody@nokia.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nAcked-by: Phil Carmody \u003cext-phil.2.carmody@nokia.com\u003e\n"
    },
    {
      "commit": "cc6a86b950d69cfe542ee0d0ff30790152936a00",
      "tree": "209ac625bd17d661bc086f75615c8ac712309981",
      "parents": [
        "81354de3d8691c2dedcc686cd2c167819ff0df10"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Apr 01 10:10:52 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Apr 05 10:46:01 2011 +0300"
      },
      "message": "UBIFS: unify error path dbg_debugfs_init_fs\n\nThis is just a small clean-up patch which simlifies and unifies the\nerror path in the dbg_debugfs_init_fs(). We have common error path\nfor all failure cases in this function except of the very first\ncase. And this patch makes the first failure case use the same\nerror path as the other cases by using the \u0027fname\u0027 and \u0027dent\u0027\nvariables.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nAcked-by: Phil Carmody \u003cext-phil.2.carmody@nokia.com\u003e\n"
    },
    {
      "commit": "81354de3d8691c2dedcc686cd2c167819ff0df10",
      "tree": "0e48973dcf80774eef93575effdb4982689e5909",
      "parents": [
        "c88ac00c5af70c2a0741da14b22cdcf8507ddd92"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Mar 30 11:18:54 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Apr 05 10:45:45 2011 +0300"
      },
      "message": "UBIFS: do not select KALLSYMS_ALL\n\nAll UBIFS needs is to make sure we stacktraces when UBIFS debugging\nis enabled. It is enough to select KALLSYMS for this, KALLSYMS_ALL\nis not necessary. Moreover, Randy Dunlap reported that UBIFS causes\nthe following Kconfig dependency warning:\n\nwarning: (UBIFS_FS_DEBUG \u0026\u0026 LOCKDEP \u0026\u0026 LATENCYTOP) selects KALLSYMS_ALL\nwhich has unmet direct dependencies (DEBUG_KERNEL \u0026\u0026 KALLSYMS)\n\nThe reason is that KALLSYMS_ALL requires DEBUG_KERNEL and KALLSYMS, so\nideally, to select KALLSYMS_ALL we\u0027d need to select DEBUG_KERNEL and\nKALLSYMS first.\n\nThis seems to be too much to select. The easiest way to go is to forget\nabout KALLSYMS_ALL and just select KALLSYMS when UBIFS debugging is\nenabled - that should be enough for stackdumps.\n\nReported-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nAcked-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\n"
    },
    {
      "commit": "c88ac00c5af70c2a0741da14b22cdcf8507ddd92",
      "tree": "5561ff6e47406f58e71eda4700c5a3f2694c6f71",
      "parents": [
        "54acbaaa523ca0bd284a18f67ad213c379679e86"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Mar 29 09:45:21 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Apr 05 10:45:09 2011 +0300"
      },
      "message": "UBIFS: fix assertion warnings\n\nThis patch fixes UBIFS assertion warnings like:\n\nUBIFS assert failed in ubifs_leb_unmap at 135 (pid 29365)\nPid: 29365, comm: integck Tainted: G          I 2.6.37-ubi-2.6+ #34\nCall Trace:\n [\u003cffffffffa047c663\u003e] ubifs_lpt_init+0x95e/0x9ee [ubifs]\n [\u003cffffffffa04623a7\u003e] ubifs_remount_fs+0x2c7/0x762 [ubifs]\n [\u003cffffffff810f066e\u003e] do_remount_sb+0xb6/0x101\n [\u003cffffffff81106ff4\u003e] ? do_mount+0x191/0x78e\n [\u003cffffffff811070bb\u003e] do_mount+0x258/0x78e\n [\u003cffffffff810da1e8\u003e] ? alloc_pages_current+0xa2/0xc5\n [\u003cffffffff81107674\u003e] sys_mount+0x83/0xbd\n [\u003cffffffff81009a12\u003e] system_call_fastpath+0x16/0x1b\n\nThey happen when we re-mount from R/O mode to R/W mode. While\nre-mounting, we write to the media, but we still have the c-\u003ero_mount\nflag set. The fix is very simple - just clear the flag before\nstarting re-mounting R/W.\n\nThese warnings are caused by the following commit:\n2ef13294d29bcfb306e0d360f1b97f37b647b0c0\n\nFor -stable guys: this bug was introduced in 2.6.38, this is materieal\nfor 2.6.38-stable.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nCc: stable@kernel.org [2.6.38]\n"
    },
    {
      "commit": "54acbaaa523ca0bd284a18f67ad213c379679e86",
      "tree": "c6ed0d74270ef84bc605d71feaa09b0511ccece6",
      "parents": [
        "8b229c76765816796eec7ccd428f03bd8de8b525"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Mar 25 19:09:54 2011 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Apr 05 10:40:31 2011 +0300"
      },
      "message": "UBIFS: fix oops on error path in read_pnode\n\nThanks to coverity which spotted that UBIFS will oops if \u0027kmalloc()\u0027\nin \u0027read_pnode()\u0027 fails and we dereference a NULL \u0027pnode\u0027 pointer\nwhen we \u0027goto out\u0027.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "8b229c76765816796eec7ccd428f03bd8de8b525",
      "tree": "fa8e30710d9365d0f26215d0027dd5408ee2d5fc",
      "parents": [
        "0ce790e7d736cedc563e1fb4e998babf5a4dbc3d"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Mar 25 18:33:57 2011 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Apr 05 10:39:40 2011 +0300"
      },
      "message": "UBIFS: do not read flash unnecessarily\n\nThis fix makes the \u0027dbg_check_old_index()\u0027 function return\nimmediately if debugging is disabled, instead of executing\nincorrect \u0027goto out\u0027 which causes UBIFS to:\n\n1. Allocate memory\n2. Read the flash\n\nOn every commit. OK, we do not commit that often, but it is\nstill silly to do unneeded I/O anyway.\n\nCredits to coverity for spotting this silly issue.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "c9ddec74aa950a220cc4caa5215cfc5d886050b7",
      "tree": "b8e40481dfe5f7e3bd749a29c6f0df70f1efd171",
      "parents": [
        "43be21462d8c263e2449b52b23326232fd710bee"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Mar 28 13:43:25 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 05 01:20:24 2011 -0400"
      },
      "message": "Btrfs: don\u0027t warn in btrfs_add_orphan\n\nWhen I moved the orphan adding to btrfs_truncate I missed the fact that during\norphan cleanup we just add the orphan items to the orphan list without going\nthrough btrfs_orphan_add, which results in lots of warnings on mount if you have\nany orphan items that need to be truncated.  Just remove this warning since it\u0027s\nok, this will allow all of the normal space accounting take place.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "43be21462d8c263e2449b52b23326232fd710bee",
      "tree": "096a8cf240ffa7aa83625245ccdba08970e46612",
      "parents": [
        "08fe4db170b4193603d9d31f40ebaf652d07ac9c"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Fri Apr 01 14:55:00 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 05 01:20:24 2011 -0400"
      },
      "message": "Btrfs: fix free space cache when there are pinned extents and clusters V2\n\nI noticed a huge problem with the free space cache that was presenting\nas an early ENOSPC.  Turns out when writing the free space cache out I\nforgot to take into account pinned extents and more importantly\nclusters.  This would result in us leaking free space everytime we\nunmounted the filesystem and remounted it.\n\nI fix this by making sure to check and see if the current block group\nhas a cluster and writing out any entries that are in the cluster to the\ncache, as well as writing any pinned extents we currently have to the\ncache since those will be available for us to use the next time the fs\nmounts.\n\nThis patch also adds a check to the end of load_free_space_cache to make\nsure we got the right amount of free space cache, and if not make sure\nto clear the cache and re-cache the old fashioned way.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "08fe4db170b4193603d9d31f40ebaf652d07ac9c",
      "tree": "2d0d2abe40b77266600653e399d4973a679716a9",
      "parents": [
        "adae52b94e18afa1f84fab67df2a8a872c2f5533"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Mar 28 02:01:25 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 05 01:20:24 2011 -0400"
      },
      "message": "Btrfs: Fix uninitialized root flags for subvolumes\n\nroot_item-\u003eflags and root_item-\u003ebyte_limit are not initialized when\na subvolume is created. This bug is not revealed until we added\nreadonly snapshot support - now you mount a btrfs filesystem and you\nmay find the subvolumes in it are readonly.\n\nTo work around this problem, we steal a bit from root_item-\u003einode_item-\u003eflags,\nand use it to indicate if those fields have been properly initialized.\nWhen we read a tree root from disk, we check if the bit is set, and if\nnot we\u0027ll set the flag and initialize the two fields of the root item.\n\nReported-by: Andreas Philipp \u003cphilipp.andreas@gmail.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nTested-by: Andreas Philipp \u003cphilipp.andreas@gmail.com\u003e\ncc: stable@kernel.org\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "adae52b94e18afa1f84fab67df2a8a872c2f5533",
      "tree": "fb9259b9eac14ac950d127faf1788392081010b0",
      "parents": [
        "6e8df2ae89ab37730c0062782f844c66ecfc97a7"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Thu Mar 31 09:43:23 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 05 01:19:43 2011 -0400"
      },
      "message": "btrfs: clear __GFP_FS flag in the space cache inode\n\nthe object id of the space cache inode\u0027s key is allocated from the relative\nroot, just like the regular file. So we can\u0027t identify space cache inode by\nchecking the object id of the inode\u0027s key, and we have to clear __GFP_FS flag\nat the time we look up the space cache inode.\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "6e8df2ae89ab37730c0062782f844c66ecfc97a7",
      "tree": "4172619b01d817440d43807da8baec77a14d39d2",
      "parents": [
        "8b2b2d3cbefb605501342adaf64d601b545ed154"
      ],
      "author": {
        "name": "Yoshinori Sano",
        "email": "yoshinori.sano@gmail.com",
        "time": "Sun Apr 03 12:31:28 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 05 01:19:43 2011 -0400"
      },
      "message": "Btrfs: fix memory leak in start_transaction()\n\nFree btrfs_trans_handle when join_transaction() fails\nin start_transaction()\n\nSigned-off-by: Yoshinori Sano \u003cyoshinori.sano@gmail.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "8b2b2d3cbefb605501342adaf64d601b545ed154",
      "tree": "244e724c20bbdc639f06a7a59a108b1eedd55f10",
      "parents": [
        "b44c59a80ded004e1a82712e5f9e17b131c03221"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Mon Apr 04 01:52:13 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 05 01:19:42 2011 -0400"
      },
      "message": "Btrfs: fix memory leak in btrfs_ioctl_start_sync()\n\nCall btrfs_end_transaction() if btrfs_commit_transaction_async() fails.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "b44c59a80ded004e1a82712e5f9e17b131c03221",
      "tree": "36588193bf5cc91d80d9d8376d5bad78f2babd0c",
      "parents": [
        "fe3f566cd19bb6d787c92b2e202c85f929abf3ac"
      ],
      "author": {
        "name": "Johann Lombardi",
        "email": "johann@whamcloud.com",
        "time": "Thu Mar 31 13:23:47 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 05 01:19:42 2011 -0400"
      },
      "message": "Btrfs: fix subvol_sem leak in btrfs_rename()\n\nbtrfs_rename() does not release the subvol_sem if the transaction failed to start.\n\nSigned-off-by: Johann Lombardi \u003cjohann@whamcloud.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "fe3f566cd19bb6d787c92b2e202c85f929abf3ac",
      "tree": "216c33bb0ed94e7791141939ea763620576d82b0",
      "parents": [
        "200da64e0b039f873f0f20481e6a7d056e7cc6c9"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Mar 28 08:30:38 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 05 01:19:42 2011 -0400"
      },
      "message": "Btrfs: Fix oops for defrag with compression turned on\n\nWhen we defrag a file, whose size can be fit into an inline extent,\nwith compression enabled, the compress type is set to be\nfs_info-\u003ecompress_type, which is 0 if the btrfs filesystem is mounted\nwithout compress option. This leads to oops.\n\nReported-by: Daniel Blueman \u003cdaniel.blueman@gmail.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "200da64e0b039f873f0f20481e6a7d056e7cc6c9",
      "tree": "11cd911aa441efdde26260b72a642daef0fd61f0",
      "parents": [
        "c9149235a42ab93914434fff45c44b45023363f3"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Thu Mar 31 00:44:29 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 05 01:19:41 2011 -0400"
      },
      "message": "Btrfs: fix /proc/mounts info.\n\nSome mount options are not displayed by /proc/mounts.\nThis patch displays the option such as compress_type by /proc/mounts.\n\nEx.\n  [before]\n    $ mount | grep sdc2\n    /dev/sdc2 on /test12 type btrfs (rw,space_cache,compress\u003dlzo)\n    $ cat /proc/mounts | grep sdc2\n    /dev/sdc2 /test12 btrfs rw,relatime,compress 0 0\n\n  [after]\n    $ mount | grep sdc2\n    /dev/sdc2 on /test12 type btrfs (rw,space_cache,compress\u003dlzo)\n    $ cat /proc/mounts | grep sdc2\n    /dev/sdc2 /test12 btrfs rw,relatime,compress\u003dlzo,space_cache 0 0\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "c9149235a42ab93914434fff45c44b45023363f3",
      "tree": "827035f0710a01bf35c5c365387f650addfe647f",
      "parents": [
        "d9d04879321af570ea7285c6dad92d9c3cd108a1"
      ],
      "author": {
        "name": "Tsutomu Itoh",
        "email": "t-itoh@jp.fujitsu.com",
        "time": "Wed Mar 30 00:57:23 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Apr 05 01:19:41 2011 -0400"
      },
      "message": "Btrfs: fix compiler warning in file.c\n\nWhile compiling Btrfs, I got following messages:\n\n  CC [M]  fs/btrfs/file.o\nfs/btrfs/file.c: In function \u0027__btrfs_buffered_write\u0027:\nfs/btrfs/file.c:909: warning: \u0027ret\u0027 may be used uninitialized in this function\n  CC [M]  fs/btrfs/tree-defrag.o\n\nThis patch fixes compiler warning.\n\nSigned-off-by: Tsutomu Itoh \u003ct-itoh@jp.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "46e4690bbd9a4f8d9e7c4f34e34b48f703ad47e0",
      "tree": "94d800c75ed4a9e11cd5301e171d301b266d4032",
      "parents": [
        "5b41395fcc0265fc9f193aef9df39ce49d64677c"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon Apr 04 16:00:49 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 04 16:00:49 2011 -0400"
      },
      "message": "ext4: fix a double free in ext4_register_li_request\n\nIn ext4_register_li_request, we malloc a ext4_li_request and\ninserts it into ext4_li_info-\u003eli_request_list. In case of any\nerror later, we free it in the end.  But if we have some error\nin ext4_run_lazyinit_thread, the whole li_request_list will be\ndropped and freed in it. So we will double free this ext4_li_request.\n\nThis patch just sets elr to NULL after it is inserted to the list\nso that the latter kfree won\u0027t double free it.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nReviewed-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "5b41395fcc0265fc9f193aef9df39ce49d64677c",
      "tree": "3e9ce0bc590399f78808fce8279d04c61301beb8",
      "parents": [
        "21f976975cbecbdaf23ceeacc1cab2b1c05a028e"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Mon Apr 04 15:40:24 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 04 15:40:24 2011 -0400"
      },
      "message": "ext4: fix credits computing for indirect mapped files\n\nWhen writing a contiguous set of blocks, two indirect blocks could be\nneeded depending on how the blocks are aligned, so we need to increase\nthe number of credits needed by one.\n\n[ Also fixed a another bug which could further underestimate the\n  number of journal credits needed by 1; the code was using integer\n  division instead of DIV_ROUND_UP() -- tytso]\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "21f976975cbecbdaf23ceeacc1cab2b1c05a028e",
      "tree": "3040b533bf50d58e23c3c207001d89b29846df37",
      "parents": [
        "50f689af019b19f9b9a39be782c21b6f52b1615a"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Apr 04 15:33:39 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 04 15:33:39 2011 -0400"
      },
      "message": "ext4: remove unnecessary [cm]time update of quota file\n\nIt is not necessary to update [cm]time of quota file on each quota\nfile write and it wastes journal space and IO throughput with inode\nwrites. So just remove the updating from ext4_quota_write() and only\nupdate times when quotas are being turned off. Userspace cannot get\nanything reliable from quota files while they are used by the kernel\nanyway.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "50f689af019b19f9b9a39be782c21b6f52b1615a",
      "tree": "40b80bb3acc51ebfba7199c0fadff25da2ee6d51",
      "parents": [
        "0ce790e7d736cedc563e1fb4e998babf5a4dbc3d"
      ],
      "author": {
        "name": "Zhu Yanhai",
        "email": "zhu.yanhai@gmail.com",
        "time": "Mon Apr 04 12:58:12 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 04 12:58:12 2011 -0400"
      },
      "message": "jbd2: move bdget out of critical section\n\nbdget() should not be called when we hold spinlocks since\nit might sleep.\n\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Zhu Yanhai \u003cgaoyang.zyh@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b03f24567ce7caf2420b8be4c6eb74c191d59a91",
      "tree": "f0337cbc006ff57bdaed3d48d60d0054d23afb74",
      "parents": [
        "523334ba508a8baaf5fc9f15fbad9ed04f334f48"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Mar 31 18:36:52 2011 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Apr 01 00:23:46 2011 +0200"
      },
      "message": "quota: Don\u0027t write quota info in dquot_commit()\n\nThere\u0027s no reason to write quota info in dquot_commit(). The writing is a\nrelict from the old days when we didn\u0027t have dquot_acquire() and\ndquot_release() and thus dquot_commit() could have created / removed quota\nstructures from the file. These days dquot_commit() only updates usage counters\n/ limits in quota structure and thus there\u0027s no need to write quota info.\n\nThis also fixes an issue with journaling filesystem which didn\u0027t reserve\nenough space in the transaction for write of quota info (it could have been\ndirty at the time of dquot_commit() because of a race with other operation\nchanging it).\n\nCC: stable@kernel.org\nReported-and-tested-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "89b3600ccfb01aed6873bc499442fc0bed00bbdd",
      "tree": "d1aff97d157bb06597cef080ebd9fc06a8aec6c6",
      "parents": [
        "0ce790e7d736cedc563e1fb4e998babf5a4dbc3d"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 29 07:09:20 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed Mar 30 23:34:20 2011 -0500"
      },
      "message": "xfs: fix unreferenced var error in xfs_buf.c\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "1821df040ac3cd6a57518739f345da6d50ea9d3f"
}
