)]}'
{
  "log": [
    {
      "commit": "721cc5b4a637c20241562487ff49ee308a3948e0",
      "tree": "2f65b8c85830d778468818bf69dfc37b5d8adf72",
      "parents": [
        "19d00ddd4343c5d83874f81c61d9af1faae913c5"
      ],
      "author": {
        "name": "Jaegeuk Kim",
        "email": "jaegeuk@kernel.org",
        "time": "Thu Jul 28 15:38:41 2016 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Fri Aug 05 22:23:45 2016 -0500"
      },
      "message": "f2fs: sync with upstream\n\n https://kernel.googlesource.com/pub/scm/linux/kernel/git/jaegeuk/f2fs-stable/+/linux-3.4.y\n\n last commit: fscrypto: no support for v3.4\n\nChange-Id: Id300fb1564cc2d91a9a7982b823b42cbe431055e\n"
    },
    {
      "commit": "3bc527393379fcd740cc66c700da808abdbf5a5d",
      "tree": "28ccf85853beefbb12a446f66f2cde64eaf5f8d8",
      "parents": [
        "0cf007169665bc6c8eeca0e9089ef0e805c2ac42"
      ],
      "author": {
        "name": "Ivan Grinko",
        "email": "iivanich@gmail.com",
        "time": "Thu Mar 31 13:55:55 2016 +0300"
      },
      "committer": {
        "name": "William Bellavance",
        "email": "flintman@flintmancomputers.com",
        "time": "Tue May 17 07:52:48 2016 -0400"
      },
      "message": "f2fs: catch up to v4.4-rc1\n\nThe last patch is:\n\ncommit beaa57dd986d4f398728c060692fc2452895cfd8\nAuthor: Chao Yu \u003cchao2.yu@samsung.com\u003e\nDate:   Thu Oct 22 18:24:12 2015 +0800\n\n    f2fs: fix to skip shrinking extent nodes\n\n    In f2fs_shrink_extent_tree we should stop shrink flow if we have already\n    shrunk enough nodes in extent cache.\n\nChange-Id: I9a1f4463b1e4418d34473cde5181bed9ff471953\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk@kernel.org\u003e\n"
    },
    {
      "commit": "4fae7dd0a73fcf96e90c09014794acbef7b6cbbc",
      "tree": "497b33f5016cd88e509aa54c46381ea5edecc4b0",
      "parents": [
        "a65354abd4dadb8a4b891d085c07836ddd2ca826"
      ],
      "author": {
        "name": "Jaegeuk Kim",
        "email": "jaegeuk@kernel.org",
        "time": "Thu Nov 12 10:23:18 2015 -0600"
      },
      "committer": {
        "name": "flintman",
        "email": "flintman@flintmancomputers.com",
        "time": "Thu Nov 12 19:44:29 2015 -0500"
      },
      "message": "f2fs: sync to upstream\n\nhttps://git.kernel.org/cgit/linux/kernel/git/jaegeuk/f2fs.git/commit/?h\u003dlinux-3.4\u0026id\u003d994642cfdbc08f1eda7ff48504f779cbcc9e3067\n\nChange-Id: I5beb230d4a5dc3ef3913f5bfc4c28b39bcb755b1\n"
    },
    {
      "commit": "3a1c9bd4d0466de4803b53914f69c7438afeb466",
      "tree": "7161ce22a10dabf3e903ca55140821191ae7fa94",
      "parents": [
        "f92cc7fda58db7598db0eb490d2dd31f65d4ff02"
      ],
      "author": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Mon Mar 02 21:37:25 2015 -0600"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Mon Mar 02 21:37:25 2015 -0600"
      },
      "message": "Revert \"msm: perf: Fix standalone compilation\"\n\nThis reverts commit 6eee052d52d555f00d6b72e35bd752942221afa1.\n"
    },
    {
      "commit": "b0d3905f333cd7f76617c354e40af7f65c254283",
      "tree": "bc54582ab42c21ec343d2dede9ffbf735fc0423b",
      "parents": [
        "b0e1b91999e3c60b1adf93f7e9c34db980b3e812"
      ],
      "author": {
        "name": "Bryan Huntsman",
        "email": "bryanh@codeaurora.org",
        "time": "Mon Jun 03 18:48:08 2013 -0700"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Mon Mar 02 21:14:10 2015 -0600"
      },
      "message": "msm: fix in-tree compilation for perf_trace_counters\n\nIn-tree compilation for arch/arm/mach-msm/perf_trace_counters.c was\nhitting this error:\n\n    In file included from arch/arm/mach-msm/perf_trace_counters.h:127:0,\n                     from arch/arm/mach-msm/perf_trace_counters.c:14:\n    include/trace/define_trace.h:79:43: fatal error: ./perf_trace_counters.h: No such file or directory\n\nInstructions for TRACE_INCLUDE_FILE in include/trace/define_trace.h say\n\"the path is relative to define_trace.h, not the file including it\".\nFix in-tree compilation by making the path relative to define_trace.h.\n\nSigned-off-by: Bryan Huntsman \u003cbryanh@codeaurora.org\u003e\n"
    },
    {
      "commit": "b0e1b91999e3c60b1adf93f7e9c34db980b3e812",
      "tree": "c542ec66a91e69da4abb626bff38184322c67727",
      "parents": [
        "1e83f6864febc1027394ed38e7a24af87a912528",
        "b4d27f2f2e68afea0fc828ba42f41b3efa231e42"
      ],
      "author": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Mon Mar 02 21:12:39 2015 -0600"
      },
      "committer": {
        "name": "Nick Reuter",
        "email": "nreuter85@gmail.com",
        "time": "Mon Mar 02 21:13:53 2015 -0600"
      },
      "message": "Merge remote-tracking branch \u0027cm/cm-12.0\u0027 into HEAD\n\nChange-Id: Ibcea3bd8608b82692494e87b5ff256a254807520\n"
    },
    {
      "commit": "e0cea84ef8c3cf1d417c952633d6a4a07c798709",
      "tree": "a57febee5c9aec375c68f3904bcb3599514c32a9",
      "parents": [
        "df20f77453c33fab57d3a2ed67a5723dd27f36d2"
      ],
      "author": {
        "name": "Jaegeuk Kim",
        "email": "jaegeuk@kernel.org",
        "time": "Wed Feb 18 20:43:11 2015 -0600"
      },
      "committer": {
        "name": "flintman",
        "email": "flintman@flintmancomputers.com",
        "time": "Mon Feb 23 10:53:57 2015 -0500"
      },
      "message": "f2fs: update from git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git\n\nUpdated as of commit b3b06a14a26af368dd58f9265cf5a9927067b768\n\nChange-Id: I3dfbbf52d069a397de662058bb72bf96c6393bc6\n"
    },
    {
      "commit": "9f64de73b8363c4f104af4782f5e9b932ccc87a2",
      "tree": "128ce3c214e3b972f19a50c840405226556ed388",
      "parents": [
        "0b14d477f193ec2af926b1e17cb759bbedbe208c"
      ],
      "author": {
        "name": "Chao Yu",
        "email": "chao2.yu@samsung.com",
        "time": "Thu Jul 31 21:11:22 2014 +0800"
      },
      "committer": {
        "name": "flintman",
        "email": "flintman@flintmancomputers.com",
        "time": "Sat Jan 24 11:39:07 2015 -0500"
      },
      "message": "f2fs: add tracepoint for f2fs_direct_IO\n\nThis patch adds a tracepoint for f2fs_direct_IO.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk@kernel.org\u003e\n\nConflicts:\n\tfs/f2fs/data.c\n\nChange-Id: I4153a8bd8bd5fb46c42c2917ec3405e3b4a4dce8\n"
    },
    {
      "commit": "90421d2b5a3cd5f96dd6658434a02532a411c969",
      "tree": "2ee68425819ae94e6e3eb81455185741941d592a",
      "parents": [
        "1e3c2db7ff60a5005f21fa315986d18d0d43b62a"
      ],
      "author": {
        "name": "Jaegeuk Kim",
        "email": "jaegeuk@kernel.org",
        "time": "Fri Jul 25 17:46:10 2014 -0700"
      },
      "committer": {
        "name": "flintman",
        "email": "flintman@flintmancomputers.com",
        "time": "Sat Jan 24 11:39:03 2015 -0500"
      },
      "message": "f2fs: add tracepoint for f2fs_issue_flush\n\nThis patch adds a tracepoint for f2fs_issue_flush.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk@kernel.org\u003e\n"
    },
    {
      "commit": "97e8a34931f1549b4f0bf66a2a171a9177020d25",
      "tree": "9e8b8e428f7ac85d7a4a6668131689163f500d76",
      "parents": [
        "30446592ff797f220ee14aa523646e51f66360ea"
      ],
      "author": {
        "name": "Dan Pasanen",
        "email": "dan.pasanen@gmail.com",
        "time": "Mon Aug 25 19:11:31 2014 -0500"
      },
      "committer": {
        "name": "flintman",
        "email": "flintman@flintmancomputers.com",
        "time": "Sat Jan 24 11:38:11 2015 -0500"
      },
      "message": "Revert \"f2fs: resync with upstream 3.4 branch (forced update)\"\n\nThis reverts commit 6a1be380100e402aacca6a0a3ac829c059768d79.\n"
    },
    {
      "commit": "30446592ff797f220ee14aa523646e51f66360ea",
      "tree": "e1ad52299dbe6d463fe68b5eff32a5c8b9c20757",
      "parents": [
        "f3f030d1bcfad3165cb8b19709345bb05d1e81bf"
      ],
      "author": {
        "name": "Evan McClain",
        "email": "aeroevan@gmail.com",
        "time": "Fri Aug 08 08:58:58 2014 -0400"
      },
      "committer": {
        "name": "flintman",
        "email": "flintman@flintmancomputers.com",
        "time": "Sat Jan 24 11:37:57 2015 -0500"
      },
      "message": "f2fs: resync with upstream 3.4 branch (forced update)\n\nChange-Id: I0307382d983e8ef806cfdfe57dcde500fd060995\n"
    },
    {
      "commit": "f3f030d1bcfad3165cb8b19709345bb05d1e81bf",
      "tree": "9e8b8e428f7ac85d7a4a6668131689163f500d76",
      "parents": [
        "5d8bad1c6711707e2d373e43d93b39c92228b59f"
      ],
      "author": {
        "name": "Evan McClain",
        "email": "aeroevan@gmail.com",
        "time": "Thu Jul 17 21:16:35 2014 -0400"
      },
      "committer": {
        "name": "flintman",
        "email": "flintman@flintmancomputers.com",
        "time": "Sat Jan 24 11:37:51 2015 -0500"
      },
      "message": "f2fs: Update to proper 3.4 support\n\nhttp://git.kernel.org/cgit/linux/kernel/git/jaegeuk/f2fs.git/log/?h\u003dlinux-3.4\n\nChange-Id: Ica17871e847d4807c7ef24ea77dd4bff5451f5c7\n\nConflicts:\n\tfs/f2fs/f2fs.h\n"
    },
    {
      "commit": "12d38fc533c4c61b2d5c2b2bae2cc3b1806a19da",
      "tree": "cb3c6a4ac1614e1f63d7fe07df47a26327f24108",
      "parents": [
        "b4d854945565d7e28a2e449edcf627ec602ace46"
      ],
      "author": {
        "name": "Chao Yu",
        "email": "chao2.yu@samsung.com",
        "time": "Tue May 06 16:53:08 2014 +0800"
      },
      "committer": {
        "name": "flintman",
        "email": "flintman@flintmancomputers.com",
        "time": "Sat Jan 24 11:37:32 2015 -0500"
      },
      "message": "f2fs: add a tracepoint for f2fs_read_data_page\n\nThis patch adds a tracepoint for f2fs_read_data_page to trace when page is\nreaded by user.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n"
    },
    {
      "commit": "b4d854945565d7e28a2e449edcf627ec602ace46",
      "tree": "1fb534ff18ae6722d3b7dedd81b6c904d71ab6f4",
      "parents": [
        "327cb6d992db57e0a3d35b3ddc758d6f9e185f08"
      ],
      "author": {
        "name": "Chao Yu",
        "email": "chao2.yu@samsung.com",
        "time": "Tue May 06 16:51:24 2014 +0800"
      },
      "committer": {
        "name": "flintman",
        "email": "flintman@flintmancomputers.com",
        "time": "Sat Jan 24 11:37:31 2015 -0500"
      },
      "message": "f2fs: add a tracepoint for f2fs_write_{meta,node,data}_pages\n\nThis patch adds a tracepoint for f2fs_write_{meta,node,data}_pages to trace when\npages are fsyncing/flushing.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n"
    },
    {
      "commit": "327cb6d992db57e0a3d35b3ddc758d6f9e185f08",
      "tree": "f66b17e7d8d2dbb0f07e8a47550af504d5d8f2a4",
      "parents": [
        "3f1ac6d5a758a5def38e6ba266dd89903e2f12e7"
      ],
      "author": {
        "name": "Chao Yu",
        "email": "chao2.yu@samsung.com",
        "time": "Tue May 06 16:48:26 2014 +0800"
      },
      "committer": {
        "name": "flintman",
        "email": "flintman@flintmancomputers.com",
        "time": "Sat Jan 24 11:37:30 2015 -0500"
      },
      "message": "f2fs: add a tracepoint for f2fs_write_{meta,node,data}_page\n\nThis patch adds a tracepoint for f2fs_write_{meta,node,data}_page to trace when\npage is writting out.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n"
    },
    {
      "commit": "3f1ac6d5a758a5def38e6ba266dd89903e2f12e7",
      "tree": "12bed9278e39e5ec416ccd77037531cd9c0e847c",
      "parents": [
        "df7a596a1ef7a871c2c2803b281701cdc6c7c2fd"
      ],
      "author": {
        "name": "Chao Yu",
        "email": "chao2.yu@samsung.com",
        "time": "Tue May 06 16:47:23 2014 +0800"
      },
      "committer": {
        "name": "flintman",
        "email": "flintman@flintmancomputers.com",
        "time": "Sat Jan 24 11:37:19 2015 -0500"
      },
      "message": "f2fs: add a tracepoint for f2fs_write_end\n\nThis patch adds a tracepoint for f2fs_write_end to trace write op of user.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n"
    },
    {
      "commit": "df7a596a1ef7a871c2c2803b281701cdc6c7c2fd",
      "tree": "a8ad3dc8c8be00fcdc083d0ffc841ad8dc5b763c",
      "parents": [
        "29a0d20f9a7763bea15134497525890cda9730b3"
      ],
      "author": {
        "name": "Chao Yu",
        "email": "chao2.yu@samsung.com",
        "time": "Tue May 06 16:46:04 2014 +0800"
      },
      "committer": {
        "name": "flintman",
        "email": "flintman@flintmancomputers.com",
        "time": "Sat Jan 24 11:37:00 2015 -0500"
      },
      "message": "f2fs: add a tracepoint for f2fs_write_begin\n\nThis patch adds a tracepoint for f2fs_write_begin to trace write op of user.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n"
    },
    {
      "commit": "b1a94e804ff55351101ea9ae7797c874ab92ef42",
      "tree": "3108bedfcc1eb99c4775bfc92ec99a09d3d9b06f",
      "parents": [
        "8005ecc7ea4f6004f217a39425a241ac8a63633c"
      ],
      "author": {
        "name": "Changman Lee",
        "email": "cm224.lee@samsung.com",
        "time": "Fri Nov 15 10:42:51 2013 +0900"
      },
      "committer": {
        "name": "flintman",
        "email": "flintman@flintmancomputers.com",
        "time": "Sat Jan 24 11:06:08 2015 -0500"
      },
      "message": "f2fs: Update to version in 3.14\n\nf2fs: introduce __find_rev_next(_zero)_bit\n\nWhen f2fs_set_bit is used, in a byte MSB and LSB is reversed,\nin that case we can use __find_rev_next_bit or __find_rev_next_zero_bit.\n\nSigned-off-by: Changman Lee \u003ccm224.lee@samsung.com\u003e\n[Jaegeuk Kim: change the function names]\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: improve searching speed of __next_free_blkoff\n\nTo find a zero bit using the result of OR operation between ckpt_valid_map\nand cur_valid_map is more fast than find a zero bit in each bitmap.\n\nSigned-off-by: Changman Lee \u003ccm224.lee@samsung.com\u003e\n[Jaegeuk Kim: adjust changed function name]\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: add a slab cache entry for small discards\n\nThis patch adds a slab cache entry for small discards.\n\nEach entry consists of:\n\nstruct discard_entry {\n\tstruct list_head list;\t/* list head */\n\tblock_t blkaddr;\t/* block address to be discarded */\n\tint len;\t\t/* # of consecutive blocks of the discard */\n};\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: add key functions for small discards\n\nThis patch adds key functions to activate the small discard feature.\n\nNote that this procedure is conducted during the checkpoint only.\n\nIn flush_sit_entries(), when a new dirty sit entry is flushed, f2fs calls\nadd_discard_addrs() which searches candidates to be discarded.\nThe candidates should be marked *invalidated* and also previous checkpoint\nrecognizes it as *valid*.\n\nAt the end of a checkpoint procedure, f2fs throws discards based on the\ndiscard entry list.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: add a sysfs entry to control max_discards\n\nIf frequent small discards are issued to the device, the performance would\nbe degraded significantly.\nSo, this patch adds a sysfs entry to control the number of discards to be\nissued during a checkpoint procedure.\n\nBy default, f2fs does not issue any small discards, which means max_discards\nis zero.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: introduce f2fs_issue_discard() to clean up\n\nChange log from v1:\n o fix 32bit drops reported by Dan Carpenter\n\nThis patch adds f2fs_issue_discard() to clean up blkdev_issue_discard() flows.\n\nDan carpenter reported:\n\"block_t is a 32 bit type and sector_t is a 64 bit type.  The upper 32\nbits of the sector_t are not used because the shift will wrap.\"\n\nBug-Reported-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: add a tracepoint for f2fs_issue_discard\n\nThis patch adds a tracepoint for f2fs_issue_discard.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: use f2fs_put_page to release page for uniform style\n\nWe should use f2fs_put_page to release page for uniform style of f2fs code.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: clean up the do_submit_bio flow\n\nThis patch introduces PAGE_TYPE_OF_BIO() and cleans up do_submit_bio() with it.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: use sbi-\u003ewrite_mutex for write bios\n\nThis patch removes an unnecessary semaphore (i.e., sbi-\u003ebio_sem).\nThere is no reason to use the semaphore when f2fs submits read and write IOs.\nInstead, let\u0027s use a write mutex and cover the sbi-\u003ebio[] by the lock.\n\nChange log from v1:\n o split write_mutex suggested by Chao Yu\n\nChao described,\n\"All DATA/NODE/META bio buffers in superblock is protected by\n\u0027sbi-\u003ewrite_mutex\u0027, but each bio buffer area is independent, So we\nshould split write_mutex to three for DATA/NODE/META.\"\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: disable the extent cache ops on high fragmented files\n\nThe f2fs manages an extent cache to search a number of consecutive data blocks\nvery quickly.\n\nHowever it conducts unnecessary cache operations if the file is highly\nfragmented with no valid extent cache.\n\nIn such the case, we don\u0027t need to handle the extent cache, but just can disable\nthe cache facility.\n\nNevertheless, this patch gives one more chance to enable the extent cache.\n\nFor example,\n1. create a file\n2. write data sequentially which produces a large valid extent cache\n3. update some data, resulting in a fragmented extent\n4. if the fragmented extent is too small, then drop extent cache\n5. close the file\n\n6. open the file again\n7. give another chance to make a new extent cache\n8. write data sequentially again which creates another big extent cache.\n...\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: introduce a bio array for per-page write bios\n\nThe f2fs has three bio types, NODE, DATA, and META, and manages some data\nstructures per each bio types.\n\nThe codes are a little bit messy, thus, this patch introduces a bio array\nwhich groups individual data structures as follows.\n\nstruct f2fs_bio_info {\n\tstruct bio *bio;\t\t/* bios to merge */\n\tsector_t last_block_in_bio;\t/* last block number */\n\tstruct mutex io_mutex;\t\t/* mutex for bio */\n};\n\nstruct f2fs_sb_info {\n\t...\n\tstruct f2fs_bio_info write_io[NR_PAGE_TYPE];\t/* for write bios */\n\t...\n};\n\nThe code changes from this new data structure are trivial.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: convert remove_inode_page to void\n\nSigned-off-by: Gu Zheng \u003cguz.fnst@cn.fujitsu.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: convert dev_valid_block_count to void\n\nSigned-off-by: Gu Zheng \u003cguz.fnst@cn.fujitsu.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: convert inc/dec_valid_node_count to inc/dec one count\n\nSigned-off-by: Gu Zheng \u003cguz.fnst@cn.fujitsu.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: simplify write_orphan_inodes for better readable\n\nSimplify write_orphan_inodes for better readable. Because we hold the\norphan_inode_mutex, so it\u0027s safe to use list_for_each_entry instead of\nlist_for_each_safe.\n\nSigned-off-by: Gu Zheng \u003cguz.fnst@cn.fujitsu.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: move the list_head initialization into the lock protection region\n\nSigned-off-by: Gu Zheng \u003cguz.fnst@cn.fujitsu.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: add a new function to support for merging contiguous read\n\nFor better read performance, we add a new function to support for merging\ncontiguous read as the one for write.\n\nv1--\u003ev2:\n o add declarations here as Gu Zheng suggested.\n o use new structure f2fs_bio_info introduced by Jaegeuk Kim.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nAcked-by: Gu Zheng \u003cguz.fnst@cn.fujitsu.com\u003e\n\nf2fs: merge read IOs at ra_nat_pages()\n\nChange log from v1:\n  o add mark_page_accessed() not to reclaim the nat pages.\n\nThis patch changes the policy of submitting read bios at ra_nat_pages.\n\nPreviously, f2fs submits small read bios with block plugging.\nBut, with this patch, f2fs itself merges read bios first and then submits a\nlarge bio, which can reduce the bio handling overheads.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: simplify IS_DATASEG and IS_NODESEG macro\n\nIt is not efficient comparing each segment type to find node or data.\n\nSigned-off-by: Changman Lee \u003ccm224.lee@samsung.com\u003e\n[Jaegeuk Kim: remove unnecessary white spaces]\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: adds a tracepoint for submit_read_page\n\nThis patch adds a tracepoint for submit_read_page.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\n[Jaegeuk Kim: integrate tracepoints of f2fs_submit_read(_write)_page]\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: adds a tracepoint for f2fs_submit_read_bio\n\nThis patch adds a tracepoint for f2fs_submit_read_bio.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\n[Jaegeuk Kim: integrate tracepoints of f2fs_submit_read(_write)_bio]\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: read contiguous sit entry pages by merging for mount performance\n\nPreviously we read sit entries page one by one, this method lost the chance\nof reading contiguous page together. So we read pages as contiguous as\npossible for better mount performance.\n\nchange log:\n o merge judgements/use \u0027Continue\u0027 or \u0027Break\u0027 instead of \u0027Goto\u0027 as Gu Zheng\n   suggested.\n o add mark_page_accessed() before release page to delay VM reclaiming.\n o remove \u0027*order\u0027 for simplification of function as Jaegeuk Kim suggested.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\n[Jaegeuk Kim: fix a bug on the block address calculation]\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: avoid lock debugging overhead\n\nIf CONFIG_F2FS_CHECK_FS is unset, we don\u0027t need to add any debugging overhead.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: add a new function: f2fs_reserve_block()\n\nAdd the function f2fs_reserve_block() to easily reserve new blocks, and\nuse it to clean up more codes.\n\nSigned-off-by: Huajun Li \u003chuajun.li@intel.com\u003e\nSigned-off-by: Haicheng Li \u003chaicheng.li@linux.intel.com\u003e\nSigned-off-by: Weihong Xu \u003cweihong.xu@intel.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: add detailed information of bio types in the tracepoints\n\nThis patch inserts information of bio types in more detail.\nSo, we can now see REQ_META and REQ_PRIO too.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: send REQ_META or REQ_PRIO when reading meta area\n\nLet\u0027s send REQ_META or REQ_PRIO when reading meta area such as NAT/SIT\netc.\n\nSigned-off-by: Changman Lee \u003ccm224.lee@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: add flags and helpers to support inline data\n\nAdd new inode flags F2FS_INLINE_DATA and FI_INLINE_DATA to indicate\nwhether the inode has inline data.\n\nInline data makes use of inode block\u0027s data indices region to save small\nfile. Currently there are 923 data indices in an inode block. Since\ninline xattr has made use of the last 50 indices to save its data, there\nare 873 indices left which can be used for inline data. When\nFI_INLINE_DATA is set, the layout of inode block\u0027s indices region is\nlike below:\n\n+-----------------+\n|                 | Reserved. reserve_new_block() will make use of\n| i_addr[0]       | i_addr[0] when we need to reserve a new data block\n|                 | to convert inline data into regular one\u0027s.\n|-----------------|\n|                 | Used by inline data. A file whose size is less than\n| i_addr[1~872]   | 3488 bytes(~3.4k) and doesn\u0027t reserve extra\n|                 | blocks by fallocate() can be saved here.\n|-----------------|\n|                 |\n| i_addr[873~922] | Reserved for inline xattr\n|                 |\n+-----------------+\n\nSigned-off-by: Haicheng Li \u003chaicheng.li@linux.intel.com\u003e\nSigned-off-by: Huajun Li \u003chuajun.li@intel.com\u003e\nSigned-off-by: Weihong Xu \u003cweihong.xu@intel.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: add a new mount option: inline_data\n\nAdd a mount option: inline_data. If the mount option is set,\ndata of New created small files can be stored in their inode.\n\nSigned-off-by: Huajun Li \u003chuajun.li@intel.com\u003e\nSigned-off-by: Haicheng Li \u003chaicheng.li@linux.intel.com\u003e\nSigned-off-by: Weihong Xu \u003cweihong.xu@intel.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: remove unnecessary return value\n\nLet\u0027s remove the unnecessary return value.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: fix a potential out of range issue\n\nFix a potential out of range issue introduced by commit:\n22fb72225a\nf2fs: simplify write_orphan_inodes for better readable\n\nSigned-off-by: Gu Zheng \u003cguz.fnst@cn.fujitsu.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: bug fix on bit overflow from 32bits to 64bits\n\nThis patch fixes some bit overflows by the shift operations.\n\nDan Carpenter reported potential bugs on bit overflows as follows.\n\nfs/f2fs/segment.c:910 submit_write_page()\n\twarn: should \u0027blk_addr \u003c\u003c ((sbi)-\u003elog_blocksize - 9)\u0027 be a 64 bit type?\nfs/f2fs/checkpoint.c:429 get_valid_checkpoint()\n\twarn: should \u00271 \u003c\u003c ()\u0027 be a 64 bit type?\nfs/f2fs/data.c:408 f2fs_readpage()\n\twarn: should \u0027blk_addr \u003c\u003c ((sbi)-\u003elog_blocksize - 9)\u0027 be a 64 bit type?\nfs/f2fs/data.c:457 submit_read_page()\n\twarn: should \u0027blk_addr \u003c\u003c ((sbi)-\u003elog_blocksize - 9)\u0027 be a 64 bit type?\nfs/f2fs/data.c:525 get_data_block_ro()\n\twarn: should \u0027i \u003c\u003c blkbits\u0027 be a 64 bit type?\n\nBug-Reported-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: remove unnecessary condition checks\n\nThis patch removes the unnecessary condition checks on:\n\nfs/f2fs/gc.c:667 do_garbage_collect() warn: \u0027sum_page\u0027 isn\u0027t an ERR_PTR\nfs/f2fs/f2fs.h:795 f2fs_put_page() warn: \u0027page\u0027 isn\u0027t an ERR_PTR\n\nReported-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: remove unneeded code in punch_hole\n\nBecause FALLOC_FL_PUNCH_HOLE flag must be ORed with FALLOC_FL_KEEP_SIZE\nin fallocate, so we could remove the useless \u0027keep size\u0027 branch code which\nwill never be excuted in punch_hole.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Fan Li \u003cfanofcode.li@samsung.com\u003e\n[Jaegeuk Kim: remove an unnecessary parameter togather]\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: avoid to calculate incorrect max orphan number\n\nBecause we will write node summaries when do_checkpoint with umount flag,\nour number of max orphan blocks should minus NR_CURSEG_NODE_TYPE additional.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Shu Tan \u003cshu.tan@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: correct type of wait in struct bio_private\n\nThe void *wait in bio_private is used for waiting completion of checkpoint bio.\nSo we don\u0027t need to use its type as void, but declare it as completion type.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\n[Jaegeuk Kim: add description]\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: use true and false for boolean variable\n\nThe inode_page_locked should be a boolean variable.\n\nstruct dnode_of_data {\n\tstruct inode *inode;            /* vfs inode pointer */\n\tstruct page *inode_page;        /* its inode page, NULL is possible */\n\tstruct page *node_page;         /* cached direct node page */\n\tnid_t nid;                      /* node id of the direct node block */\n\tunsigned int ofs_in_node;       /* data offset in the node page */\n\u003d\u003d\u003e\tbool inode_page_locked;         /* inode page is locked or not */\n\tblock_t data_blkaddr;           /* block address of the node block */\n};\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\n[Jaegeuk Kim: add description]\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: check return value of f2fs_readpage in find_data_page\n\nWe should return error if we do not get an updated page in find_date_page\nwhen f2fs_readpage failed.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: convert recover_orphan_inodes to void\n\nThe recover_orphan_inodes() returns no error all the time, so we don\u0027t need to\ncheck its errors.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\n[Jaegeuk Kim: add description]\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: remove the own bi_private allocation\n\nPreviously f2fs allocates its own bi_private data structure all the time even\nthough we don\u0027t use it. But, can we remove this bi_private allocation?\n\nThis patch removes such the additional bi_private allocation.\n\n1. Retrieve f2fs_sb_info from its page-\u003emapping-\u003ehost-\u003ei_sb.\n - This removes the usecases of bi_private in end_io.\n\n2. Use bi_private only when we really need it.\n - The bi_private is used only when the checkpoint procedure is conducted.\n - When conducting the checkpoint, f2fs submits a META_FLUSH bio to wait its bio\ncompletion.\n - Since we have no dependancies to remove bi_private now, let\u0027s just use\n bi_private pointer as the completion pointer.\n\nReviewed-by: Gu Zheng \u003cguz.fnst@cn.fujitsu.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: refactor bio-related operations\n\nThis patch integrates redundant bio operations on read and write IOs.\n\n1. Move bio-related codes to the top of data.c.\n2. Replace f2fs_submit_bio with f2fs_submit_merged_bio, which handles read\n   bios additionally.\n3. Introduce __submit_merged_bio to submit the merged bio.\n4. Change f2fs_readpage to f2fs_submit_page_bio.\n5. Introduce f2fs_submit_page_mbio to integrate previous submit_read_page and\n   submit_write_page.\n\nReviewed-by: Gu Zheng \u003cguz.fnst@cn.fujitsu.com\u003e\nReviewed-by: Chao Yu \u003cchao2.yu@samsung.com \u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: readahead contiguous pages for restore_node_summary\n\nIf cp has no CP_UMOUNT_FLAG, we will read all pages in whole node segment\none by one, it makes low performance. So let\u0027s merge contiguous pages and\nreadahead for better performance.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\n[Jaegeuk Kim: adjust the new bio operations]\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: remove debufs dir if debugfs_create_file() failed\n\nWhen debugfs_create_file() failed in f2fs_create_root_stats(),\ndebugfs_root should be remove.\n\nSigned-off-by: Younger Liu \u003cliuyiyang@hisense.com\u003e\nCc: Younger Liu \u003cyounger.liucn@gmail.com\u003e\nCc: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\nReviewed-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: replace the debugfs_root with f2fs_debugfs_root\n\nThis minor change for the naming conventions of debugfs_root\nto avoid any possible conflicts to the other filesystem.\n\nSigned-off-by: Younger Liu \u003cyounger.liucn@gmail.com\u003e\nCc: Younger Liu \u003cyounger.liucn@gmail.com\u003e\nCc: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n[Jaegeuk Kim: change the patch name]\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: use inner macro GFP_F2FS_ZERO for simplification\n\nUse inner macro GFP_F2FS_ZERO to instead of GFP_NOFS | __GFP_ZERO for\nsimplification of code.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: avoid unneeded page release for correct _count of page\n\nIn find_fsync_dnodes() and recover_data(), our flow is like this:\n\n-\u003ef2fs_submit_page_bio()\n\t-\u003e f2fs_put_page()\n\t\t-\u003e page_cache_release()\t---- page-\u003e_count declined to zero.\n-\u003e__free_pages()\n\t-\u003e put_page_testzero() ---- page-\u003e_count will be declined again.\n\nWe will get a segment fault in put_page_testzero when CONFIG_DEBUG_VM\nis on, or return MM with a bad page with wrong _count num.\n\nSo let\u0027s just release this page.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: add unlikely() macro for compiler optimization\n\nAs we know, some of our branch condition will rarely be true. So we could add\n\u0027unlikely\u0027 to let compiler optimize these code, by this way we could drop\nunneeded \u0027jump\u0027 assemble code to improve performance.\n\nchange log:\n o add *unlikely* as many as possible across the whole source files at once\n   suggested by Jaegeuk Kim.\n\nSuggested-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: add unlikely() macro for compiler more aggressively\n\nThis patch adds unlikely() macro into the most of codes.\nThe basic rule is to add that when:\n- checking unusual errors,\n- checking page mappings,\n- and the other unlikely conditions.\n\nChange log from v1:\n - Don\u0027t add unlikely for the NULL test and error test: advised by Andi Kleen.\n\nCc: Chao Yu \u003cchao2.yu@samsung.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nReviewed-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: merge pages with the same sync_mode flag\n\nPreviously f2fs submits most of write requests using WRITE_SYNC, but f2fs_write_data_pages\nsubmits last write requests by sync_mode flags callers pass.\n\nThis causes a performance problem since continuous pages with different sync flags\ncan\u0027t be merged in cfq IO scheduler(thanks yu chao for pointing it out), and synchronous\nrequests often take more time.\n\nThis patch makes the following modifies to DATA writebacks:\n\n1. every page will be written back using the sync mode caller pass.\n2. only pages with the same sync mode can be merged in one bio request.\n\nThese changes are restricted to DATA pages.Other types of writebacks are modified\nTo remain synchronous.\n\nIn my test with tiotest, f2fs sequence write performance is improved by about 7%-10% ,\nand this patch has no obvious impact on other performance tests.\n\nSigned-off-by: Fan Li \u003cfanofcode.li@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: refactor bio-\u003erw handling\n\nThis patch introduces f2fs_io_info to mitigate the complex parameter list.\n\nstruct f2fs_io_info {\n\tenum page_type type;\t\t/* contains DATA/NODE/META/META_FLUSH */\n\tint rw;\t\t\t\t/* contains R/RS/W/WS */\n\tint rw_flag;\t\t\t/* contains REQ_META/REQ_PRIO */\n}\n\n1. f2fs_write_data_pages\n - DATA\n - WRITE_SYNC is set when wbc-\u003eWB_SYNC_ALL.\n\n2. sync_node_pages\n - NODE\n - WRITE_SYNC all the time\n\n3. sync_meta_pages\n - META\n - WRITE_SYNC all the time\n - REQ_META | REQ_PRIO all the time\n\n ** f2fs_submit_merged_bio() handles META_FLUSH.\n\n4. ra_nat_pages, ra_sit_pages, ra_sum_pages\n - META\n - READ_SYNC\n\nCc: Fan Li \u003cfanofcode.li@samsung.com\u003e\nCc: Changman Lee \u003ccm224.lee@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: fix the location of tracepoint\n\nWe need to get a trace before submit_bio, since its bi_sector is remapped during\nthe submit_bio.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: missing kmem_cache_destroy for discard_entry\n\ninsmod f2fs.ko is failed after insmod and rmmod firstly.\n\n$ sudo insmod fs/f2fs/f2fs.ko\ninsmod: error inserting \u0027fs/f2fs/f2fs.ko\u0027: -1 Cannot allocate memory\n\n-- dmesg --\nkmem_cache_sanity_check (free_nid): Cache name already exists.\n\nSigned-off-by: Changman Lee \u003ccm224.lee@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: introduce sysfs entry to control in-place-update policy\n\nThis patch introduces new sysfs entries for users to control the policy of\nin-place-updates, namely IPU, in f2fs.\n\nSometimes f2fs suffers from performance degradation due to its out-of-place\nupdate policy that produces many additional node block writes.\nIf the storage performance is very dependant on the amount of data writes\ninstead of IO patterns, we\u0027d better drop this out-of-place update policy.\n\nThis patch suggests 5 polcies and their triggering conditions as follows.\n\n[sysfs entry name \u003d ipu_policy]\n\n0: F2FS_IPU_FORCE       all the time,\n1: F2FS_IPU_SSR         if SSR mode is activated,\n2: F2FS_IPU_UTIL        if FS utilization is over threashold,\n3: F2FS_IPU_SSR_UTIL    if SSR mode is activated and FS utilization is over\n                        threashold,\n4: F2FS_IPU_DISABLE    disable IPU. (\u003ddefault option)\n\n[sysfs entry name \u003d min_ipu_util]\n\nThis parameter controls the threshold to trigger in-place-updates.\nThe number indicates percentage of the filesystem utilization, and used by\nF2FS_IPU_UTIL and F2FS_IPU_SSR_UTIL policies.\n\nFor more details, see need_inplace_update() in segment.h.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: introduce a new direct_IO write path\n\nPreviously, f2fs doesn\u0027t support direct IOs with high performance, which throws\nevery write requests via the buffered write path, resulting in highly\nperformance degradation due to memory opeations like copy_from_user.\n\nThis patch introduces a new direct IO path in which every write requests are\nprocessed by generic blockdev_direct_IO() with enhanced get_block function.\n\nThe get_data_block() in f2fs handles:\n1. if original data blocks are allocates, then give them to blockdev.\n2. otherwise,\n  a. preallocate requested block addresses\n  b. do not use extent cache for better performance\n  c. give the block addresses to blockdev\n\nThis policy induces that:\n- new allocated data are sequentially written to the disk\n- updated data are randomly written to the disk.\n- f2fs gives consistency on its file meta, not file data.\n\nReviewed-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: write dirty meta pages collectively\n\nThis patch enhances writing dirty meta pages collectively in background.\nDuring the file data writes, it\u0027d better avoid to write small dirty meta pages\nfrequently.\nSo let\u0027s give a chance to collect a number of dirty meta pages for a while.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: move all the bio initialization into __bio_alloc\n\nMove all the bio initialization into __bio_alloc, and some minor cleanups are\nalso added.\n\nv3:\n  Use \u0027bool\u0027 rather than \u0027int\u0027 as Kim suggested.\n\nv2:\n  Use \u0027is_read\u0027 rather than \u0027rw\u0027 as Yu Chao suggested.\n  Remove the needless initialization of bio-\u003ebi_private.\n\nSigned-off-by: Gu Zheng \u003cguz.fnst@cn.fujitsu.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: remove the rw_flag domain from f2fs_io_info\n\nWhen using the f2fs_io_info in the low level, we still need to merge the\nrw and rw_flag, so use the rw to hold all the io flags directly,\nand remove the rw_flag field.\n\nps.It is based on the previous patch:\nf2fs: move all the bio initialization into __bio_alloc\n\nSigned-off-by: Gu Zheng \u003cguz.fnst@cn.fujitsu.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: update several comments\n\nUpdate several comments:\n1. use f2fs_{un}lock_op install of mutex_{un}lock_op.\n2. update comment of get_data_block().\n3. update description of node offset.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: avoid to set wrong pino of inode when rename dir\n\nWhen we rename a dir to new name which is not exist previous,\nwe will set pino of parent inode with ino of child inode in f2fs_set_link.\nIt destroy consistency of pino, it should be fixed.\n\nThanks for previous work of Shu Tan.\n\nSigned-off-by: Shu Tan \u003cshu.tan@samsung.com\u003e\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: check filename length in recover_dentry\n\nIn current flow, we will get Null return value of f2fs_find_entry in\nrecover_dentry when name.len is bigger than F2FS_NAME_LEN, and then we\nstill add this inode into its dir entry.\nTo avoid this situation, we must check filename length before we use it.\n\nAnother point is that we could remove the code of checking filename length\nIn f2fs_find_entry, because f2fs_lookup will be called previously to ensure of\nvalidity of filename length.\n\nV2:\n o add WARN_ON() as Jaegeuk Kim suggested.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: introduce F2FS_INODE macro to get f2fs_inode\n\nThis patch introduces F2FS_INODE that returns struct f2fs_inode * from the inode\npage.\nBy using this macro, we can remove unnecessary casting codes like below.\n\n   struct f2fs_inode *ri \u003d \u0026F2FS_NODE(inode_page)-\u003ei;\n-\u003e struct f2fs_inode *ri \u003d F2FS_INODE(inode_page);\n\nReviewed-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: should put the dnode when NEW_ADDR is detected\n\nWhen get_dnode_of_data() in get_data_block() returns a successful dnode, we\nshould put the dnode.\nBut, previously, if its data block address is equal to NEW_ADDR, we didn\u0027t do\nthat, resulting in a deadlock condition.\nSo, this patch splits original error conditions with this case, and then calls\nf2fs_put_dnode before finishing the function.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: check the blocksize before calling generic_direct_IO path\n\nThe f2fs supports 4KB block size. If user requests dwrite with under 4KB data,\nit allocates a new 4KB data block.\nHowever, f2fs doesn\u0027t add zero data into the untouched data area inside the\nnewly allocated data block.\n\nThis incurs an error during the xfstest #263 test as follow.\n\n263 12s ... [failed, exit status 1] - output mismatch (see 263.out.bad)\n\t--- 263.out\t2013-03-09 03:37:15.043967603 +0900\n\t+++ 263.out.bad\t2013-12-27 04:20:39.230203114 +0900\n\t@@ -1,3 +1,976 @@\n\tQA output created by 263\n\tfsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z\n\t-fsx -N 10000 -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z\n\t+fsx -N 10000 -o 8192 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z\n\t+truncating to largest ever: 0x12a00\n\t+truncating to largest ever: 0x75400\n\t+fallocating to largest ever: 0x79cbf\n\t...\n\t(Run \u0027diff -u 263.out 263.out.bad\u0027 to see the entire diff)\n\tRan: 263\n\tFailures: 263\n\tFailed 1 of 1 tests\n\nIt turns out that, when the test tries to write 2KB data with dio, the new dio\npath allocates 4KB data block without filling zero data inside the remained 2KB\narea. Finally, the output file contains a garbage data for that region.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: convert max_orphans to a field of f2fs_sb_info\n\nPreviously, we need to calculate the max orphan num when we try to acquire an\norphan inode, but it\u0027s a stable value since the super block was inited. So\nconverting it to a field of f2fs_sb_info and use it directly when needed seems\na better choose.\n\nSigned-off-by: Gu Zheng \u003cguz.fnst@cn.fujitsu.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: key functions to handle inline data\n\nFunctions to implement inline data read/write, and move inline data to\nnormal data block when file size exceeds inline data limitation.\n\nSigned-off-by: Huajun Li \u003chuajun.li@intel.com\u003e\nSigned-off-by: Haicheng Li \u003chaicheng.li@linux.intel.com\u003e\nSigned-off-by: Weihong Xu \u003cweihong.xu@intel.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: handle inline data operations\n\nHook inline data read/write, truncate, fallocate, setattr, etc.\n\nFiles need meet following 2 requirement to inline:\n 1) file size is not greater than MAX_INLINE_DATA;\n 2) file doesn\u0027t pre-allocate data blocks by fallocate().\n\nFI_INLINE_DATA will not be set while creating a new regular inode because\nmost of the files are bigger than ~3.4K. Set FI_INLINE_DATA only when\ndata is submitted to block layer, ranther than set it while creating a new\ninode, this also avoids converting data from inline to normal data block\nand vice versa.\n\nWhile writting inline data to inode block, the first data block should be\nreleased if the file has a block indexed by i_addr[0].\n\nOn the other hand, when a file operation is appied to a file with inline\ndata, we need to test if this file can remain inline by doing this\noperation, otherwise it should be convert into normal file by reserving\na new data block, copying inline data to this new block and clear\nFI_INLINE_DATA flag. Because reserve a new data block here will make use\nof i_addr[0], if we save inline data in i_addr[0..872], then the first\n4 bytes would be overwriten. This problem can be avoided simply by\nnot using i_addr[0] for inline data.\n\nSigned-off-by: Huajun Li \u003chuajun.li@intel.com\u003e\nSigned-off-by: Haicheng Li \u003chaicheng.li@linux.intel.com\u003e\nSigned-off-by: Weihong Xu \u003cweihong.xu@intel.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: don\u0027t need to get f2fs_lock_op for the inline_data test\n\nThis patch locates checking the inline_data prior to calling f2fs_lock_op()\nin truncate_blocks(), since getting the lock is unnecessary.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: convert inline_data for punch_hole\n\nIn the punch_hole(), let\u0027s convert inline_data all the time for simplicity and\nto avoid potential deadlock conditions.\nIt is pretty much not a big deal to do this.\n\nReviewed-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: call f2fs_put_page at the error case\n\nIn f2fs_write_begin(), if f2fs_conver_inline_data() returns an error like\n-ENOSPC, f2fs should call f2fs_put_page().\nOtherwise, it is remained as a locked page, resulting in the following bug.\n\n[\u003cffffffff8114657e\u003e] sleep_on_page+0xe/0x20\n[\u003cffffffff81146567\u003e] __lock_page+0x67/0x70\n[\u003cffffffff81157d08\u003e] truncate_inode_pages_range+0x368/0x5d0\n[\u003cffffffff81157ff5\u003e] truncate_inode_pages+0x15/0x20\n[\u003cffffffff8115804b\u003e] truncate_pagecache+0x4b/0x70\n[\u003cffffffff81158082\u003e] truncate_setsize+0x12/0x20\n[\u003cffffffffa02a1842\u003e] f2fs_setattr+0x72/0x270 [f2fs]\n[\u003cffffffff811cdae3\u003e] notify_change+0x213/0x400\n[\u003cffffffff811ab376\u003e] do_truncate+0x66/0xa0\n[\u003cffffffff811ab541\u003e] vfs_truncate+0x191/0x1b0\n[\u003cffffffff811ab5bc\u003e] do_sys_truncate+0x5c/0xa0\n[\u003cffffffff811ab78e\u003e] SyS_truncate+0xe/0x10\n[\u003cffffffff81756052\u003e] system_call_fastpath+0x16/0x1b\n[\u003cffffffffffffffff\u003e] 0xffffffffffffffff\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: refactor f2fs_convert_inline_data\n\nChange log from v1:\n o handle NULL pointer of grab_cache_page_write_begin() pointed by Chao Yu.\n\nThis patch refactors f2fs_convert_inline_data to check a couple of conditions\ninternally for deciding whether it needs to convert inline_data or not.\n\nSo, the new f2fs_convert_inline_data initially checks:\n1) f2fs_has_inline_data(), and\n2) the data size to be changed.\n\nIf the inode has inline_data but the size to fill is less than MAX_INLINE_DATA,\nthen we don\u0027t need to convert the inline_data with data allocation.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: add the number of inline_data files to status info\n\nThis patch adds the number of inline_data files into the status information.\nNote that the number is reset whenever the filesystem is newly mounted.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: add inline_data recovery routine\n\nThis patch adds a inline_data recovery routine with the following policy.\n\n[prev.] [next] of inline_data flag\n   o       o  -\u003e recover inline_data\n   o       x  -\u003e remove inline_data, and then recover data blocks\n   x       o  -\u003e remove inline_data, and then recover inline_data\n   x       x  -\u003e recover data blocks\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: handle errors correctly during f2fs_reserve_block\n\nThe get_dnode_of_data nullifies inode and node page when error is occurred.\n\nThere are two cases that passes inode page into get_dnode_of_data().\n\n1. make_empty_dir()\n    -\u003e get_new_data_page()\n      -\u003e f2fs_reserve_block(ipage)\n\t-\u003e get_dnode_of_data()\n\n2. f2fs_convert_inline_data()\n    -\u003e __f2fs_convert_inline_data()\n      -\u003e f2fs_reserve_block(ipage)\n\t-\u003e get_dnode_of_data()\n\nThis patch adds correct error handling codes when get_dnode_of_data() returns\nan error.\n\nAt first, f2fs_reserve_block() calls f2fs_put_dnode() whenever reserve_new_block\nreturns an error.\nSo, the rule of f2fs_reserve_block() is to nullify inode page when there is any\nerror internally.\n\nFinally, two callers of f2fs_reserve_block() should call f2fs_put_dnode()\nappropriately if they got an error since successful f2fs_reserve_block().\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: fix truncate_partial_nodes bug\n\nThe truncate_partial_nodes puts pages incorrectly in the following two cases.\nNote that the value for argc \u0027depth\u0027 can only be 2 or 3.\nPlease see truncate_inode_blocks() and truncate_partial_nodes().\n\n1) An err is occurred in the first \u0027for\u0027 loop\n  When err is occurred with depth \u003d 2, pages[0] is invalid, so this page doesn\u0027t\n  need to be put. There is no problem, however, when depth is 3, it doesn\u0027t put\n  the pages correctly where pages[0] is valid and pages[1] is invalid.\n  In this case, depth is set to 2 (ref to statemnt depth \u003d i + 1), and then\n  \u0027goto fail\u0027.\n  In label \u0027fail\u0027, for (i \u003d depth - 3; i \u003e\u003d 0; i--) cannot meet the condition\n  because i \u003d -1, so pages[0] cann\u0027t be put.\n\n2) An err happened in the second \u0027for\u0027 loop\n  Now we\u0027ve got pages[0] with depth \u003d 2, or we\u0027ve got pages[0] and pages[1]\n  with depth \u003d 3. When an err is detected, we need \u0027goto fail\u0027 to put such\n  the pages.\n  When depth is 2, in label \u0027fail\u0027, for (i \u003d depth - 3; i \u003e\u003d 0; i--) cann\u0027t\n  meet the condition because i \u003d -1, so pages[0] cann\u0027t be put.\n  When depth is 3, in label \u0027fail\u0027, for (i \u003d depth - 3; i \u003e\u003d 0; i--) can\n  only put pages[0], pages[1] also cann\u0027t be put.\n\nNote that \u0027depth\u0027 has been changed before first \u0027goto fail\u0027 (ref to statemnt\ndepth \u003d i + 1), so passing this modified \u0027depth\u0027 to the tracepoint,\ntrace_f2fs_truncate_partial_nodes, is also incorrect.\n\nSigned-off-by: Shifei Ge \u003cshifei10.ge@samsung.com\u003e\n[Jaegeuk Kim: modify the description and fix one bug]\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: avoid to left uninitialized data in page when read inline data\n\nChange log from v1:\n o reduce unneeded memset in __f2fs_convert_inline_data\n\n\u003eFrom 58796be2bd2becbe8d52305210fb2a64e7dd80b6 Mon Sep 17 00:00:00 2001\nFrom: Chao Yu \u003cchao2.yu@samsung.com\u003e\nDate: Mon, 30 Dec 2013 09:21:33 +0800\nSubject: [PATCH] f2fs: avoid to left uninitialized data in page when read\n inline data\n\nWe left uninitialized data in the tail of page when we read an inline data\npage. So let\u0027s initialize left part of the page excluding inline data region.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: avoid to read inline data except first page\n\nHere is a case which could read inline page data not from first page.\n\n1. write inline data\n2. lseek to offset 4096\n3. read 4096 bytes from offset 4096\n\t(read_inline_data read inline data page to non-first page,\n\tAnd previously VFS has add this page to page cache)\n4. ftruncate offset 8192\n5. read 4096 bytes from offset 4096\n\t(we meet this updated page with inline data in cache)\n\nSo we should leave this page with inited data and uptodate flag\nfor this case.\n\nChange log from v1:\n o fix a deadlock bug\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: improve write performance under frequent fsync calls\n\nWhen considering a bunch of data writes with very frequent fsync calls, we\nare able to think the following performance regression.\n\nN: Node IO, D: Data IO, IO scheduler: cfq\n\nIssue    pending IOs\n\t D1 D2 D3 D4\n D1         D2 D3 D4 N1\n D2            D3 D4 N1 N2\n N1            D3 D4 N2 D1\n --\u003e N1 can be selected by cfq becase of the same priority of N and D.\n     Then D3 and D4 would be delayed, resuling in performance degradation.\n\nSo, when processing the fsync call, it\u0027d better give higher priority to data IOs\nthan node IOs by assigning WRITE and WRITE_SYNC respectively.\nThis patch improves the random wirte performance with frequent fsync calls by up\nto 10%.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: add a sysfs entry to control max_victim_search\n\nPreviously during SSR and GC, the maximum number of retrials to find a victim\nsegment was hard-coded by MAX_VICTIM_SEARCH, 4096 by default.\n\nThis number makes an effect on IO locality, when SSR mode is activated, which\nresults in performance fluctuation on some low-end devices.\n\nIf max_victim_search \u003d 4, the victim will be searched like below.\n(\"D\" represents a dirty segment, and \"*\" indicates a selected victim segment.)\n\n D1 D2 D3 D4 D5 D6 D7 D8 D9\n[   *       ]\n      [   *    ]\n            [         * ]\n\t                [ ....]\n\nThis patch adds a sysfs entry to control the number dynamically through:\n  /sys/fs/f2fs/$dev/max_victim_search\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: remove the needless parameter of f2fs_wait_on_page_writeback\n\n\"boo sync\" parameter is never referenced in f2fs_wait_on_page_writeback.\nWe should remove this parameter.\n\nSigned-off-by: Yuan Zhong \u003cyuan.mark.zhong@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: move grabing orphan pages out of protection region\n\nMove grabing orphan block page out of protection region, and grab all\nthe orphan block pages ahead.\n\nSigned-off-by: Gu Zheng \u003cguz.fnst@cn.fujitsu.com\u003e\nReviewed-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\n[Jaegeuk Kim: remove unnecessary code pointed by Chao Yu]\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: move alloc new orphan node out of lock protection region\n\nMove alloc new orphan node out of lock protection region.\n\nSigned-off-by: Gu Zheng \u003cguz.fnst@cn.fujitsu.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: use spinlock rather than mutex for better speed\n\nWith the 2 previous changes, all the long time operations are moved out\nof the protection region, so here we can use spinlock rather than mutex\n(orphan_inode_mutex) for lower overhead.\n\nSigned-off-by: Gu Zheng \u003cguz.fnst@cn.fujitsu.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: add delimiter to seperate name and value in debug phrase\n\nSupport for f2fs-tools/tools/f2stat to monitor\n/sys/kernel/debug/f2fs/status\n\nSigned-off-by: Changman Lee \u003ccm224.lee@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: avoid f2fs_balance_fs call during pageout\n\nThis patch should resolve the following bug.\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\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: possible irq lock inversion dependency detected ]\n3.13.0-rc5.f2fs+ #6 Not tainted\n---------------------------------------------------------\nkswapd0/41 just changed the state of lock:\n (\u0026sbi-\u003egc_mutex){+.+.-.}, at: [\u003cffffffffa030503e\u003e] f2fs_balance_fs+0xae/0xd0 [f2fs]\nbut this lock took another, RECLAIM_FS-READ-unsafe lock in the past:\n (\u0026sbi-\u003ecp_rwsem){++++.?}\n\nand interrupts could create inverse lock ordering between them.\n\nother info that might help us debug this:\nChain exists of:\n  \u0026sbi-\u003egc_mutex --\u003e \u0026sbi-\u003ecp_mutex --\u003e \u0026sbi-\u003ecp_rwsem\n\n Possible interrupt unsafe locking scenario:\n\n       CPU0                    CPU1\n       ----                    ----\n  lock(\u0026sbi-\u003ecp_rwsem);\n                               local_irq_disable();\n                               lock(\u0026sbi-\u003egc_mutex);\n                               lock(\u0026sbi-\u003ecp_mutex);\n  \u003cInterrupt\u003e\n    lock(\u0026sbi-\u003egc_mutex);\n\n *** DEADLOCK ***\n\nThis bug is due to the f2fs_balance_fs call in f2fs_write_data_page.\nIf f2fs_write_data_page is triggered by wbc-\u003efor_reclaim via kswapd, it should\nnot call f2fs_balance_fs which tries to get a mutex grabbed by original syscall\nflow.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: missing REQ_META and REQ_PRIO when sync_meta_pages(META_FLUSH)\n\nDoing sync_meta_pages with META_FLUSH when checkpoint, we overide rw\nusing WRITE_FLUSH_FUA. At this time, we also should set\nREQ_META|REQ_PRIO.\n\nSigned-off-by: Changman Lee \u003ccm224.lee@samsung.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: clean checkpatch warnings\n\nFixed a variety of trivial checkpatch warnings.  The only delta should\nbe some minor formatting on log strings that were split / too long.\n\nSigned-off-by: Chris Fries \u003ccfries@motorola.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: call mark_inode_dirty to flush dirty pages\n\nIf a dentry page is updated, we should call mark_inode_dirty to add the inode\ninto the dirty list, so that its dentry pages are flushed to the disk.\nOtherwise, the inode can be evicted without flush.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: move a branch for code redability\n\nThis patch moves a function in f2fs_delete_entry for code readability.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: add help function META_MAPPING\n\nIntroduce help function META_MAPPING() to get the cache meta blocks\u0027\naddress space.\n\nSigned-off-by: Gu Zheng \u003cguz.fnst@cn.fujitsu.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: remove the orphan block page array\n\nAs the orphan_blocks may be max to 504, so it is not security\nand rigorous to store such a large array in the kernel stack\nas Dan Carpenter said.\nIn fact, grab_meta_page has locked the page in the page cache,\nand we can use find_get_page() to fetch the page safely in the\ndownstream, so we can remove the page array directly.\n\nReported-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nSigned-off-by: Gu Zheng \u003cguz.fnst@cn.fujitsu.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: introduce NODE_MAPPING for code consistency\n\nThis patch adds NODE_MAPPING which is similar as META_MAPPING introduced by\nGu Zheng.\n\nCc: Gu Zheng \u003cguz.fnst@cn.fujitsu.com\u003e\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nf2fs: drop obsolete node page when it is truncated\n\nIf a node page is trucated, we\u0027d better drop the page in the node_inode\u0027s page\ncache for better memory footprint.\n\nSigned-off-by: Jaegeuk Kim \u003cjaegeuk.kim@samsung.com\u003e\n\nChange-Id: I1b7c3378b7f7adb13477376164e91ab080b50d8b\n"
    },
    {
      "commit": "8005ecc7ea4f6004f217a39425a241ac8a63633c",
      "tree": "11c815137aac0302817b8b4fd798cfc0ff0877db",
      "parents": [
        "0ada96714fba26853fec00f4d95577c577c6e5ef"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 20 13:54:51 2012 -0800"
      },
      "committer": {
        "name": "flintman",
        "email": "flintman@flintmancomputers.com",
        "time": "Sat Jan 24 11:05:52 2015 -0500"
      },
      "message": "f2fs: Pull in from upstream 3.13 kernel\n\nMerge tag \u0027for-3.8-merge\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs\n\nPull new F2FS filesystem from Jaegeuk Kim:\n \"Introduce a new file system, Flash-Friendly File System (F2FS), to\n  Linux 3.8.\n\n  Highlights:\n   - Add initial f2fs source codes\n   - Fix an endian conversion bug\n   - Fix build failures on random configs\n   - Fix the power-off-recovery routine\n   - Minor cleanup, coding style, and typos patches\"\n\nFrom the Kconfig help text:\n\n  F2FS is based on Log-structured File System (LFS), which supports\n  versatile \"flash-friendly\" features. The design has been focused on\n  addressing the fundamental issues in LFS, which are snowball effect\n  of wandering tree and high cleaning overhead.\n\n  Since flash-based storages show different characteristics according to\n  the internal geometry or flash memory management schemes aka FTL, F2FS\n  and tools support various parameters not only for configuring on-disk\n  layout, but also for selecting allocation and cleaning algorithms.\n\nand there\u0027s an article by Neil Brown about it on lwn.net:\n\n  http://lwn.net/Articles/518988/\n\n* tag \u0027for-3.8-merge\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (36 commits)\n  f2fs: fix tracking parent inode number\n  f2fs: cleanup the f2fs_bio_alloc routine\n  f2fs: introduce accessor to retrieve number of dentry slots\n  f2fs: remove redundant call to f2fs_put_page in delete entry\n  f2fs: make use of GFP_F2FS_ZERO for setting gfp_mask\n  f2fs: rewrite f2fs_bio_alloc to make it simpler\n  f2fs: fix a typo in f2fs documentation\n  f2fs: remove unused variable\n  f2fs: move error condition for mkdir at proper place\n  f2fs: remove unneeded initialization\n  f2fs: check read only condition before beginning write out\n  f2fs: remove unneeded memset from init_once\n  f2fs: show error in case of invalid mount arguments\n  f2fs: fix the compiler warning for uninitialized use of variable\n  f2fs: resolve build failures\n  f2fs: adjust kernel coding style\n  f2fs: fix endian conversion bugs reported by sparse\n  f2fs: remove unneeded version.h header file from f2fs.h\n  f2fs: update the f2fs document\n  f2fs: update Kconfig and Makefile\n  ...\n\nConflicts:\n\tinclude/uapi/linux/magic.h\n\nMerge tag \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs\n\nPull f2fs bug fixes from Jaegeuk Kim:\n \"This patch-set includes two major bug fixes:\n   - incorrect IUsed provided by *df -i*, and\n   - lookup failure of parent inodes in corner cases.\n\n  [Other Bug Fixes]\n   - Fix error handling routines\n   - Trigger recovery process correctly\n   - Resolve build failures due to missing header files\n\n  [Etc]\n   - Add a MAINTAINERS entry for f2fs\n   - Fix and clean up variables, functions, and equations\n   - Avoid warnings during compilation\"\n\n* tag \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs:\n  f2fs: unify string length declarations and usage\n  f2fs: clean up unused variables and return values\n  f2fs: clean up the start_bidx_of_node function\n  f2fs: remove unneeded variable from f2fs_sync_fs\n  f2fs: fix fsync_inode list addition logic and avoid invalid access to memory\n  f2fs: remove unneeded initialization of nr_dirty in dirty_seglist_info\n  f2fs: handle error from f2fs_iget_nowait\n  f2fs: fix equation of has_not_enough_free_secs()\n  f2fs: add MAINTAINERS entry\n  f2fs: return a default value for non-void function\n  f2fs: invalidate the node page if allocation is failed\n  f2fs: add missing #include \u003clinux/prefetch.h\u003e\n  f2fs: do f2fs_balance_fs in front of dir operations\n  f2fs: should recover orphan and fsync data\n  f2fs: fix handling errors got by f2fs_write_inode\n  f2fs: fix up f2fs_get_parent issue to retrieve correct parent inode number\n  f2fs: fix wrong calculation on f_files in statfs\n  f2fs: remove set_page_dirty for atomic f2fs_end_io_write\n\nMerge tag \u0027f2fs-for-3.8-rc5\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs\n\nPull f2fs fixes from Jaegeuk Kim:\n o Support swap file and link generic_file_remap_pages\n o Enhance the bio streaming flow and free section control\n o Major bug fix on recovery routine\n o Minor bug/warning fixes and code cleanups\n\n* tag \u0027f2fs-for-3.8-rc5\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (22 commits)\n  f2fs: use _safe() version of list_for_each\n  f2fs: add comments of start_bidx_of_node\n  f2fs: avoid issuing small bios due to several dirty node pages\n  f2fs: support swapfile\n  f2fs: add remap_pages as generic_file_remap_pages\n  f2fs: add __init to functions in init_f2fs_fs\n  f2fs: fix the debugfs entry creation path\n  f2fs: add global mutex_lock to protect f2fs_stat_list\n  f2fs: remove the blk_plug usage in f2fs_write_data_pages\n  f2fs: avoid redundant time update for parent directory in f2fs_delete_entry\n  f2fs: remove redundant call to set_blocksize in f2fs_fill_super\n  f2fs: move f2fs_balance_fs to punch_hole\n  f2fs: add f2fs_balance_fs in several interfaces\n  f2fs: revisit the f2fs_gc flow\n  f2fs: check return value during recovery\n  f2fs: avoid null dereference in f2fs_acl_from_disk\n  f2fs: initialize newly allocated dnode structure\n  f2fs: update f2fs partition info about SIT/NAT layout\n  f2fs: update f2fs document to reflect SIT/NAT layout correctly\n  f2fs: remove unneeded INIT_LIST_HEAD at few places\n  ...\n\nMerge tag \u0027f2fs-for-3.9\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs\n\nPull f2fs update from Jaegeuk Kim:\n \"[Major bug fixes]\n   o Store device file information correctly\n   o Fix -EIO handling with respect to power-off-recovery\n   o Allocate blocks with global locks\n   o Fix wrong calculation of the SSR cost\n\n  [Cleanups]\n   o Get rid of fake on-stack dentries\n\n  [Enhancement]\n   o Support (un)freeze_fs\n   o Enhance the f2fs_gc flow\n   o Support 32-bit binary execution on 64-bit kernel\"\n\n* tag \u0027f2fs-for-3.9\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (29 commits)\n  f2fs: avoid build warning\n  f2fs: add compat_ioctl to provide backward compatability\n  f2fs: fix calculation of max. gc cost in the SSR case\n  f2fs: clarify and enhance the f2fs_gc flow\n  f2fs: optimize the return condition for has_not_enough_free_secs\n  f2fs: make an accessor to get sections for particular block type\n  f2fs: mark gc_thread as NULL when thread creation is failed\n  f2fs: name gc task as per the block device\n  f2fs: remove unnecessary gc option check and balance_fs\n  f2fs: remove repeated F2FS_SET_SB_DIRT call\n  f2fs: when check superblock failed, try to check another superblock\n  f2fs: use F2FS_BLKSIZE to judge bloksize and page_cache_size\n  f2fs: add device name in debugfs\n  f2fs: stop repeated checking if cp is needed\n  f2fs: avoid balanc_fs during evict_inode\n  f2fs: remove the use of page_cache_release\n  f2fs: fix typo mistake for data_version description\n  f2fs: reorganize code for ra_node_page\n  f2fs: avoid redundant call to has_not_enough_free_secs in f2fs_gc\n  f2fs: add un/freeze_fs into super_operations\n  ...\n\nMerge tag \u0027f2fs-for-v3.10\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs\n\nPull f2fs updates from Jaegeuk Kim:\n \"This patch-set includes the following major enhancement patches.\n   - introduce a new gloabl lock scheme\n   - add tracepoints on several major functions\n   - fix the overall cleaning process focused on victim selection\n   - apply the block plugging to merge IOs as much as possible\n   - enhance management of free nids and its list\n   - enhance the readahead mode for node pages\n   - address several cretical deadlock conditions\n   - reduce lock_page calls\n\n  The other minor bug fixes and enhancements are as follows.\n   - calculation mistakes: overflow\n   - bio types: READ, READA, and READ_SYNC\n   - fix the recovery flow, data races, and null pointer errors\"\n\n* tag \u0027f2fs-for-v3.10\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (68 commits)\n  f2fs: cover free_nid management with spin_lock\n  f2fs: optimize scan_nat_page()\n  f2fs: code cleanup for scan_nat_page() and build_free_nids()\n  f2fs: bugfix for alloc_nid_failed()\n  f2fs: recover when journal contains deleted files\n  f2fs: continue to mount after failing recovery\n  f2fs: avoid deadlock during evict after f2fs_gc\n  f2fs: modify the number of issued pages to merge IOs\n  f2fs: remove useless #include \u003clinux/proc_fs.h\u003e as we\u0027re now using sysfs as debug entry.\n  f2fs: fix inconsistent using of NM_WOUT_THRESHOLD\n  f2fs: check truncation of mapping after lock_page\n  f2fs: enhance alloc_nid and build_free_nids flows\n  f2fs: add a tracepoint on f2fs_new_inode\n  f2fs: check nid \u003d\u003d 0 in add_free_nid\n  f2fs: add REQ_META about metadata requests for submit\n  f2fs: give a chance to merge IOs by IO scheduler\n  f2fs: avoid frequent background GC\n  f2fs: add tracepoints to debug checkpoint request\n  f2fs: add tracepoints for write page operations\n  f2fs: add tracepoints to debug the block allocation\n  ...\n\nMerge tag \u0027for-f2fs-3.11\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs\n\nPull f2fs updates from Jaegeuk Kim:\n \"This patch-set includes the following major enhancement patches:\n   - remount_fs callback function\n   - restore parent inode number to enhance the fsync performance\n   - xattr security labels\n   - reduce the number of redundant lock/unlock data pages\n   - avoid frequent write_inode calls\n\n  The other minor bug fixes are as follows.\n   - endian conversion bugs\n   - various bugs in the roll-forward recovery routine\"\n\n* tag \u0027for-f2fs-3.11\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (56 commits)\n  f2fs: fix to recover i_size from roll-forward\n  f2fs: remove the unused argument \"sbi\" of func destroy_fsync_dnodes()\n  f2fs: remove reusing any prefree segments\n  f2fs: code cleanup and simplify in func {find/add}_gc_inode\n  f2fs: optimize the init_dirty_segmap function\n  f2fs: fix an endian conversion bug detected by sparse\n  f2fs: fix crc endian conversion\n  f2fs: add remount_fs callback support\n  f2fs: recover wrong pino after checkpoint during fsync\n  f2fs: optimize do_write_data_page()\n  f2fs: make locate_dirty_segment() as static\n  f2fs: remove unnecessary parameter \"offset\" from __add_sum_entry()\n  f2fs: avoid freqeunt write_inode calls\n  f2fs: optimise the truncate_data_blocks_range() range\n  f2fs: use the F2FS specific flags in f2fs_ioctl()\n  f2fs: sync dir-\u003ei_size with its block allocation\n  f2fs: fix i_blocks translation on various types of files\n  f2fs: set sb-\u003es_fs_info before calling parse_options()\n  f2fs: support xattr security labels\n  f2fs: fix iget/iput of dir during recovery\n  ...\n\nMerge tag \u0027for-f2fs-3.12\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs\n\nPull f2fs updates from Jaegeuk Kim:\n \"This patch-set includes the following major enhancement patches:\n   - support inline xattrs\n   - add sysfs support to control GCs explicitly\n   - add proc entry to show the current segment usage information\n   - improve the GC/SSR performance\n\n  The other bug fixes are as follows:\n   - avoid the overflow on status calculation\n   - fix some error handling routines\n   - fix inconsistent xattr states after power-off-recovery\n   - fix incorrect xattr node offset definition\n   - fix deadlock condition in fsync\n   - fix the fdatasync routine for power-off-recovery\"\n\n* tag \u0027for-f2fs-3.12\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (40 commits)\n  f2fs: optimize gc for better performance\n  f2fs: merge more bios of node block writes\n  f2fs: avoid an overflow during utilization calculation\n  f2fs: trigger GC when there are prefree segments\n  f2fs: use strncasecmp() simplify the string comparison\n  f2fs: fix omitting to update inode page\n  f2fs: support the inline xattrs\n  f2fs: add the truncate_xattr_node function\n  f2fs: introduce __find_xattr for readability\n  f2fs: reserve the xattr space dynamically\n  f2fs: add flags for inline xattrs\n  f2fs: fix error return code in init_f2fs_fs()\n  f2fs: fix wrong BUG_ON condition\n  f2fs: fix memory leak when init f2fs filesystem fail\n  f2fs: fix a compound statement label error\n  f2fs: avoid writing inode redundantly when creating a file\n  f2fs: alloc_page() doesn\u0027t return an ERR_PTR\n  f2fs: should cover i_xattr_nid with its xattr node page lock\n  f2fs: check the free space first in new_node_page\n  f2fs: clean up the needless end \u0027return\u0027 of void function\n  ...\n\nMerge tag \u0027for-f2fs-3.13\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs\n\nPull f2fs updates from Jaegeuk Kim:\n \"This patch-set includes the following major enhancement patches.\n   - add a sysfs to control reclaiming free segments\n   - enhance the f2fs global lock procedures\n   - enhance the victim selection flow\n   - wait for selected node blocks during fsync\n   - add some tracepoints\n   - add a config to remove abundant BUG_ONs\n\n  The other bug fixes are as follows.\n   - fix deadlock on acl operations\n   - fix some bugs with respect to orphan inodes\n\n  And, there are a bunch of cleanups\"\n\n* tag \u0027for-f2fs-3.13\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (42 commits)\n  f2fs: issue more large discard command\n  f2fs: fix memory leak after kobject init failed in fill_super\n  f2fs: cleanup waiting routine for writeback pages in cp\n  f2fs: avoid to use a NULL point in destroy_segment_manager\n  f2fs: remove unnecessary TestClearPageError when wait pages writeback\n  f2fs: update f2fs document\n  f2fs: avoid to wait all the node blocks during fsync\n  f2fs: check all ones or zeros bitmap with bitops for better mount performance\n  f2fs: change the method of calculating the number summary blocks\n  f2fs: fix calculating incorrect free size when update xattr in __f2fs_setxattr\n  f2fs: add an option to avoid unnecessary BUG_ONs\n  f2fs: introduce CONFIG_F2FS_CHECK_FS for BUG_ON control\n  f2fs: fix a deadlock during init_acl procedure\n  f2fs: clean up acl flow for better readability\n  f2fs: remove unnecessary segment bitmap updates\n  f2fs: add tracepoint for vm_page_mkwrite\n  f2fs: add tracepoint for set_page_dirty\n  f2fs: remove redundant set_page_dirty from write_compacted_summaries\n  f2fs: add reclaiming control by sysfs\n  f2fs: introduce f2fs_balance_fs_bg for some background jobs\n  ...\n\nChange-Id: Ied5488471d49d64ce6abb4be19237c4e90829ff6\n"
    },
    {
      "commit": "1097d78180e1a2916c2bcdb15cb90ba131af9cd8",
      "tree": "5910f8fc0dcb85c71011ccccee18895769699390",
      "parents": [
        "3ded4adc97887ddde3c1855f29f062e015d19425",
        "7fd7a446b1c2b96252e4389746e5419eae04faef"
      ],
      "author": {
        "name": "Paul",
        "email": "javelinanddart@gmail.com",
        "time": "Sun Jan 11 17:15:40 2015 -0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Sun Jan 11 17:20:45 2015 -0800"
      },
      "message": "Merge tag \u0027v3.4.105\u0027 into cm-12.0\n\nThis is the 3.4.105 stable release\n\nConflicts:\n\tarch/arm/mm/proc-v7.S\n\tdrivers/bluetooth/hci_ldisc.c\n\tdrivers/media/dvb/dvb-core/dmxdev.c\n\tdrivers/usb/core/driver.c\n\tdrivers/usb/dwc3/core.c\n\tdrivers/usb/host/xhci-hub.c\n\tdrivers/usb/host/xhci.c\n\tdrivers/usb/serial/qcserial.c\n\tdrivers/usb/serial/usb_wwan.c\n\tkernel/events/core.c\n\tkernel/time/tick-sched.ck\n\tkernel/futex.c\n\tmm/memory_hotplug.c\n\tmm/vmscan.c\n\tnet/bluetooth/hci_conn.c\n\tnet/bluetooth/hci_event.c\n\tnet/bluetooth/l2cap_core.c\n\tnet/ipv4/ping.c\n\tnet/wireless/nl80211.c\n\tsound/soc/soc-core.c\n\nChange-Id: Id09da84afb427ba1a32ff26e74f2bb86458d4a2e\n"
    },
    {
      "commit": "6eee052d52d555f00d6b72e35bd752942221afa1",
      "tree": "6d0b2e30f0363d254e04c1c54163a25d99e48a8f",
      "parents": [
        "db610f7571f287db43c153ce26dd20dbd44d5173"
      ],
      "author": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Aug 01 14:47:13 2014 -0700"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Aug 01 14:54:03 2014 -0700"
      },
      "message": "msm: perf: Fix standalone compilation\n\nInclude perf_trace_counters header file in trace directory to\navoid compile errors when compiling standalone kernel image.\n\nChange-Id: I4cb2928e37357eb6bf5f4118858f558dbe2f7f96\n"
    },
    {
      "commit": "0c3351a0a4815ea566d3febf82033b6c55ed4a2d",
      "tree": "6aaeb576ba3bda684481e2ca0d4b185b7b0ff6a6",
      "parents": [
        "e3293b8639a90b7227be9c273af0a45015c499bb"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sun Apr 13 20:58:54 2014 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Sun Jul 06 18:49:20 2014 -0700"
      },
      "message": "tracing: Fix syscall_*regfunc() vs copy_process() race\n\ncommit 4af4206be2bd1933cae20c2b6fb2058dbc887f7c upstream.\n\nsyscall_regfunc() and syscall_unregfunc() should set/clear\nTIF_SYSCALL_TRACEPOINT system-wide, but do_each_thread() can race\nwith copy_process() and miss the new child which was not added to\nthe process/thread lists yet.\n\nChange copy_process() to update the child\u0027s TIF_SYSCALL_TRACEPOINT\nunder tasklist.\n\nLink: http://lkml.kernel.org/p/20140413185854.GB20668@redhat.com\n\nFixes: a871bd33a6c0 \"tracing: Add syscall tracepoints\"\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\n"
    },
    {
      "commit": "efb36edc5e9dcc4c93b83c85aa504aa4d300c401",
      "tree": "f5df43acd1108c0b06e3d1a36e95d98a28347887",
      "parents": [
        "d1a999df834a81d751be87dd62b88f2f99bc650a"
      ],
      "author": {
        "name": "Romain Izard",
        "email": "romain.izard.pro@gmail.com",
        "time": "Tue Mar 04 10:09:39 2014 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Sat Jun 07 16:02:02 2014 -0700"
      },
      "message": "trace: module: Maintain a valid user count\n\ncommit 098507ae3ec2331476fb52e85d4040c1cc6d0ef4 upstream.\n\nThe replacement of the \u0027count\u0027 variable by two variables \u0027incs\u0027 and\n\u0027decs\u0027 to resolve some race conditions during module unloading was done\nin parallel with some cleanup in the trace subsystem, and was integrated\nas a merge.\n\nUnfortunately, the formula for this replacement was wrong in the tracing\ncode, and the refcount in the traces was not usable as a result.\n\nUse \u0027count \u003d incs - decs\u0027 to compute the user count.\n\nLink: http://lkml.kernel.org/p/1393924179-9147-1-git-send-email-romain.izard.pro@gmail.com\n\nAcked-by: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nFixes: c1ab9cab7509 \"merge conflict resolution\"\nSigned-off-by: Romain Izard \u003cromain.izard.pro@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\n"
    },
    {
      "commit": "14eee5bd065d6aac0acbdc6092a25ba68c55b9c8",
      "tree": "6a5be23dd8205130a59ea2d9b9ce13e54c7c518f",
      "parents": [
        "664c0fc651b6ca2ab43ddbb73bbda2acdb2c9915"
      ],
      "author": {
        "name": "Roman Pen",
        "email": "r.peniaev@gmail.com",
        "time": "Tue Mar 04 23:13:10 2014 +0900"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Sun May 18 05:25:55 2014 -0700"
      },
      "message": "blktrace: fix accounting of partially completed requests\n\ncommit af5040da01ef980670b3741b3e10733ee3e33566 upstream.\n\ntrace_block_rq_complete does not take into account that request can\nbe partially completed, so we can get the following incorrect output\nof blkparser:\n\n  C   R 232 + 240 [0]\n  C   R 240 + 232 [0]\n  C   R 248 + 224 [0]\n  C   R 256 + 216 [0]\n\nbut should be:\n\n  C   R 232 + 8 [0]\n  C   R 240 + 8 [0]\n  C   R 248 + 8 [0]\n  C   R 256 + 8 [0]\n\nAlso, the whole output summary statistics of completed requests and\nfinal throughput will be incorrect.\n\nThis patch takes into account real completion size of the request and\nfixes wrong completion accounting.\n\nSigned-off-by: Roman Pen \u003cr.peniaev@gmail.com\u003e\nCC: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCC: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCC: Ingo Molnar \u003cmingo@redhat.com\u003e\nCC: linux-kernel@vger.kernel.org\nSigned-off-by: Jens Axboe \u003caxboe@fb.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\n"
    },
    {
      "commit": "bb32d268211f1c70858a32e1402ecc09af173205",
      "tree": "d8f191500ea1020ed0028fadc23ece0d7c3ee973",
      "parents": [
        "ceced05d7f2bedf5da09f4eb48075339cc23876e"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Apr 09 09:33:34 2013 +0200"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Sat Mar 29 00:49:56 2014 -0700"
      },
      "message": "kthread: Prevent unpark race which puts threads on the wrong cpu\n\nThe smpboot threads rely on the park/unpark mechanism which binds per\ncpu threads on a particular core. Though the functionality is racy:\n\nCPU0\t       \t \tCPU1  \t     \t    CPU2\nunpark(T)\t\t\t\t    wake_up_process(T)\n  clear(SHOULD_PARK)\tT runs\n\t\t\tleave parkme() due to !SHOULD_PARK\n  bind_to(CPU2)\t\tBUG_ON(wrong CPU)\n\nWe cannot let the tasks move themself to the target CPU as one of\nthose tasks is actually the migration thread itself, which requires\nthat it starts running on the target cpu right away.\n\nThe solution to this problem is to prevent wakeups in park mode which\nare not from unpark(). That way we can guarantee that the association\nof the task to the target cpu is working correctly.\n\nAdd a new task state (TASK_PARKED) which prevents other wakeups and\nuse this state explicitly for the unpark wakeup.\n\nPeter noticed: Also, since the task state is visible to userspace and\nall the parked tasks are still in the PID space, its a good hint in ps\nand friends that these tasks aren\u0027t really there for the moment.\n\nThe migration thread has another related issue.\n\nCPU0\t      \t     \t CPU1\nBring up CPU2\ncreate_thread(T)\npark(T)\n wait_for_completion()\n\t\t\t parkme()\n\t\t\t complete()\nsched_set_stop_task()\n\t\t\t schedule(TASK_PARKED)\n\nThe sched_set_stop_task() call is issued while the task is on the\nrunqueue of CPU1 and that confuses the hell out of the stop_task class\non that cpu. So we need the same synchronizaion before\nsched_set_stop_task().\n\nReported-by: Dave Jones \u003cdavej@redhat.com\u003e\nReported-and-tested-by: Dave Hansen \u003cdave@sr71.net\u003e\nReported-and-tested-by: Borislav Petkov \u003cbp@alien8.de\u003e\nAcked-by: Peter Ziljstra \u003cpeterz@infradead.org\u003e\nCc: Srivatsa S. Bhat \u003csrivatsa.bhat@linux.vnet.ibm.com\u003e\nCc: dhillf@gmail.com\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: stable@vger.kernel.org\nLink: http://lkml.kernel.org/r/alpine.LFD.2.02.1304091635430.21884@ionos\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\nChange-Id: If1e9993951c4ad1f6f35ad0698f6ccd05a67e81f\n"
    },
    {
      "commit": "64792243b4e08d344244511bf10b193967f988be",
      "tree": "60ef46475b0ccb49b104e7deb7944ba22e05d467",
      "parents": [
        "e3552d062b6b6b59803875b13e93dc4eb65ecfb0"
      ],
      "author": {
        "name": "Rohit Gupta",
        "email": "rohgup@codeaurora.org",
        "time": "Mon Dec 09 17:25:07 2013 -0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Jan 17 22:12:30 2014 -0800"
      },
      "message": "cpufreq: interactive: Remove trace event from idle_start handler\n\nRemoved the trace_cpufreq_interactive_idle_start.\nAlso fix a crash resulting from accessing NULL policy before taking\nthe pcpu-\u003eenable_sem lock. The policy can be NULL if the core is\nhotplugged out before the enable_sem lock is taken.\n\nChange-Id: I7e2809cc016b3b383a44cdf3c697013e2d2b5417\nSigned-off-by: Rohit Gupta \u003crohgup@codeaurora.org\u003e\n"
    },
    {
      "commit": "e3552d062b6b6b59803875b13e93dc4eb65ecfb0",
      "tree": "2b12132ee60e444277f1bd2131d3185ecf130e75",
      "parents": [
        "0a03df2143535d9f09cd629334d7b56c01bada9f"
      ],
      "author": {
        "name": "Rohit Gupta",
        "email": "rohgup@codeaurora.org",
        "time": "Wed Nov 27 17:08:55 2013 -0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Jan 17 22:12:30 2014 -0800"
      },
      "message": "cpufreq: interactive: Reset floor_validate_time if busy at max for 100ms\n\nWhen the interactive governor selects to run at max frequency it doesn\u0027t\nre-schedule the timer until it hits an idle. This change checks if the CPU\nhas been continuously busy for last 100ms on hitting an idle start. If yes,\nthen floor_validate_time is reset so that the CPU stays at max frequency\nfor at least another 100 ms before stepping down.\nThis is an important feature for detecting CPU intensive workloads which\nrequire high frequencies for achieving better performance.\n\nChange-Id: I7d48ffbc3d50a80af9be3bf94667ee3d0120b763\nSigned-off-by: Rohit Gupta \u003crohgup@codeaurora.org\u003e\n"
    },
    {
      "commit": "eaf001971e9feaecfb88c7905666d74800e25b78",
      "tree": "580b0ae4877d5012e29a3536fdbda8490afcbe94",
      "parents": [
        "2dcea87b2a1ba331711661e34c3ce0a4c54c6ca8"
      ],
      "author": {
        "name": "Steve Muckle",
        "email": "smuckle@codeaurora.org",
        "time": "Tue Nov 19 14:16:53 2013 -0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Jan 17 22:12:27 2014 -0800"
      },
      "message": "tracing/sched: add load balancer tracepoint\n\nWhen doing performance analysis it can be useful to see exactly\nwhat is going on with the load balancer - when it runs and why\nexactly it may not be redistributing load.\n\nThis additional tracepoint will show the idle context of the\nload balance operation (idle, not idle, newly idle), various\nvalues from the load balancing operation, the final result,\nand the new balance interval.\n\nChange-Id: I9e5c97ae3878bea44e60d189ff3cec2275f2c75e\nCRs-Fixed: 583754\nSigned-off-by: Steve Muckle \u003csmuckle@codeaurora.org\u003e\n"
    },
    {
      "commit": "069398a80c823aa99fa8861bb64289fa268f73fc",
      "tree": "3e7d7c1edce6ecd0d68220b1fb3e907e053b922d",
      "parents": [
        "9992089db7d070adf6950517cbbf21e7e75e954e"
      ],
      "author": {
        "name": "Liam Mark",
        "email": "lmark@codeaurora.org",
        "time": "Wed Jan 16 10:14:40 2013 -0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Jan 17 22:12:21 2014 -0800"
      },
      "message": "ion: tracing: add ftrace events for ion allocations\n\nAdd ftrace events for ion allocations to make it easier to profile\ntheir performance.\n\nChange-Id: I9f32e076cd50d7d3a145353dfcef74f0f6cdf8a0\nSigned-off-by: Liam Mark \u003clmark@codeaurora.org\u003e\n"
    },
    {
      "commit": "60392bf640798e5227ef58ef17d2abcc534f6eb0",
      "tree": "501d0bf3bbea2ed258770b8a72b83ceb54818a8c",
      "parents": [
        "734f1f8f6ff7f0e007b8f73b14f7129cf28e23d1"
      ],
      "author": {
        "name": "Rohit Gupta",
        "email": "rohgup@codeaurora.org",
        "time": "Wed Aug 14 14:27:41 2013 -0700"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Jan 17 22:12:21 2014 -0800"
      },
      "message": "trace: power: Adding trace events for cpufreq\n\nAdded two events to help debugging cpufreq:\n1) cpufreq_sampling_event: To capture governor sampling instants\n   when cpu load is evaluated and an appropriate frequency is\n   selected.\n2) cpufreq_freq_synced: to capture frequency synchronization of\n   destination cpu with the source cpu triggered by foreground\n   thread migrations.\n\nChange-Id: I75bc7c3104b6e0750d9ede95602098d335f4f533\nSigned-off-by: Rohit Gupta \u003crohgup@codeaurora.org\u003e\n"
    },
    {
      "commit": "0fad1d27a9c0ca97d4ceff8ccf3db2f2d8b52699",
      "tree": "f2cb4e1f5cfacdba000d991adbbe5b40c669e516",
      "parents": [
        "c60245b334fed7c7a4c5b09fa88a5f8d7c0a2c9a"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Tue May 29 15:06:18 2012 -0700"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Jan 17 22:12:15 2014 -0800"
      },
      "message": "mm: remove swap token code\n\nThe swap token code no longer fits in with the current VM model.  It\ndoes not play well with cgroups or the better NUMA placement code in\ndevelopment, since we have only one swap token globally.\n\nIt also has the potential to mess with scalability of the system, by\nincreasing the number of non-reclaimable pages on the active and\ninactive anon LRU lists.\n\nLast but not least, the swap token code has been broken for a year\nwithout complaints, as reported by Konstantin Khlebnikov.  This suggests\nwe no longer have much use for it.\n\nThe days of sub-1G memory systems with heavy use of swap are over.  If\nwe ever need thrashing reducing code in the future, we will have to\nimplement something that does scale.\n\nChange-Id: I6d287cfc3c3206ca24da2de0c1392e5fdfcfabe8\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: Bob Picco \u003cbpicco@meloft.net\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nGit-commit: e709ffd6169ccd259eb5874e853303e91e94e829\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Laura Abbott \u003clauraa@codeaurora.org\u003e\n"
    },
    {
      "commit": "52878acb96a36fd11d45cc0ab6735e1b6a4e8e24",
      "tree": "966be1da1453b6d439d5b492aee5ad69424b85e1",
      "parents": [
        "753d7e77b2467193b5dbf926abe80cdd90d4961a"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue May 29 15:06:20 2012 -0700"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Jan 17 22:12:14 2014 -0800"
      },
      "message": "mm: vmscan: remove reclaim_mode_t\n\nThere is little motiviation for reclaim_mode_t once RECLAIM_MODE_[A]SYNC\nand lumpy reclaim have been removed.  This patch gets rid of\nreclaim_mode_t as well and improves the documentation about what\nreclaim/compaction is and when it is triggered.\n\nChange-Id: If95bc163647b1cfb93d7f3b8435060fed1e2aabf\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nGit-commit: 23b9da55c5b0feb484bd5e8615f4eb1ce4169453\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Laura Abbott \u003clauraa@codeaurora.org\u003e\n"
    },
    {
      "commit": "753d7e77b2467193b5dbf926abe80cdd90d4961a",
      "tree": "59b7bd098f51e8c514800c49c4c0da70072c5743",
      "parents": [
        "2c27524035cc79a31e941ddc8c24d93aae57e1ff"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue May 29 15:06:19 2012 -0700"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Jan 17 22:12:14 2014 -0800"
      },
      "message": "mm: vmscan: do not stall on writeback during memory compaction\n\nThis patch stops reclaim/compaction entering sync reclaim as this was\nonly intended for lumpy reclaim and an oversight.  Page migration has\nits own logic for stalling on writeback pages if necessary and memory\ncompaction is already using it.\n\nWaiting on page writeback is bad for a number of reasons but the primary\none is that waiting on writeback to a slow device like USB can take a\nconsiderable length of time.  Page reclaim instead uses\nwait_iff_congested() to throttle if too many dirty pages are being\nscanned.\n\nChange-Id: I14f312b1a51ee093d9d4adda5c87e57f1b83e03d\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nGit-commit: 41ac1999c3e3563e1810b14878a869c79c9368bb\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Laura Abbott \u003clauraa@codeaurora.org\u003e\n"
    },
    {
      "commit": "2c27524035cc79a31e941ddc8c24d93aae57e1ff",
      "tree": "ba9dd877223ffb018a47d857ee19c1fa9f7751b6",
      "parents": [
        "09f85957b233256ae7f7e407c7e86a0ae55ffb7e"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mgorman@suse.de",
        "time": "Tue May 29 15:06:19 2012 -0700"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Jan 17 22:12:14 2014 -0800"
      },
      "message": "mm: vmscan: remove lumpy reclaim\n\nThis series removes lumpy reclaim and some stalling logic that was\nunintentionally being used by memory compaction.  The end result is that\nstalling on dirty pages during page reclaim now depends on\nwait_iff_congested().\n\nFour kernels were compared\n\n  3.3.0     vanilla\n  3.4.0-rc2 vanilla\n  3.4.0-rc2 lumpyremove-v2 is patch one from this series\n  3.4.0-rc2 nosync-v2r3 is the full series\n\nRemoving lumpy reclaim saves almost 900 bytes of text whereas the full\nseries removes 1200 bytes.\n\n     text     data      bss       dec     hex  filename\n  6740375  1927944  2260992  10929311  a6c49f  vmlinux-3.4.0-rc2-vanilla\n  6739479  1927944  2260992  10928415  a6c11f  vmlinux-3.4.0-rc2-lumpyremove-v2\n  6739159  1927944  2260992  10928095  a6bfdf  vmlinux-3.4.0-rc2-nosync-v2\n\nThere are behaviour changes in the series and so tests were run with\nmonitoring of ftrace events.  This disrupts results so the performance\nresults are distorted but the new behaviour should be clearer.\n\nfs-mark running in a threaded configuration showed little of interest as\nit did not push reclaim aggressively\n\n  FS-Mark Multi Threaded\n                          3.3.0-vanilla       rc2-vanilla       lumpyremove-v2r3       nosync-v2r3\n  Files/s  min           3.20 ( 0.00%)        3.20 ( 0.00%)        3.20 ( 0.00%)        3.20 ( 0.00%)\n  Files/s  mean          3.20 ( 0.00%)        3.20 ( 0.00%)        3.20 ( 0.00%)        3.20 ( 0.00%)\n  Files/s  stddev        0.00 ( 0.00%)        0.00 ( 0.00%)        0.00 ( 0.00%)        0.00 ( 0.00%)\n  Files/s  max           3.20 ( 0.00%)        3.20 ( 0.00%)        3.20 ( 0.00%)        3.20 ( 0.00%)\n  Overhead min      508667.00 ( 0.00%)   521350.00 (-2.49%)   544292.00 (-7.00%)   547168.00 (-7.57%)\n  Overhead mean     551185.00 ( 0.00%)   652690.73 (-18.42%)   991208.40 (-79.83%)   570130.53 (-3.44%)\n  Overhead stddev    18200.69 ( 0.00%)   331958.29 (-1723.88%)  1579579.43 (-8578.68%)     9576.81 (47.38%)\n  Overhead max      576775.00 ( 0.00%)  1846634.00 (-220.17%)  6901055.00 (-1096.49%)   585675.00 (-1.54%)\n  MMTests Statistics: duration\n  Sys Time Running Test (seconds)             309.90    300.95    307.33    298.95\n  User+Sys Time Running Test (seconds)        319.32    309.67    315.69    307.51\n  Total Elapsed Time (seconds)               1187.85   1193.09   1191.98   1193.73\n\n  MMTests Statistics: vmstat\n  Page Ins                                       80532       82212       81420       79480\n  Page Outs                                  111434984   111456240   111437376   111582628\n  Swap Ins                                           0           0           0           0\n  Swap Outs                                          0           0           0           0\n  Direct pages scanned                           44881       27889       27453       34843\n  Kswapd pages scanned                        25841428    25860774    25861233    25843212\n  Kswapd pages reclaimed                      25841393    25860741    25861199    25843179\n  Direct pages reclaimed                         44881       27889       27453       34843\n  Kswapd efficiency                                99%         99%         99%         99%\n  Kswapd velocity                            21754.791   21675.460   21696.029   21649.127\n  Direct efficiency                               100%        100%        100%        100%\n  Direct velocity                               37.783      23.375      23.031      29.188\n  Percentage direct scans                           0%          0%          0%          0%\n\nftrace showed that there was no stalling on writeback or pages submitted\nfor IO from reclaim context.\n\npostmark was similar and while it was more interesting, it also did not\npush reclaim heavily.\n\n  POSTMARK\n                                       3.3.0-vanilla       rc2-vanilla  lumpyremove-v2r3       nosync-v2r3\n  Transactions per second:               16.00 ( 0.00%)    20.00 (25.00%)    18.00 (12.50%)    17.00 ( 6.25%)\n  Data megabytes read per second:        18.80 ( 0.00%)    24.27 (29.10%)    22.26 (18.40%)    20.54 ( 9.26%)\n  Data megabytes written per second:     35.83 ( 0.00%)    46.25 (29.08%)    42.42 (18.39%)    39.14 ( 9.24%)\n  Files created alone per second:        28.00 ( 0.00%)    38.00 (35.71%)    34.00 (21.43%)    30.00 ( 7.14%)\n  Files create/transact per second:       8.00 ( 0.00%)    10.00 (25.00%)     9.00 (12.50%)     8.00 ( 0.00%)\n  Files deleted alone per second:       556.00 ( 0.00%)  1224.00 (120.14%)  3062.00 (450.72%)  6124.00 (1001.44%)\n  Files delete/transact per second:       8.00 ( 0.00%)    10.00 (25.00%)     9.00 (12.50%)     8.00 ( 0.00%)\n\n  MMTests Statistics: duration\n  Sys Time Running Test (seconds)             113.34    107.99    109.73    108.72\n  User+Sys Time Running Test (seconds)        145.51    139.81    143.32    143.55\n  Total Elapsed Time (seconds)               1159.16    899.23    980.17   1062.27\n\n  MMTests Statistics: vmstat\n  Page Ins                                    13710192    13729032    13727944    13760136\n  Page Outs                                   43071140    42987228    42733684    42931624\n  Swap Ins                                           0           0           0           0\n  Swap Outs                                          0           0           0           0\n  Direct pages scanned                               0           0           0           0\n  Kswapd pages scanned                         9941613     9937443     9939085     9929154\n  Kswapd pages reclaimed                       9940926     9936751     9938397     9928465\n  Direct pages reclaimed                             0           0           0           0\n  Kswapd efficiency                                99%         99%         99%         99%\n  Kswapd velocity                             8576.567   11051.058   10140.164    9347.109\n  Direct efficiency                               100%        100%        100%        100%\n  Direct velocity                                0.000       0.000       0.000       0.000\n\nIt looks like here that the full series regresses performance but as\nftrace showed no usage of wait_iff_congested() or sync reclaim I am\nassuming it\u0027s a disruption due to monitoring.  Other data such as memory\nusage, page IO, swap IO all looked similar.\n\nRunning a benchmark with a plain DD showed nothing very interesting.\nThe full series stalled in wait_iff_congested() slightly less but stall\ntimes on vanilla kernels were marginal.\n\nRunning a benchmark that hammered on file-backed mappings showed stalls\ndue to congestion but not in sync writebacks\n\n  MICRO\n                                       3.3.0-vanilla       rc2-vanilla  lumpyremove-v2r3       nosync-v2r3\n  MMTests Statistics: duration\n  Sys Time Running Test (seconds)             308.13    294.50    298.75    299.53\n  User+Sys Time Running Test (seconds)        330.45    316.28    318.93    320.79\n  Total Elapsed Time (seconds)               1814.90   1833.88   1821.14   1832.91\n\n  MMTests Statistics: vmstat\n  Page Ins                                      108712      120708       97224      110344\n  Page Outs                                  155514576   156017404   155813676   156193256\n  Swap Ins                                           0           0           0           0\n  Swap Outs                                          0           0           0           0\n  Direct pages scanned                         2599253     1550480     2512822     2414760\n  Kswapd pages scanned                        69742364    71150694    68839041    69692533\n  Kswapd pages reclaimed                      34824488    34773341    34796602    34799396\n  Direct pages reclaimed                         53693       94750       61792       75205\n  Kswapd efficiency                                49%         48%         50%         49%\n  Kswapd velocity                            38427.662   38797.901   37799.972   38022.889\n  Direct efficiency                                 2%          6%          2%          3%\n  Direct velocity                             1432.174     845.464    1379.807    1317.446\n  Percentage direct scans                           3%          2%          3%          3%\n  Page writes by reclaim                             0           0           0           0\n  Page writes file                                   0           0           0           0\n  Page writes anon                                   0           0           0           0\n  Page reclaim immediate                             0           0           0        1218\n  Page rescued immediate                             0           0           0           0\n  Slabs scanned                                  15360       16384       13312       16384\n  Direct inode steals                                0           0           0           0\n  Kswapd inode steals                             4340        4327        1630        4323\n\n  FTrace Reclaim Statistics: congestion_wait\n  Direct number congest     waited                 0          0          0          0\n  Direct time   congest     waited               0ms        0ms        0ms        0ms\n  Direct full   congest     waited                 0          0          0          0\n  Direct number conditional waited               900        870        754        789\n  Direct time   conditional waited               0ms        0ms        0ms       20ms\n  Direct full   conditional waited                 0          0          0          0\n  KSwapd number congest     waited              2106       2308       2116       1915\n  KSwapd time   congest     waited          139924ms   157832ms   125652ms   132516ms\n  KSwapd full   congest     waited              1346       1530       1202       1278\n  KSwapd number conditional waited             12922      16320      10943      14670\n  KSwapd time   conditional waited               0ms        0ms        0ms        0ms\n  KSwapd full   conditional waited                 0          0          0          0\n\nReclaim statistics are not radically changed.  The stall times in kswapd\nare massive but it is clear that it is due to calls to congestion_wait()\nand that is almost certainly the call in balance_pgdat().  Otherwise\nstalls due to dirty pages are non-existant.\n\nI ran a benchmark that stressed high-order allocation.  This is very\nartifical load but was used in the past to evaluate lumpy reclaim and\ncompaction.  Generally I look at allocation success rates and latency\nfigures.\n\n  STRESS-HIGHALLOC\n                   3.3.0-vanilla       rc2-vanilla  lumpyremove-v2r3       nosync-v2r3\n  Pass 1          81.00 ( 0.00%)    28.00 (-53.00%)    24.00 (-57.00%)    28.00 (-53.00%)\n  Pass 2          82.00 ( 0.00%)    39.00 (-43.00%)    38.00 (-44.00%)    43.00 (-39.00%)\n  while Rested    88.00 ( 0.00%)    87.00 (-1.00%)    88.00 ( 0.00%)    88.00 ( 0.00%)\n\n  MMTests Statistics: duration\n  Sys Time Running Test (seconds)             740.93    681.42    685.14    684.87\n  User+Sys Time Running Test (seconds)       2922.65   3269.52   3281.35   3279.44\n  Total Elapsed Time (seconds)               1161.73   1152.49   1159.55   1161.44\n\n  MMTests Statistics: vmstat\n  Page Ins                                     4486020     2807256     2855944     2876244\n  Page Outs                                    7261600     7973688     7975320     7986120\n  Swap Ins                                       31694           0           0           0\n  Swap Outs                                      98179           0           0           0\n  Direct pages scanned                           53494       57731       34406      113015\n  Kswapd pages scanned                         6271173     1287481     1278174     1219095\n  Kswapd pages reclaimed                       2029240     1281025     1260708     1201583\n  Direct pages reclaimed                          1468       14564       16649       92456\n  Kswapd efficiency                                32%         99%         98%         98%\n  Kswapd velocity                             5398.133    1117.130    1102.302    1049.641\n  Direct efficiency                                 2%         25%         48%         81%\n  Direct velocity                               46.047      50.092      29.672      97.306\n  Percentage direct scans                           0%          4%          2%          8%\n  Page writes by reclaim                       1616049           0           0           0\n  Page writes file                             1517870           0           0           0\n  Page writes anon                               98179           0           0           0\n  Page reclaim immediate                        103778       27339        9796       17831\n  Page rescued immediate                             0           0           0           0\n  Slabs scanned                                1096704      986112      980992      998400\n  Direct inode steals                              223      215040      216736      247881\n  Kswapd inode steals                           175331       61548       68444       63066\n  Kswapd skipped wait                            21991           0           1           0\n  THP fault alloc                                    1         135         125         134\n  THP collapse alloc                               393         311         228         236\n  THP splits                                        25          13           7           8\n  THP fault fallback                                 0           0           0           0\n  THP collapse fail                                  3           5           7           7\n  Compaction stalls                                865        1270        1422        1518\n  Compaction success                               370         401         353         383\n  Compaction failures                              495         869        1069        1135\n  Compaction pages moved                        870155     3828868     4036106     4423626\n  Compaction move failure                        26429       23865       29742       27514\n\nSuccess rates are completely hosed for 3.4-rc2 which is almost certainly\ndue to commit fe2c2a106663 (\"vmscan: reclaim at order 0 when compaction\nis enabled\").  I expected this would happen for kswapd and impair\nallocation success rates (https://lkml.org/lkml/2012/1/25/166) but I did\nnot anticipate this much a difference: 80% less scanning, 37% less\nreclaim by kswapd\n\nIn comparison, reclaim/compaction is not aggressive and gives up easily\nwhich is the intended behaviour.  hugetlbfs uses __GFP_REPEAT and would\nbe much more aggressive about reclaim/compaction than THP allocations\nare.  The stress test above is allocating like neither THP or hugetlbfs\nbut is much closer to THP.\n\nMainline is now impaired in terms of high order allocation under heavy\nload although I do not know to what degree as I did not test with\n__GFP_REPEAT.  Keep this in mind for bugs related to hugepage pool\nresizing, THP allocation and high order atomic allocation failures from\nnetwork devices.\n\nIn terms of congestion throttling, I see the following for this test\n\n  FTrace Reclaim Statistics: congestion_wait\n  Direct number congest     waited                 3          0          0          0\n  Direct time   congest     waited               0ms        0ms        0ms        0ms\n  Direct full   congest     waited                 0          0          0          0\n  Direct number conditional waited               957        512       1081       1075\n  Direct time   conditional waited               0ms        0ms        0ms        0ms\n  Direct full   conditional waited                 0          0          0          0\n  KSwapd number congest     waited                36          4          3          5\n  KSwapd time   congest     waited            3148ms      400ms      300ms      500ms\n  KSwapd full   congest     waited                30          4          3          5\n  KSwapd number conditional waited             88514        197        332        542\n  KSwapd time   conditional waited            4980ms        0ms        0ms        0ms\n  KSwapd full   conditional waited                49          0          0          0\n\nThe \"conditional waited\" times are the most interesting as this is\ndirectly impacted by the number of dirty pages encountered during scan.\nAs lumpy reclaim is no longer scanning contiguous ranges, it is finding\nfewer dirty pages.  This brings wait times from about 5 seconds to 0.\nkswapd itself is still calling congestion_wait() so it\u0027ll still stall but\nit\u0027s a lot less.\n\nIn terms of the type of IO we were doing, I see this\n\n  FTrace Reclaim Statistics: mm_vmscan_writepage\n  Direct writes anon  sync                         0          0          0          0\n  Direct writes anon  async                        0          0          0          0\n  Direct writes file  sync                         0          0          0          0\n  Direct writes file  async                        0          0          0          0\n  Direct writes mixed sync                         0          0          0          0\n  Direct writes mixed async                        0          0          0          0\n  KSwapd writes anon  sync                         0          0          0          0\n  KSwapd writes anon  async                    91682          0          0          0\n  KSwapd writes file  sync                         0          0          0          0\n  KSwapd writes file  async                   822629          0          0          0\n  KSwapd writes mixed sync                         0          0          0          0\n  KSwapd writes mixed async                        0          0          0          0\n\nIn 3.2, kswapd was doing a bunch of async writes of pages but\nreclaim/compaction was never reaching a point where it was doing sync\nIO.  This does not guarantee that reclaim/compaction was not calling\nwait_on_page_writeback() but I would consider it unlikely.  It indicates\nthat merging patches 2 and 3 to stop reclaim/compaction calling\nwait_on_page_writeback() should be safe.\n\nThis patch:\n\nLumpy reclaim had a purpose but in the mind of some, it was to kick the\nsystem so hard it trashed.  For others the purpose was to complicate\nvmscan.c.  Over time it was giving softer shoes and a nicer attitude but\nmemory compaction needs to step up and replace it so this patch sends\nlumpy reclaim to the farm.\n\nThe tracepoint format changes for isolating LRU pages with this patch\napplied.  Furthermore reclaim/compaction can no longer queue dirty pages\nin pageout() if the underlying BDI is congested.  Lumpy reclaim used\nthis logic and reclaim/compaction was using it in error.\n\nChange-Id: Ib2992962c9e99cf250a7f859bb2a67034051e4d4\nSigned-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nGit-commit: c53919adc045bf803252e912f23028a68525753d\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Laura Abbott \u003clauraa@codeaurora.org\u003e\n"
    },
    {
      "commit": "67bed6808090539cefdc0ecd2738e12ba8bc037e",
      "tree": "554f4cf1f7d9ec8997ffbbf74d0a5284f98cd17c",
      "parents": [
        "1bee7b9b43a3b5530c62523d582aef7c3f7028ca"
      ],
      "author": {
        "name": "Arun Bharadwaj",
        "email": "abharadw@codeaurora.org",
        "time": "Wed Jul 03 10:35:02 2013 -0700"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Jan 17 22:12:13 2014 -0800"
      },
      "message": "tracing/sched: Add trace events to track cpu hotplug.\n\nAdd ftrace event trace_sched_cpu_hotplug to track cpu\nhot-add and hot-remove events.\n\nThis is useful in a variety of power, performance and\ndebug analysis scenarios.\n\nChange-Id: I5d202c7a229ffacc3aafb7cf9afee0b0ee7b0931\nSigned-off-by: Arun Bharadwaj \u003cabharadw@codeaurora.org\u003e\n"
    },
    {
      "commit": "5865888f1a4adc6a5937a5a2c4de57b353825c9f",
      "tree": "06f9f0a7fd7edd04e6b7c47495740815645a203d",
      "parents": [
        "b7b5c68565878a95eb08514f8140df16cf82882e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Jul 12 14:46:37 2012 -0700"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Jan 17 22:12:10 2014 -0800"
      },
      "message": "workqueue: factor out worker_pool from global_cwq\n\nMove worklist and all worker management fields from global_cwq into\nthe new struct worker_pool.  worker_pool points back to the containing\ngcwq.  worker and cpu_workqueue_struct are updated to point to\nworker_pool instead of gcwq too.\n\nThis change is mechanical and doesn\u0027t introduce any functional\ndifference other than rearranging of fields and an added level of\nindirection in some places.  This is to prepare for multiple pools per\ngcwq.\n\nv2: Comment typo fixes as suggested by Namhyung.\n\nChange-Id: Iefae84798c2af580f425b92ed79117935d99f21f\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nGit-commit: bd7bdd43dcb81bb08240b9401b36a104f77dc135\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Matt Wagantall \u003cmattw@codeaurora.org\u003e\n"
    },
    {
      "commit": "2a38ada0f1ab9f894eea4428731ebc811b51c3f3",
      "tree": "759c765808a23a3a35e4ba10d8306c847c0205b7",
      "parents": [
        "19218e895cefdd389c96af12c93c89e7276bbaad",
        "44d19f5a04ae4e433548ba2f25e4d2ccfcac765e"
      ],
      "author": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Sun Dec 08 12:50:38 2013 -0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Sun Dec 08 12:50:38 2013 -0800"
      },
      "message": "Merge tag \u0027v3.4.72\u0027 into tmp\n\nThis is the 3.4.72 stable release\n\nConflicts:\n\tarch/arm/Kconfig\n\tarch/arm/include/asm/mutex.h\n\tarch/arm/kernel/perf_event.c\n\tarch/arm/kernel/traps.c\n\tarch/arm/mm/dma-mapping.c\n\tdrivers/base/power/main.c\n\tdrivers/bluetooth/ath3k.c\n\tdrivers/bluetooth/btusb.c\n\tdrivers/gpu/drm/radeon/radeon_mode.h\n\tdrivers/mmc/card/block.c\n\tdrivers/mmc/host/sdhci.c\n\tdrivers/usb/core/message.c\n\tdrivers/usb/host/xhci-plat.c\n\tdrivers/usb/host/xhci.h\n\tdrivers/virtio/virtio_ring.c\n\tfs/ubifs/dir.c\n\tinclude/linux/freezer.h\n\tinclude/linux/virtio.h\n\tinclude/media/v4l2-ctrls.h\n\tinclude/net/bluetooth/hci_core.h\n\tinclude/net/bluetooth/mgmt.h\n\tkernel/cgroup.c\n\tkernel/futex.c\n\tkernel/signal.c\n\tnet/bluetooth/hci_conn.c\n\tnet/bluetooth/hci_core.c\n\tnet/bluetooth/hci_event.c\n\tnet/bluetooth/l2cap_core.c\n\tnet/bluetooth/mgmt.c\n\tnet/bluetooth/rfcomm/sock.c\n\tnet/bluetooth/smp.c\n\nChange-Id: I4fb0d5de74ca76f933d95d98e1a9c2c859402f34\n"
    },
    {
      "commit": "4d815b62becdae153d9541b49ba323cd58459a97",
      "tree": "8c24b8043089de504e8c6d6af9c0f6271d112920",
      "parents": [
        "1d78aecdc9eb045e8c6b90050911324d3d0fc51f"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue Nov 26 09:22:54 2013 -0500"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Wed Dec 04 10:50:34 2013 -0800"
      },
      "message": "tracing: Allow events to have NULL strings\n\ncommit 4e58e54754dc1fec21c3a9e824bc108b05fdf46e upstream.\n\nIf an TRACE_EVENT() uses __assign_str() or __get_str on a NULL pointer\nthen the following oops will happen:\n\nBUG: unable to handle kernel NULL pointer dereference at   (null)\nIP: [\u003cc127a17b\u003e] strlen+0x10/0x1a\n*pde \u003d 00000000 ^M\nOops: 0000 [#1] PREEMPT SMP\nModules linked in:\nCPU: 1 PID: 0 Comm: swapper/1 Not tainted 3.13.0-rc1-test+ #2\nHardware name:                  /DG965MQ, BIOS MQ96510J.86A.0372.2006.0605.1717 06/05/2006^M\ntask: f5cde9f0 ti: f5e5e000 task.ti: f5e5e000\nEIP: 0060:[\u003cc127a17b\u003e] EFLAGS: 00210046 CPU: 1\nEIP is at strlen+0x10/0x1a\nEAX: 00000000 EBX: c2472da8 ECX: ffffffff EDX: c2472da8\nESI: c1c5e5fc EDI: 00000000 EBP: f5e5fe84 ESP: f5e5fe80\n DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068\nCR0: 8005003b CR2: 00000000 CR3: 01f32000 CR4: 000007d0\nStack:\n f5f18b90 f5e5feb8 c10687a8 0759004f 00000005 00000005 00000005 00200046\n 00000002 00000000 c1082a93 f56c7e28 c2472da8 c1082a93 f5e5fee4 c106bc61^M\n 00000000 c1082a93 00000000 00000000 00000001 00200046 00200082 00000000\nCall Trace:\n [\u003cc10687a8\u003e] ftrace_raw_event_lock+0x39/0xc0\n [\u003cc1082a93\u003e] ? ktime_get+0x29/0x69\n [\u003cc1082a93\u003e] ? ktime_get+0x29/0x69\n [\u003cc106bc61\u003e] lock_release+0x57/0x1a5\n [\u003cc1082a93\u003e] ? ktime_get+0x29/0x69\n [\u003cc10824dd\u003e] read_seqcount_begin.constprop.7+0x4d/0x75\n [\u003cc1082a93\u003e] ? ktime_get+0x29/0x69^M\n [\u003cc1082a93\u003e] ktime_get+0x29/0x69\n [\u003cc108a46a\u003e] __tick_nohz_idle_enter+0x1e/0x426\n [\u003cc10690e8\u003e] ? lock_release_holdtime.part.19+0x48/0x4d\n [\u003cc10bc184\u003e] ? time_hardirqs_off+0xe/0x28\n [\u003cc1068c82\u003e] ? trace_hardirqs_off_caller+0x3f/0xaf\n [\u003cc108a8cb\u003e] tick_nohz_idle_enter+0x59/0x62\n [\u003cc1079242\u003e] cpu_startup_entry+0x64/0x192\n [\u003cc102299c\u003e] start_secondary+0x277/0x27c\nCode: 90 89 c6 89 d0 88 c4 ac 38 e0 74 09 84 c0 75 f7 be 01 00 00 00 89 f0 48 5e 5d c3 55 89 e5 57 66 66 66 66 90 83 c9 ff 89 c7 31 c0 \u003cf2\u003e ae f7 d1 8d 41 ff 5f 5d c3 55 89 e5 57 66 66 66 66 90 31 ff\nEIP: [\u003cc127a17b\u003e] strlen+0x10/0x1a SS:ESP 0068:f5e5fe80\nCR2: 0000000000000000\n---[ end trace 01bc47bf519ec1b2 ]---\n\nNew tracepoints have been added that have allowed for NULL pointers\nbeing assigned to strings. To fix this, change the TRACE_EVENT() code\nto check for NULL and if it is, it will assign \"(null)\" to it instead\n(similar to what glibc printf does).\n\nReported-by: Shuah Khan \u003cshuah.kh@samsung.com\u003e\nReported-by: Jovi Zhangwei \u003cjovi.zhangwei@gmail.com\u003e\nLink: http://lkml.kernel.org/r/CAGdX0WFeEuy+DtpsJzyzn0343qEEjLX97+o1VREFkUEhndC+5Q@mail.gmail.com\nLink: http://lkml.kernel.org/r/528D6972.9010702@samsung.com\nFixes: 9cbf117662e2 (\"tracing/events: provide string with undefined size support\")\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\n"
    },
    {
      "commit": "dde448d95d8698ee4c8373bb48fe08a22f41052f",
      "tree": "7fe87fa93bfa5b81e6f87b147e32512d2e8198e3",
      "parents": [
        "ac4f6190fae02a3dc30133f90488b996f726bf7a",
        "f95b978981a7d154ba40d14c18e8ed5c694e6124"
      ],
      "author": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Thu Jun 20 11:32:42 2013 -0700"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Thu Jun 20 11:32:42 2013 -0700"
      },
      "message": "Merge tag \u0027v3.4.10\u0027 into cm-10.1\n\nThis is the 3.4.10 stable release\n\nConflicts:\n\tarch/arm/mm/tlb-v7.S\n\tarch/arm/vfp/entry.S\n\tdrivers/base/power/main.c\n\tdrivers/mmc/host/sdhci.c\n\tdrivers/net/tun.c\n\tdrivers/usb/core/hub.c\n\tdrivers/usb/host/xhci.h\n\tinclude/linux/sched.h\n\tkernel/power/suspend.c\n\nChange-Id: Ia2477ec93ceb64b13dd1a2d8aa646cb233387d14\n"
    },
    {
      "commit": "27f7b8e4f7c64ad67c05d48c8ba66a579325310d",
      "tree": "86db995c3eea9691ab6347862f0511942c020c28",
      "parents": [
        "ae7f28c9fd4983d1cb2d5dfc1a8a288609380a8e"
      ],
      "author": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Wed Nov 28 17:56:09 2012 -0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Jun 07 13:40:37 2013 -0700"
      },
      "message": "cpufreq: interactive: trace actual speed in target speed decisions\n\nTracing adds actual speed since this is expected to be key to the\nchoice of target speed.\n\nChange-Id: Iec936102d0010c4e9dfa143c38a9fd0d551189c3\nSigned-off-by: Todd Poynor \u003ctoddpoynor@google.com\u003e\n"
    },
    {
      "commit": "02442cfffdf244cf4de85e49284418cb3ec9d136",
      "tree": "03d174e9a1b54c40147291234c59ccd71fd910c1",
      "parents": [
        "a13f415409631980f8dcf26a16a61c0c5cde12d1"
      ],
      "author": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Mon Jul 16 17:07:15 2012 -0700"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Fri Jun 07 13:40:36 2013 -0700"
      },
      "message": "cpufreq: interactive: handle speed up and down in the realtime task\n\nNot useful to have a separate, non-realtime workqueue for speed down\nevents, avoid priority inversion for speed up events.\n\nChange-Id: Iddcd05545245c847aa1bbe0b8790092914c813d2\nSigned-off-by: Todd Poynor \u003ctoddpoynor@google.com\u003e\n"
    },
    {
      "commit": "71702f9133a19decfb78791b51066027775ce245",
      "tree": "9c7eec9115bb839b13e181a4befb13ccf407bd1a",
      "parents": [
        "a62469141760f07555f32087ba009f87bc63dc7b"
      ],
      "author": {
        "name": "Sujit Reddy Thumma",
        "email": "sthumma@codeaurora.org",
        "time": "Thu Feb 14 08:13:52 2013 +0530"
      },
      "committer": {
        "name": "Sujit Reddy Thumma",
        "email": "sthumma@codeaurora.org",
        "time": "Mon Apr 29 10:24:57 2013 +0530"
      },
      "message": "mmc: core: Log MMC clock frequency transitions\n\nUse kernel\u0027s ftrace support to capture MMC clock frequency\ntransitions which can be useful for debugging issues related\nto power consumption.\n\nUsage:\nmount -t debugfs none /sys/kernel/debug\necho 1 \u003e /sys/kernel/debug/tracing/events/mmc/mmc_clk/enable\ncat /sys/kernel/debug/tracing/trace_pipe\n\nChange-Id: I25c4ee39dcbe30e7665902a9f723a5a421b55ca3\nSigned-off-by: Sujit Reddy Thumma \u003csthumma@codeaurora.org\u003e\n"
    },
    {
      "commit": "da3ee189b71515c15fa742f4f6675d7560fbe2e4",
      "tree": "18241487721834b418897b2f73586e1b2b1ad10e",
      "parents": [
        "f32402f621c04cd1a8584487fb90640cad6af971"
      ],
      "author": {
        "name": "Pushkar Joshi",
        "email": "pushkarj@codeaurora.org",
        "time": "Fri Sep 07 14:22:58 2012 -0700"
      },
      "committer": {
        "name": "Pratik Patel",
        "email": "pratikp@codeaurora.org",
        "time": "Wed Jan 30 16:09:26 2013 -0800"
      },
      "message": "tracing: ftrace events for user faults and undefined instructions\n\nNew ftrace events (user_fault and undef_instr) for data, prefetch\nor undefined instruction aborts. The new ftrace events are under\nevents/exception.\n\nChange-Id: Iea328b71a1f623861cac9b45d858c3bbe09e1b82\nSigned-off-by: Pushkar Joshi \u003cpushkarj@codeaurora.org\u003e\n"
    },
    {
      "commit": "da205c80275a7f7a90c2baab423783c55c406878",
      "tree": "ca82d03015baada1f76432e5fc4f4a0777ec00e4",
      "parents": [
        "ccd37ab3230af7b32db1a139d9fe95918813bc23"
      ],
      "author": {
        "name": "Konrad Rzeszutek Wilk",
        "email": "konrad.wilk@oracle.com",
        "time": "Wed Oct 31 12:38:31 2012 -0400"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Sat Nov 17 13:15:54 2012 -0800"
      },
      "message": "xen/mmu: Use Xen specific TLB flush instead of the generic one.\n\ncommit 95a7d76897c1e7243d4137037c66d15cbf2cce76 upstream.\n\nAs Mukesh explained it, the MMUEXT_TLB_FLUSH_ALL allows the\nhypervisor to do a TLB flush on all active vCPUs. If instead\nwe were using the generic one (which ends up being xen_flush_tlb)\nwe end up making the MMUEXT_TLB_FLUSH_LOCAL hypercall. But\nbefore we make that hypercall the kernel will IPI all of the\nvCPUs (even those that were asleep from the hypervisor\nperspective). The end result is that we needlessly wake them\nup and do a TLB flush when we can just let the hypervisor\ndo it correctly.\n\nThis patch gives around 50% speed improvement when migrating\nidle guest\u0027s from one host to another.\n\nOracle-bug: 14630170\n\nTested-by:  Jingjie Jiang \u003cjingjie.jiang@oracle.com\u003e\nSuggested-by:  Mukesh Rathor \u003cmukesh.rathor@oracle.com\u003e\nSigned-off-by: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\n"
    },
    {
      "commit": "f9174f7ba336e90855768dba6a0f3caf535129e2",
      "tree": "1dc0966618e834aa4b89fa7eb844376fb031f4d1",
      "parents": [
        "807ec598f2ea098ab740b5126169d550a2abe090"
      ],
      "author": {
        "name": "Matt Wagantall",
        "email": "mattw@codeaurora.org",
        "time": "Mon Jul 30 19:47:52 2012 -0700"
      },
      "committer": {
        "name": "Sudhir Sharma",
        "email": "sudsha@codeaurora.org",
        "time": "Mon Nov 12 01:25:25 2012 -0800"
      },
      "message": "trace: power: add cpu_frequency_switch_{start, end}\n\nIt is sometimes useful to profile how long CPU frequency switches\ntake, since they often involve variable overhead (PLL lock times,\nvoltage increase time, etc.). Add additional traces to to make this\npossible.\n\nSince the overhead involved may differ based on the frequencies\nbeing switched between, record both the start and the end frequencies\nas part of the trace.\n\nChange-Id: I2de743fc357dad3590fd4980f65f38f6073d426e\nSigned-off-by: Matt Wagantall \u003cmattw@codeaurora.org\u003e\n(cherry picked from commit 0fe22de09613ce497561f51151b2c50b6c4a1c3e)\n(cherry picked from commit 9ab0adbcac4df4d681617a8368329d2f4cad4171)\n"
    },
    {
      "commit": "07cf2ff9dab0af84c1eff39bdc090604c0c7c193",
      "tree": "3e20260ef24582e39500d861b57dffbf294d642f",
      "parents": [
        "8d843b3248242976e9aa17976f9ccd17aec27967"
      ],
      "author": {
        "name": "Abhijeet Dharmapurikar",
        "email": "adharmap@codeaurora.org",
        "time": "Thu Sep 13 19:05:13 2012 -0700"
      },
      "committer": {
        "name": "Sudhir Sharma",
        "email": "sudsha@codeaurora.org",
        "time": "Wed Oct 31 01:28:09 2012 -0700"
      },
      "message": "msm: mpdcvs: add ftrace events.\n\nAdd ftrace events at interesting points in the dcvs and mpdecision code.\n\nSigned-off-by: Abhijeet Dharmapurikar \u003cadharmap@codeaurora.org\u003e\n(cherry picked from commit f17f2d347acf17097ab5c6907bdc5a4c9e631a6d)\n\nSigned-off-by: Ram Kumar Chakravarthy Chebathini \u003crcheba@codeaurora.org\u003e\n(cherry picked from commit 950f6a4af8454ffff69b84bd3830c7091bc53c0c)\n\nChange-Id: Ic5cc00539b837090010627f364428c157137f052\nSigned-off-by: Sudhir Sharma \u003csudsha@codeaurora.org\u003e\n"
    },
    {
      "commit": "8e0b3254cd4cc41d23364f36a88f9223761d9fff",
      "tree": "180dcb6f694294d67b213426dbf251e68ee03328",
      "parents": [
        "bf7a56a7b36c5bf896b1a864a82ca28331689298"
      ],
      "author": {
        "name": "Ajay Dudani",
        "email": "adudani@codeaurora.org",
        "time": "Tue Oct 16 16:14:48 2012 -0700"
      },
      "committer": {
        "name": "Android Partner Code Review",
        "email": "android-gerrit-partner@google.com",
        "time": "Wed Oct 17 17:29:27 2012 -0700"
      },
      "message": "sync: add tracepoint support\n\nChange-Id: I181326db4247009161557e45444c9b3548b83d25\nSigned-off-by: Erik Gilling \u003ckonkers@android.com\u003e\n"
    },
    {
      "commit": "c648535596087f7d17458c293d69829ff6e60a6c",
      "tree": "e53d6a8026ad35a0cadda0e812faa95c8ef054c4",
      "parents": [
        "dca2dd18c62e3b90cb71534e0a715d246ce7196d"
      ],
      "author": {
        "name": "Wen Congyang",
        "email": "wency@cn.fujitsu.com",
        "time": "Thu Sep 20 14:04:47 2012 +0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Tue Oct 02 10:30:08 2012 -0700"
      },
      "message": "tracing: Don\u0027t call page_to_pfn() if page is NULL\n\ncommit 85f2a2ef1d0ab99523e0b947a2b723f5650ed6aa upstream.\n\nWhen allocating memory fails, page is NULL. page_to_pfn() will\ncause the kernel panicked if we don\u0027t use sparsemem vmemmap.\n\nLink: http://lkml.kernel.org/r/505AB1FF.8020104@cn.fujitsu.com\n\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nReviewed-by: Minchan Kim \u003cminchan@kernel.org\u003e\nSigned-off-by: Wen Congyang \u003cwency@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\n"
    },
    {
      "commit": "38e16fc638792ddc12da853c4836602a8708e166",
      "tree": "1fee9674e85a885501c4905cdf017cd5d6e15089",
      "parents": [
        "29aef9dee78ac45c5bd7f91434b05144ec220abd"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jul 04 16:19:30 2012 -0400"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Wed Aug 15 08:10:28 2012 -0700"
      },
      "message": "random: add tracepoints for easier debugging and verification\n\ncommit 00ce1db1a634746040ace24c09a4e3a7949a3145 upstream.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\n"
    },
    {
      "commit": "8e1e6b65fe92a0fa7bdb787fc7d9c5c0eae3d654",
      "tree": "6c33e4563cfedb58255520fe5b0142c861638a17",
      "parents": [
        "cf7d045799f928ac338dbc9fea42538567a513e9"
      ],
      "author": {
        "name": "Pratik Patel",
        "email": "pratikp@codeaurora.org",
        "time": "Fri Jun 29 12:24:49 2012 -0700"
      },
      "committer": {
        "name": "Pratik Patel",
        "email": "pratikp@codeaurora.org",
        "time": "Sat Aug 11 16:40:46 2012 -0700"
      },
      "message": "coresight: enable stm logging for ftrace events and printk\n\nDup ftrace event traffic (including writes to trace_marker file from\nuserspace) to STM. Also dup printk traffic to STM. This allows Linux\ntracing and log data to be correlated with other data transported over\nSTM.\n\nChange-Id: Ieb0b856447f7667eb0005a6a884211dc46f50217\nSigned-off-by: Pratik Patel \u003cpratikp@codeaurora.org\u003e\n"
    },
    {
      "commit": "a2cd6eaf5deaa40098eb6b692797519bc173381e",
      "tree": "394c41fd81c621ae5b1058789a19d5dfbc063a23",
      "parents": [
        "f330512d2f143a667aeba4438b5a7b95cb82e470"
      ],
      "author": {
        "name": "Badhri Jagan Sridharan",
        "email": "badhris@codeaurora.org",
        "time": "Wed Jul 18 15:46:01 2012 -0700"
      },
      "committer": {
        "name": "Badhri Jagan Sridharan",
        "email": "badhris@codeaurora.org",
        "time": "Thu Jul 26 18:49:05 2012 -0700"
      },
      "message": "trace: Modify timer_start and irq_handler_entry trace events.\n\nThe timer_start event now shows whether the timer is\ndeferrable in case of a low-res timer. The debug_activate\nfunction now includes deferrable flag while calling\ntrace_timer_start event. irq_handler_entry\nevent includes the ISR function in the trace event.\n\nChange-Id: Ia2eeb4fa0fae34b301964144dad8bcef7632487c\nSigned-off-by: Badhri Jagan Sridharan \u003cbadhris@codeaurora.org\u003e\n"
    },
    {
      "commit": "af120e1797e3ab6a748abee53e8f9d3cd4a30322",
      "tree": "49e953fb136ae1abd6c18b95fbcf75051de52c8c",
      "parents": [
        "5a5aa70d89f53efed39945d1dd964843a3bac494"
      ],
      "author": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Fri May 11 11:06:09 2012 -0700"
      },
      "committer": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Tue May 22 18:50:10 2012 -0700"
      },
      "message": "cpufreq: interactive: fixup trace of string params\n\nChange-Id: Iac47f62437e61b13724afbbf9df1a0729f58f236\nSigned-off-by: Todd Poynor \u003ctoddpoynor@google.com\u003e\n"
    },
    {
      "commit": "56afe26f4bf74f81904671ba416bac7e78c18602",
      "tree": "5c5f9b39c8c5a7c07c21d176172a7dda40e214cb",
      "parents": [
        "420a95f37b73ecfdd89cd63f83d3369dbc4cb2ab"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed May 09 16:09:50 2012 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu May 10 15:38:14 2012 -0700"
      },
      "message": "trace: power: add trace_clock_set_parent\n\nAdds a new trace event to be called from clk_set_parent.  Some\ncpufreq drivers, including Tegra, reparent the cpu clock to a\nslower clock while the main pll is relocking, tracing\nclk_set_parent allows traces to show how for long the cpu is\nrunning slower.\n\nUses a separate TRACE_EVENT instead of the clock event class to\nallow the event to contain string names for the child and the\nparent.\n\nSigned-off-by: Colin Cross \u003cccross@android.com\u003e\n"
    },
    {
      "commit": "2e739a07915b74ed4bc106a228b552fa807ed24c",
      "tree": "14a3216f7cdf00d23b6e8985381060ada6fcec13",
      "parents": [
        "aadf030d84352a91cdadf50f947da739c5611450"
      ],
      "author": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Thu May 03 00:16:55 2012 -0700"
      },
      "committer": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Thu May 03 17:41:51 2012 -0700"
      },
      "message": "cpufreq: interactive: add boost pulse interface\n\nChange-Id: Icf1e86d2065cc8f0816ba9c6b065eb056d4e8249\nSigned-off-by: Todd Poynor \u003ctoddpoynor@google.com\u003e\n"
    },
    {
      "commit": "9fb153153b508b260d62746e18a523d43acba180",
      "tree": "30e5c791d59571b0c556c1e05bdb2d5a5dae2860",
      "parents": [
        "96aa0fc5ecfad49f891ed2085d16ee785500b49a"
      ],
      "author": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Mon Apr 23 20:42:41 2012 -0700"
      },
      "committer": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Thu Apr 26 17:06:14 2012 -0700"
      },
      "message": "cpufreq: interactive: Add sysfs boost interface for hints from userspace\n\nThe explicit hint on/off version.\n\nChange-Id: Ibf62b6d45bf6fb8c9c055b9bdaf074ce9374c04f\nSigned-off-by: Todd Poynor \u003ctoddpoynor@google.com\u003e\n"
    },
    {
      "commit": "7820a652885153a6f7062df100914adeccab9eef",
      "tree": "5f021d0bf3a3741508b7fb23eab9af90e7cf982c",
      "parents": [
        "bc699d87bc79fd1cf1ec6f8e9616f8adeece24a0"
      ],
      "author": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Mon Apr 02 17:17:14 2012 -0700"
      },
      "committer": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Thu Apr 26 17:05:01 2012 -0700"
      },
      "message": "cpufreq: interactive: Boost frequency on touchscreen input\n\nBased on previous patches by Tero Kristo \u003ctero.kristo@nokia.com\u003e,\nBrian Steuer \u003cbsteuer@codeaurora.org\u003e,\nDavid Ng \u003cdave@codeaurora.org\u003e,\nAntti P Miettinen \u003camiettinen@nvidia.com\u003e, and\nThomas Renninger \u003ctrenn@suse.de\u003e\n\nChange-Id: Ic55fedcf6f9310f43a7022fb88e23b0392122769\nSigned-off-by: Todd Poynor \u003ctoddpoynor@google.com\u003e\n"
    },
    {
      "commit": "a1e1951420229c30415b800660ca3de07f148c8d",
      "tree": "2051952f24887ddffe9184c6f2c75414fd9aec0d",
      "parents": [
        "b8e586dd5954841c39be70f185bb391fd5dcb29d"
      ],
      "author": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Thu Feb 16 16:27:59 2012 -0800"
      },
      "committer": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Wed Apr 18 22:49:58 2012 -0700"
      },
      "message": "cpufreq interactive governor: event tracing\n\nChange-Id: Ic13614a3da2faa2d4bd215ca3eb7191614f0cf66\nSigned-off-by: Todd Poynor \u003ctoddpoynor@google.com\u003e\n"
    },
    {
      "commit": "66cfb32772495068fbb5627b2dc88649ad66c3e5",
      "tree": "4ce3537afdbd9be92a7a3e6ef4e8e8519ee11543",
      "parents": [
        "6742259866d03d5bc19815441ba928e8378343dc",
        "7b8e6da46b921d30ac1553cac56d8fb74f0b431d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 04 10:04:42 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 04 10:04:42 2012 -0700"
      },
      "message": "Merge branch \u0027perf-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull perf fixes from Ingo Molnar.\n\n* \u0027perf-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  perf/x86/p4: Add format attributes\n  tracing, sched, vfs: Fix \u0027old_pid\u0027 usage in trace_sched_process_exec()\n"
    },
    {
      "commit": "6308191f6f55d3629c7dbe72dfb856ad9fa560fd",
      "tree": "d3f073b0e522fc7dbee52ca6c25d92f28059f2fd",
      "parents": [
        "8ebfdf2babcda5a3b06cc67523bca1f9aed46009"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Mar 30 18:26:36 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sat Mar 31 11:53:22 2012 +0200"
      },
      "message": "tracing, sched, vfs: Fix \u0027old_pid\u0027 usage in trace_sched_process_exec()\n\n1. TRACE_EVENT(sched_process_exec) forgets to actually use the\n   old pid argument, it sets -\u003eold_pid \u003d p-\u003epid.\n\n2. search_binary_handler() uses the wrong pid number. tracepoint\n   needs the global pid_t from the root namespace, while old_pid\n   is the virtual pid number as it seen by the tracer/parent.\n\nWith this patch we have two pid_t\u0027s in search_binary_handler(),\nnot really nice. Perhaps we should switch to \"struct pid*\", but\nin this case it would be better to cleanup the current code\nfirst and move the \"depth \u003d\u003d 0\" code outside.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: David Smith \u003cdsmith@redhat.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Denys Vlasenko \u003cdvlasenk@redhat.com\u003e\nLink: http://lkml.kernel.org/r/20120330162636.GA4857@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "9613bebb223dea3179c265dc31e1bb41ae39f321",
      "tree": "39bf883573d23775a53be3172323c0237fef5630",
      "parents": [
        "40380f1c7841a5dcbf0b20f0b6da11969211ef77",
        "bc3f116fec194f1d7329b160c266fe16b9266a1e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 30 12:44:29 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 30 12:44:29 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\nPull btrfs fixes and features from Chris Mason:\n \"We\u0027ve merged in the error handling patches from SuSE.  These are\n  already shipping in the sles kernel, and they give btrfs the ability\n  to abort transactions and go readonly on errors.  It involves a lot of\n  churn as they clarify BUG_ONs, and remove the ones we now properly\n  deal with.\n\n  Josef reworked the way our metadata interacts with the page cache.\n  page-\u003eprivate now points to the btrfs extent_buffer object, which\n  makes everything faster.  He changed it so we write an whole extent\n  buffer at a time instead of allowing individual pages to go down,,\n  which will be important for the raid5/6 code (for the 3.5 merge\n  window ;)\n\n  Josef also made us more aggressive about dropping pages for metadata\n  blocks that were freed due to COW.  Overall, our metadata caching is\n  much faster now.\n\n  We\u0027ve integrated my patch for metadata bigger than the page size.\n  This allows metadata blocks up to 64KB in size.  In practice 16K and\n  32K seem to work best.  For workloads with lots of metadata, this cuts\n  down the size of the extent allocation tree dramatically and fragments\n  much less.\n\n  Scrub was updated to support the larger block sizes, which ended up\n  being a fairly large change (thanks Stefan Behrens).\n\n  We also have an assortment of fixes and updates, especially to the\n  balancing code (Ilya Dryomov), the back ref walker (Jan Schmidt) and\n  the defragging code (Liu Bo).\"\n\nFixed up trivial conflicts in fs/btrfs/scrub.c that were just due to\nremoval of the second argument to k[un]map_atomic() in commit\n7ac687d9e047.\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (75 commits)\n  Btrfs: update the checks for mixed block groups with big metadata blocks\n  Btrfs: update to the right index of defragment\n  Btrfs: do not bother to defrag an extent if it is a big real extent\n  Btrfs: add a check to decide if we should defrag the range\n  Btrfs: fix recursive defragment with autodefrag option\n  Btrfs: fix the mismatch of page-\u003emapping\n  Btrfs: fix race between direct io and autodefrag\n  Btrfs: fix deadlock during allocating chunks\n  Btrfs: show useful info in space reservation tracepoint\n  Btrfs: don\u0027t use crc items bigger than 4KB\n  Btrfs: flush out and clean up any block device pages during mount\n  btrfs: disallow unequal data/metadata blocksize for mixed block groups\n  Btrfs: enhance superblock sanity checks\n  Btrfs: change scrub to support big blocks\n  Btrfs: minor cleanup in scrub\n  Btrfs: introduce common define for max number of mirrors\n  Btrfs: fix infinite loop in btrfs_shrink_device()\n  Btrfs: fix memory leak in resolver code\n  Btrfs: allow dup for data chunks in mixed mode\n  Btrfs: validate target profiles only if we are going to use them\n  ...\n"
    },
    {
      "commit": "69e1aaddd63104f37021d0b0f6abfd9623c9134c",
      "tree": "14ad49741b428d270b681694bb2df349465455b9",
      "parents": [
        "56b59b429b4c26e5e730bc8c3d837de9f7d0a966",
        "9d547c35799a4ddd235f1565cec2fff6c9263504"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 10:02:55 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 10:02:55 2012 -0700"
      },
      "message": "Merge tag \u0027ext4_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\nPull ext4 updates for 3.4 from Ted Ts\u0027o:\n \"Ext4 commits for 3.3 merge window; mostly cleanups and bug fixes\n\n  The changes to export dirty_writeback_interval are from Artem\u0027s s_dirt\n  cleanup patch series.  The same is true of the change to remove the\n  s_dirt helper functions which never got used by anyone in-tree.  I\u0027ve\n  run these changes by Al Viro, and am carrying them so that Artem can\n  more easily fix up the rest of the file systems during the next merge\n  window.  (Originally we had hopped to remove the use of s_dirt from\n  ext4 during this merge window, but his patches had some bugs, so I\n  ultimately ended dropping them from the ext4 tree.)\"\n\n* tag \u0027ext4_for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (66 commits)\n  vfs: remove unused superblock helpers\n  mm: export dirty_writeback_interval\n  ext4: remove useless s_dirt assignment\n  ext4: write superblock only once on unmount\n  ext4: do not mark superblock as dirty unnecessarily\n  ext4: correct ext4_punch_hole return codes\n  ext4: remove restrictive checks for EOFBLOCKS_FL\n  ext4: always set then trimmed blocks count into len\n  ext4: fix trimmed block count accunting\n  ext4: fix start and len arguments handling in ext4_trim_fs()\n  ext4: update s_free_{inodes,blocks}_count during online resize\n  ext4: change some printk() calls to use ext4_msg() instead\n  ext4: avoid output message interleaving in ext4_error_\u003cfoo\u003e()\n  ext4: remove trailing newlines from ext4_msg() and ext4_error() messages\n  ext4: add no_printk argument validation, fix fallout\n  ext4: remove redundant \"EXT4-fs: \" from uses of ext4_msg\n  ext4: give more helpful error message in ext4_ext_rm_leaf()\n  ext4: remove unused code from ext4_ext_map_blocks()\n  ext4: rewrite punch hole to use ext4_ext_remove_space()\n  jbd2: cleanup journal tail after transaction commit\n  ...\n"
    },
    {
      "commit": "250f6715a4112d6686670c5a62ceb9305da94616",
      "tree": "ee1c9b41ed1fed8174efb312421902f19c877e8c",
      "parents": [
        "11bcb32848ddb5ab28f09f142b625e2ba4d55c4c",
        "313162d0b83836e2f57e51b9b8650fb4b9c396ea"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 24 10:41:37 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 24 10:41:37 2012 -0700"
      },
      "message": "Merge tag \u0027device-for-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\nPull \u003clinux/device.h\u003e avoidance patches from Paul Gortmaker:\n \"Nearly every subsystem has some kind of header with a proto like:\n\n\tvoid foo(struct device *dev);\n\n  and yet there is no reason for most of these guys to care about the\n  sub fields within the device struct.  This allows us to significantly\n  reduce the scope of headers including headers.  For this instance, a\n  reduction of about 40% is achieved by replacing the include with the\n  simple fact that the device is some kind of a struct.\n\n  Unlike the much larger module.h cleanup, this one is simply two\n  commits.  One to fix the implicit \u003clinux/device.h\u003e users, and then one\n  to delete the device.h includes from the linux/include/ dir wherever\n  possible.\"\n\n* tag \u0027device-for-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:\n  device.h: audit and cleanup users in main include dir\n  device.h: cleanup users outside of linux/include (C files)\n"
    },
    {
      "commit": "f63d395d47f37a4fe771e6d4b1db9d2cdae5ffc5",
      "tree": "3448a14ae965802adb963762cadeb9989ce4caa2",
      "parents": [
        "643ac9fc5429e85b8b7f534544b80bcc4f34c367",
        "5a7c9eec9fde1da0e3adf0a4ddb64ff2a324a492"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 08:53:47 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 08:53:47 2012 -0700"
      },
      "message": "Merge tag \u0027nfs-for-3.4-1\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs\n\nPull NFS client updates for Linux 3.4 from Trond Myklebust:\n \"New features include:\n   - Add NFS client support for containers.\n\n     This should enable most of the necessary functionality, including\n     lockd support, and support for rpc.statd, NFSv4 idmapper and\n     RPCSEC_GSS upcalls into the correct network namespace from which\n     the mount system call was issued.\n\n   - NFSv4 idmapper scalability improvements\n\n     Base the idmapper cache on the keyring interface to allow\n     concurrent access to idmapper entries.  Start the process of\n     migrating users from the single-threaded daemon-based approach to\n     the multi-threaded request-key based approach.\n\n   - NFSv4.1 implementation id.\n\n     Allows the NFSv4.1 client and server to mutually identify each\n     other for logging and debugging purposes.\n\n   - Support the \u0027vers\u003d4.1\u0027 mount option for mounting NFSv4.1 instead of\n     having to use the more counterintuitive \u0027vers\u003d4,minorversion\u003d1\u0027.\n\n   - SUNRPC tracepoints.\n\n     Start the process of adding tracepoints in order to improve\n     debugging of the RPC layer.\n\n   - pNFS object layout support for autologin.\n\n  Important bugfixes include:\n\n   - Fix a bug in rpc_wake_up/rpc_wake_up_status that caused them to\n     fail to wake up all tasks when applied to priority waitqueues.\n\n   - Ensure that we handle read delegations correctly, when we try to\n     truncate a file.\n\n   - A number of fixes for NFSv4 state manager loops (mostly to do with\n     delegation recovery).\"\n\n* tag \u0027nfs-for-3.4-1\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (224 commits)\n  NFS: fix sb-\u003es_id in nfs debug prints\n  xprtrdma: Remove assumption that each segment is \u003c\u003d PAGE_SIZE\n  xprtrdma: The transport should not bug-check when a dup reply is received\n  pnfs-obj: autologin: Add support for protocol autologin\n  NFS: Remove nfs4_setup_sequence from generic rename code\n  NFS: Remove nfs4_setup_sequence from generic unlink code\n  NFS: Remove nfs4_setup_sequence from generic read code\n  NFS: Remove nfs4_setup_sequence from generic write code\n  NFS: Fix more NFS debug related build warnings\n  SUNRPC/LOCKD: Fix build warnings when CONFIG_SUNRPC_DEBUG is undefined\n  nfs: non void functions must return a value\n  SUNRPC: Kill compiler warning when RPC_DEBUG is unset\n  SUNRPC/NFS: Add Kbuild dependencies for NFS_DEBUG/RPC_DEBUG\n  NFS: Use cond_resched_lock() to reduce latencies in the commit scans\n  NFSv4: It is not safe to dereference lsp-\u003els_state in release_lockowner\n  NFS: ncommit count is being double decremented\n  SUNRPC: We must not use list_for_each_entry_safe() in rpc_wake_up()\n  Try using machine credentials for RENEW calls\n  NFSv4.1: Fix a few issues in filelayout_commit_pagelist\n  NFSv4.1: Clean ups and bugfixes for the pNFS read/writeback/commit code\n  ...\n"
    },
    {
      "commit": "9586c959bfc917695893bef0102433a7d0675691",
      "tree": "c8b89e40b7a04c3150e50785e7c48b67df360c83",
      "parents": [
        "34699403e9916060af8ae23f5e4705a6c078e79d",
        "addfd8a09e1f434a73b3d87d36ef050c73511d2b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 20:33:14 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 22 20:33:14 2012 -0700"
      },
      "message": "Merge tag \u0027regmap-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap\n\nPull regmap updates from Mark Brown:\n \"Things are really quieting down with the regmap API, while we\u0027re still\n  seeing a trickle of new features coming in they\u0027re getting much\n  smaller than they were.  It\u0027s also nice to have some features which\n  support other subsystems building infrastructure on top of regmap.\n  Highlights include:\n\n  - Support for padding between the register and the value when\n    interacting with the device, sometimes needed for fast interfaces.\n  - Support for applying register updates to the device when restoring\n    the register state.  This is intended to be used to apply updates\n    supplied by manufacturers for tuning the performance of the device\n    (many of which are to undocumented registers which aren\u0027t otherwise\n    covered).\n  - Support for multi-register operations on cached registers.\n  - Support for syncing only part of the register cache.\n  - Stubs and parameter query functions intended to make it easier for\n    other subsystems to build infrastructure on top of the regmap API.\n\n  plus a few driver updates making use of the new features which it was\n  easier to merge via this tree.\"\n\n* tag \u0027regmap-3.4\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap: (41 commits)\n  regmap: Fix future missing prototype of devres_alloc() and friends\n  regmap: Rejig struct declarations for stubbed API\n  regmap: Fix rbtree block base in sync\n  regcache: Make sure we sync register 0 in an rbtree cache\n  regmap: delete unused module.h from drivers/base/regmap files\n  regmap: Add stub for regcache_sync_region()\n  mfd: Improve performance of later WM1811 revisions\n  regmap: Fix x86_64 breakage\n  regmap: Allow drivers to sync only part of the register cache\n  regmap: Supply ranges to the sync operations\n  regmap: Add tracepoints for cache only and cache bypass\n  regmap: Mark the cache as clean after a successful sync\n  regmap: Remove default cache sync implementation\n  regmap: Skip hardware defaults for LZO caches\n  regmap: Expose the driver name in debugfs\n  mfd: wm8400: Convert to devm_regmap_init_i2c()\n  mfd: wm831x: Convert to devm_regmap_init()\n  mfd: wm8994: Convert to devm_regmap_init()\n  mfd/ASoC: Convert WM8994 driver to use regmap patches\n  mfd: Add __devinit and __devexit annotations in wm8994\n  ...\n"
    },
    {
      "commit": "143bede527b054a271053f41bfaca2b57baa9408",
      "tree": "95c71d3705c73bf98e7a1547da35e70a44703c1e",
      "parents": [
        "ffd7b33944f4573a063af7a55f8a5199c8185665"
      ],
      "author": {
        "name": "Jeff Mahoney",
        "email": "jeffm@suse.com",
        "time": "Thu Mar 01 14:56:26 2012 +0100"
      },
      "committer": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Thu Mar 22 01:45:34 2012 +0100"
      },
      "message": "btrfs: return void in functions without error conditions\n\nSigned-off-by: Jeff Mahoney \u003cjeffm@suse.com\u003e\n"
    },
    {
      "commit": "69a7aebcf019ab3ff5764525ad6858fbe23bb86d",
      "tree": "7211df5704b743a7667159748c670a9744164482",
      "parents": [
        "d464c92b5234227c1698862a1906827e2e398ae0",
        "f1f996b66cc3908a8f5ffccc2ff41840e92f3b10"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 20 21:12:50 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 20 21:12:50 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\nPull trivial tree from Jiri Kosina:\n \"It\u0027s indeed trivial -- mostly documentation updates and a bunch of\n  typo fixes from Masanari.\n\n  There are also several linux/version.h include removals from Jesper.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (101 commits)\n  kcore: fix spelling in read_kcore() comment\n  constify struct pci_dev * in obvious cases\n  Revert \"char: Fix typo in viotape.c\"\n  init: fix wording error in mm_init comment\n  usb: gadget: Kconfig: fix typo for \u0027different\u0027\n  Revert \"power, max8998: Include linux/module.h just once in drivers/power/max8998_charger.c\"\n  writeback: fix fn name in writeback_inodes_sb_nr_if_idle() comment header\n  writeback: fix typo in the writeback_control comment\n  Documentation: Fix multiple typo in Documentation\n  tpm_tis: fix tis_lock with respect to RCU\n  Revert \"media: Fix typo in mixer_drv.c and hdmi_drv.c\"\n  Doc: Update numastat.txt\n  qla4xxx: Add missing spaces to error messages\n  compiler.h: Fix typo\n  security: struct security_operations kerneldoc fix\n  Documentation: broken URL in libata.tmpl\n  Documentation: broken URL in filesystems.tmpl\n  mtd: simplify return logic in do_map_probe()\n  mm: fix comment typo of truncate_inode_pages_range\n  power: bq27x00: Fix typos in comment\n  ...\n"
    },
    {
      "commit": "9c2b957db1772ebf942ae7a9346b14eba6c8ca66",
      "tree": "0dbb83e57260ea7fc0dc421f214d5f1b26262005",
      "parents": [
        "0bbfcaff9b2a69c71a95e6902253487ab30cb498",
        "bea95c152dee1791dd02cbc708afbb115bb00f9a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 20 10:29:15 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 20 10:29:15 2012 -0700"
      },
      "message": "Merge branch \u0027perf-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull perf events changes for v3.4 from Ingo Molnar:\n\n - New \"hardware based branch profiling\" feature both on the kernel and\n   the tooling side, on CPUs that support it.  (modern x86 Intel CPUs\n   with the \u0027LBR\u0027 hardware feature currently.)\n\n   This new feature is basically a sophisticated \u0027magnifying glass\u0027 for\n   branch execution - something that is pretty difficult to extract from\n   regular, function histogram centric profiles.\n\n   The simplest mode is activated via \u0027perf record -b\u0027, and the result\n   looks like this in perf report:\n\n\t$ perf record -b any_call,u -e cycles:u branchy\n\n\t$ perf report -b --sort\u003dsymbol\n\t    52.34%  [.] main                   [.] f1\n\t    24.04%  [.] f1                     [.] f3\n\t    23.60%  [.] f1                     [.] f2\n\t     0.01%  [k] _IO_new_file_xsputn    [k] _IO_file_overflow\n\t     0.01%  [k] _IO_vfprintf_internal  [k] _IO_new_file_xsputn\n\t     0.01%  [k] _IO_vfprintf_internal  [k] strchrnul\n\t     0.01%  [k] __printf               [k] _IO_vfprintf_internal\n\t     0.01%  [k] main                   [k] __printf\n\n   This output shows from/to branch columns and shows the highest\n   percentage (from,to) jump combinations - i.e.  the most likely taken\n   branches in the system.  \"branches\" can also include function calls\n   and any other synchronous and asynchronous transitions of the\n   instruction pointer that are not \u0027next instruction\u0027 - such as system\n   calls, traps, interrupts, etc.\n\n   This feature comes with (hopefully intuitive) flat ascii and TUI\n   support in perf report.\n\n - Various \u0027perf annotate\u0027 visual improvements for us assembly junkies.\n   It will now recognize function calls in the TUI and by hitting enter\n   you can follow the call (recursively) and back, amongst other\n   improvements.\n\n - Multiple threads/processes recording support in perf record, perf\n   stat, perf top - which is activated via a comma-list of PIDs:\n\n\tperf top -p 21483,21485\n\tperf stat -p 21483,21485 -ddd\n\tperf record -p 21483,21485\n\n - Support for per UID views, via the --uid paramter to perf top, perf\n   report, etc.  For example \u0027perf top --uid mingo\u0027 will only show the\n   tasks that I am running, excluding other users, root, etc.\n\n - Jump label restructurings and improvements - this includes the\n   factoring out of the (hopefully much clearer) include/linux/static_key.h\n   generic facility:\n\n\tstruct static_key key \u003d STATIC_KEY_INIT_FALSE;\n\n\t...\n\n\tif (static_key_false(\u0026key))\n\t        do unlikely code\n\telse\n\t        do likely code\n\n\t...\n\tstatic_key_slow_inc();\n\t...\n\tstatic_key_slow_inc();\n\t...\n\n   The static_key_false() branch will be generated into the code with as\n   little impact to the likely code path as possible.  the\n   static_key_slow_*() APIs flip the branch via live kernel code patching.\n\n   This facility can now be used more widely within the kernel to\n   micro-optimize hot branches whose likelihood matches the static-key\n   usage and fast/slow cost patterns.\n\n - SW function tracer improvements: perf support and filtering support.\n\n - Various hardenings of the perf.data ABI, to make older perf.data\u0027s\n   smoother on newer tool versions, to make new features integrate more\n   smoothly, to support cross-endian recording/analyzing workflows\n   better, etc.\n\n - Restructuring of the kprobes code, the splitting out of \u0027optprobes\u0027,\n   and a corner case bugfix.\n\n - Allow the tracing of kernel console output (printk).\n\n - Improvements/fixes to user-space RDPMC support, allowing user-space\n   self-profiling code to extract PMU counts without performing any\n   system calls, while playing nice with the kernel side.\n\n - \u0027perf bench\u0027 improvements\n\n - ... and lots of internal restructurings, cleanups and fixes that made\n   these features possible.  And, as usual this list is incomplete as\n   there were also lots of other improvements\n\n* \u0027perf-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (120 commits)\n  perf report: Fix annotate double quit issue in branch view mode\n  perf report: Remove duplicate annotate choice in branch view mode\n  perf/x86: Prettify pmu config literals\n  perf report: Enable TUI in branch view mode\n  perf report: Auto-detect branch stack sampling mode\n  perf record: Add HEADER_BRANCH_STACK tag\n  perf record: Provide default branch stack sampling mode option\n  perf tools: Make perf able to read files from older ABIs\n  perf tools: Fix ABI compatibility bug in print_event_desc()\n  perf tools: Enable reading of perf.data files from different ABI rev\n  perf: Add ABI reference sizes\n  perf report: Add support for taken branch sampling\n  perf record: Add support for sampling taken branch\n  perf tools: Add code to support PERF_SAMPLE_BRANCH_STACK\n  x86/kprobes: Split out optprobe related code to kprobes-opt.c\n  x86/kprobes: Fix a bug which can modify kernel code permanently\n  x86/kprobes: Fix instruction recovery on optimized path\n  perf: Add callback to flush branch_stack on context switch\n  perf: Disable PERF_SAMPLE_BRANCH_* when not supported\n  perf/x86: Add LBR software filter support for Intel CPUs\n  ...\n"
    },
    {
      "commit": "313162d0b83836e2f57e51b9b8650fb4b9c396ea",
      "tree": "8f39f20515a924d392cf9a72db0918fda07a34c7",
      "parents": [
        "51990e825431089747f8896244b5c17d3a6423f1"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Jan 30 11:46:54 2012 -0500"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Fri Mar 16 10:38:24 2012 -0400"
      },
      "message": "device.h: audit and cleanup users in main include dir\n\nThe \u003clinux/device.h\u003e header includes a lot of stuff, and\nit in turn gets a lot of use just for the basic \"struct device\"\nwhich appears so often.\n\nClean up the users as follows:\n\n1) For those headers only needing \"struct device\" as a pointer\nin fcn args, replace the include with exactly that.\n\n2) For headers not really using anything from device.h, simply\ndelete the include altogether.\n\n3) For headers relying on getting device.h implicitly before\nbeing included themselves, now explicitly include device.h\n\n4) For files in which doing #1 or #2 uncovers an implicit\ndependency on some other header, fix by explicitly adding\nthe required header(s).\n\nAny C files that were implicitly relying on device.h to be\npresent have already been dealt with in advance.\n\nTotal removals from #1 and #2: 51.  Total additions coming\nfrom #3: 9.  Total other implicit dependencies from #4: 7.\n\nAs of 3.3-rc1, there were 110, so a net removal of 42 gives\nabout a 38% reduction in device.h presence in include/*\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "7d9aca39dcacd2b3f42e2e287162329f410f93e1",
      "tree": "2907b680b2b7625226f46d23d74ccc9c58ad0362",
      "parents": [
        "e1c1c69c8fc7656c33460c8e085ac0d0be22ac3b",
        "a0cc0209abb9fe2b9ab71aa41be70eddd0cbdd61"
      ],
      "author": {
        "name": "Mark Brown",
        "email": "broonie@opensource.wolfsonmicro.com",
        "time": "Wed Mar 14 13:13:25 2012 +0000"
      },
      "committer": {
        "name": "Mark Brown",
        "email": "broonie@opensource.wolfsonmicro.com",
        "time": "Wed Mar 14 13:13:25 2012 +0000"
      },
      "message": "Merge remote-tracking branch \u0027regmap/topic/drivers\u0027 into regmap-next\n\nResolved simple add/add conflicts:\n\tdrivers/base/regmap/internal.h\n\tdrivers/base/regmap/regmap.c\n"
    },
    {
      "commit": "79feb521a44705262d15cc819a4117a447b11ea7",
      "tree": "a4de6ed084b7a68c0885049d94841ce8334b64a7",
      "parents": [
        "a78bb11d7acd525623c6a0c2ff4e213d527573fa"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Mar 13 22:22:54 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Mar 13 22:22:54 2012 -0400"
      },
      "message": "jbd2: issue cache flush after checkpointing even with internal journal\n\nWhen we reach jbd2_cleanup_journal_tail(), there is no guarantee that\ncheckpointed buffers are on a stable storage - especially if buffers were\nwritten out by jbd2_log_do_checkpoint(), they are likely to be only in disk\u0027s\ncaches. Thus when we update journal superblock effectively removing old\ntransaction from journal, this write of superblock can get to stable storage\nbefore those checkpointed buffers which can result in filesystem corruption\nafter a crash. Thus we must unconditionally issue a cache flush before we\nupdate journal superblock in these cases.\n\nA similar problem can also occur if journal superblock is written only in\ndisk\u0027s caches, other transaction starts reusing space of the transaction\ncleaned from the log and power failure happens. Subsequent journal replay would\nstill try to replay the old transaction but some of it\u0027s blocks may be already\noverwritten by the new transaction. For this reason we must use WRITE_FUA when\nupdating log tail and we must first write new log tail to disk and update\nin-memory information only after that.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "24bcc89c7e7c64982e6192b4952a0a92379fc341",
      "tree": "0661b6c83fa9bb681f3aa32264323ce96c264958",
      "parents": [
        "31d4f3a2f3c73f279ff96a7135d7202ef6833f12"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Mar 13 15:41:04 2012 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Mar 13 15:41:04 2012 -0400"
      },
      "message": "jbd2: split updating of journal superblock and marking journal empty\n\nThere are three case of updating journal superblock. In the first case, we want\nto mark journal as empty (setting s_sequence to 0), in the second case we want\nto update log tail, in the third case we want to update s_errno. Split these\ncases into separate functions. It makes the code slightly more straightforward\nand later patches will make the distinction even more important.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "737f24bda723fdf89ecaacb99fa2bf5683c32799",
      "tree": "35495fff3e9956679cb5468e74e6814c8e44ee66",
      "parents": [
        "8eedce996556d7d06522cd3a0e6069141c8dffe0",
        "b7c924274c456499264d1cfa3d44063bb11eb5db"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 05 09:20:08 2012 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 05 09:20:08 2012 +0100"
      },
      "message": "Merge branch \u0027perf/urgent\u0027 into perf/core\n\nConflicts:\n\ttools/perf/builtin-record.c\n\ttools/perf/builtin-top.c\n\ttools/perf/perf.h\n\ttools/perf/util/top.h\n\nMerge reason: resolve these cherry-picking conflicts.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "bdd4431c8d071491a68a65d9457996f222b5ecd3",
      "tree": "9de69701cdba1dd28bcb804476bff07806f6d7a3",
      "parents": [
        "586c6e7013c8cbb8c91aaa6568ec349b1dc2c691",
        "1cc85961e214773cb7d7f2ccbe3bc644dd466df0"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Feb 28 10:16:01 2012 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Feb 28 10:16:10 2012 +0100"
      },
      "message": "Merge branch \u0027rcu/next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into core/rcu\n\nThe major features of this series are:\n\n - making RCU more aggressive about entering dyntick-idle mode in order to\n   improve energy efficiency\n\n - converting a few more call_rcu()s to kfree_rcu()s\n\n - applying a number of rcutree fixes and cleanups to rcutiny\n\n - removing CONFIG_SMP #ifdefs from treercu\n\n - allowing RCU CPU stall times to be set via sysfs\n\n - adding CPU-stall capability to rcutorture\n\n - adding more RCU-abuse diagnostics\n\n - updating documentation\n\n - fixing yet more issues located by the still-ongoing top-to-bottom\n   inspection of RCU, this time with a special focus on the\n   CPU-hotplug code path.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5d5b7d4f80ed6e861c1c220fd57e3dad0912526e",
      "tree": "40c015040a63379d114b8f33b4d70e248867a9a4",
      "parents": [
        "a3c3774176838bbfa4f6e48133644903818e56dc"
      ],
      "author": {
        "name": "Mark Brown",
        "email": "broonie@opensource.wolfsonmicro.com",
        "time": "Thu Feb 23 22:02:57 2012 +0000"
      },
      "committer": {
        "name": "Mark Brown",
        "email": "broonie@opensource.wolfsonmicro.com",
        "time": "Thu Feb 23 22:10:56 2012 +0000"
      },
      "message": "regmap: Add tracepoints for cache only and cache bypass\n\nUseful for figuring out where the hardware interaction went or came from.\n\nSigned-off-by: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\n"
    },
    {
      "commit": "4ff16c25e2cc48cbe6956e356c38a25ac063a64d",
      "tree": "27ff21500ab5559497126e6a25e65bcf96d44c59",
      "parents": [
        "034d150a44a2b428e273e69889397c01f63eaf14"
      ],
      "author": {
        "name": "David Smith",
        "email": "dsmith@redhat.com",
        "time": "Tue Feb 07 10:11:05 2012 -0600"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 23 09:28:06 2012 +0100"
      },
      "message": "tracepoint, vfs, sched: Add exec() tracepoint\n\nAdded a minimal exec tracepoint. Exec is an important major event\nin the life of a task, like fork(), clone() or exit(), all of\nwhich we already trace.\n\n[ We also do scheduling re-balancing during exec() - so it\u0027s useful\n  from a scheduler instrumentation POV as well. ]\n\nIf you want to watch a task start up, when it gets exec\u0027ed is a good place\nto start.  With the addition of this tracepoint, exec\u0027s can be monitored\nand better picture of general system activity can be obtained. This\ntracepoint will also enable better process life tracking, allowing you to\nanswer questions like \"what process keeps starting up binary X?\".\n\nThis tracepoint can also be useful in ftrace filtering and trigger\nconditions: i.e. starting or stopping filtering when exec is called.\n\nSigned-off-by: David Smith \u003cdsmith@redhat.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nLink: http://lkml.kernel.org/r/4F314D19.7030504@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8c79a045fd590a26e81e75f5d8d4ec5c7d23e565",
      "tree": "8123849709e37dc2394373ad40cf333b2f19ebb5",
      "parents": [
        "719741d9986572d64b47c35c09f5e7bb8d389400"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Jan 30 14:51:37 2012 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 22 12:06:55 2012 +0100"
      },
      "message": "sched/events: Revert trace_sched_stat_sleeptime()\n\nCommit 1ac9bc69 (\"sched/tracing: Add a new tracepoint for sleeptime\")\nadded a new sched:sched_stat_sleeptime tracepoint.\n\nIt\u0027s broken: the first sample we get on a task might be bad because\nof a stale sleep_start value that wasn\u0027t reset at the last task switch\nbecause the tracepoint was not active.\n\nIt also breaks the existing schedstat samples due to the side\neffects of:\n\n-               se-\u003estatistics.sleep_start \u003d 0;\n...\n-               se-\u003estatistics.block_start \u003d 0;\n\nNor do I see means to fix it without adding overhead to the scheduler\nfast path, which I\u0027m not willing to for the sake of redundant\ninstrumentation.\n\nMost importantly, sleep time information can already be constructed\nby tracing context switches and wakeups, and taking the timestamp\ndifference between the schedule-out, the wakeup and the schedule-in.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Andrew Vagin \u003cavagin@openvz.org\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLink: http://lkml.kernel.org/n/tip-pc4c9qhl8q6vg3bs4j6k0rbd@git.kernel.org\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "486e259340fc4c60474f2c14703e3b3634bb58ca",
      "tree": "70a58702194588fa0773463523f72c682785d040",
      "parents": [
        "0bb7b59d6e2b8440cd7097097dd4bbfc4d76ed07"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paul.mckenney@linaro.org",
        "time": "Fri Jan 06 14:11:30 2012 -0800"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Tue Feb 21 09:03:25 2012 -0800"
      },
      "message": "rcu: Avoid waking up CPUs having only kfree_rcu() callbacks\n\nWhen CONFIG_RCU_FAST_NO_HZ is enabled, RCU will allow a given CPU to\nenter dyntick-idle mode even if it still has RCU callbacks queued.\nRCU avoids system hangs in this case by scheduling a timer for several\njiffies in the future.  However, if all of the callbacks on that CPU\nare from kfree_rcu(), there is no reason to wake the CPU up, as it is\nnot a problem to defer freeing of memory.\n\nThis commit therefore tracks the number of callbacks on a given CPU\nthat are from kfree_rcu(), and avoids scheduling the timer if all of\na given CPU\u0027s callbacks are from kfree_rcu().\n\nSigned-off-by: Paul E. McKenney \u003cpaul.mckenney@linaro.org\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "2201c590dd6e802795e21e69e3c152c519f1568e",
      "tree": "a617a8578dd181bbcb83c0e3c6198a3dc836eef8",
      "parents": [
        "3d2b158262826e8b75bbbfb7b97010838dd92ac7"
      ],
      "author": {
        "name": "Seiji Aguchi",
        "email": "seiji.aguchi@hds.com",
        "time": "Mon Feb 20 17:53:01 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 20 17:53:01 2012 -0500"
      },
      "message": "jbd2: add drop_transaction/update_superblock_end tracepoints\n\nThis patch adds trace_jbd2_drop_transaction and\ntrace_jbd2_update_superblock_end because there are similar tracepoints\nin jbd and they are needed in jbd2 as well.\n\nReviewed-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: Seiji Aguchi \u003cseiji.aguchi@hds.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "95100358491abaa2e9a5483811370059bbca4645",
      "tree": "4fc32c4bf2ef4416b4a914f5426f96ba58f29ec1",
      "parents": [
        "cdfb0d30e943f36c8a074a26c3d168a05bdbb372"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes.berg@intel.com",
        "time": "Thu Nov 24 20:03:08 2011 +0100"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Feb 13 13:46:05 2012 -0500"
      },
      "message": "printk/tracing: Add console output tracing\n\nAdd a printk.console trace point to record any printk\nmessages into the trace, regardless of the current\nconsole loglevel. This can help correlate (existing)\nprintk debugging with other tracing.\n\nLink: http://lkml.kernel.org/r/1322161388.5366.54.camel@jlt3.sipsolutions.net\n\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "484546509ce5d49d43ec0a6eb2141c6bf3362bfc",
      "tree": "22145ca23b08aee51d17f335897e035a20a96dcc",
      "parents": [
        "2fbb90db1b8fcc78f43830f1a009f3af243c5f42"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Feb 07 09:40:30 2012 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Feb 13 09:14:43 2012 -0500"
      },
      "message": "x86/tracing: Denote the power and cpuidle tracepoints as _rcuidle()\n\nThe power and cpuidle tracepoints are called within a rcu_idle_exit()\nsection, and must be denoted with the _rcuidle() version of the tracepoint.\n\nAcked-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nReviewed-by: Josh Triplett \u003cjosh@joshtriplett.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "5753cba17611af108995672c4e2d978014e17a56",
      "tree": "5b0588c60045b155e9dc79e01490b248e19b6c2c",
      "parents": [
        "85c0d24f026ca6935897694be4eb0b5c514b907d"
      ],
      "author": {
        "name": "Steve Dickson",
        "email": "steved@redhat.com",
        "time": "Mon Feb 06 10:08:08 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 06 10:37:53 2012 -0500"
      },
      "message": "SUNRPC: Adding status trace points\n\nThis patch adds three trace points to the status routines\nin the sunrpc state machine.\n\nThe goal of these trace points is to give an Admin\nthe ability to check on binding status or connection\nstatus to see if there is a potential problem.\n\nSigned-off-by: Steve Dickson \u003csteved@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "85c0d24f026ca6935897694be4eb0b5c514b907d",
      "tree": "1f70f139d093624630c59d1a85054a6a3cc65320",
      "parents": [
        "a4980e7840176b4baa60715c32c5994b084ea9a6"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 06 10:31:35 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Mon Feb 06 10:31:35 2012 -0500"
      },
      "message": "SUNRPC: Fix up sunrpc trace events\n\nThe reporting of the RPC queue name needs to use the __string()\nevent interface.\n\nReported-by: Neil Horman \u003cnhorman@redhat.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "977b7e3a52a7421ad33a393a38ece59f3d41c2fa",
      "tree": "8ad7bb97c2385c3407c4fb647cc932978057559d",
      "parents": [
        "3310225dfc71a35a2cc9340c15c0e08b14b3c754"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Sat Feb 04 20:54:03 2012 -0600"
      },
      "committer": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Mon Feb 06 11:17:25 2012 +0800"
      },
      "message": "writeback: fix dereferencing NULL bdi-\u003edev on trace_writeback_queue\n\nWhen a SD card is hot removed without umount, del_gendisk() will call\nbdi_unregister() without destroying/freeing it. This leaves the bdi in\nthe bdi-\u003edev \u003d NULL, bdi-\u003ewb.task \u003d NULL, bdi-\u003ebdi_list removed state.\n\nWhen sync(2) gets the bdi before bdi_unregister() and calls\nbdi_queue_work() after the unregister, trace_writeback_queue will be\ndereferencing the NULL bdi-\u003edev. Fix it with a simple test for NULL.\n\nLKML-reference: http://lkml.org/lkml/2012/1/18/346\nCc: stable@kernel.org\nReported-by: Rabin Vincent \u003crabin@rab.in\u003e\nTested-by: Namjae Jeon \u003clinkinjeon@gmail.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "42481ba29033b3e692fe81e6536fc8f59b40ce07",
      "tree": "f9ee3f436e38148d2b5f32a06ba7b3fb3fc11aaa",
      "parents": [
        "241057486646dd42278538218376c79aae2c359f"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Sat Feb 04 23:29:19 2012 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Sun Feb 05 15:53:02 2012 +0100"
      },
      "message": "Remove incorrect comment from include/trace/events/power.h\n\nThe code is not going to be removed, so remove the comment stating\nthat it will be.\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "972c5ae961d6e5103e2b33d935cfa4145fd47140",
      "tree": "350b2a76b979ba8766c09838617df67ff330eca0",
      "parents": [
        "5196d20305d5e30d871111d3a876cf067dd94255",
        "7c7ed8ec337bf5f62cc5287a6eb6b2f1b7504c2f"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Feb 03 23:12:42 2012 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Feb 03 23:13:05 2012 +0100"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n\nSync with Linus\u0027 tree to be able to apply patch to a newer\ncode (namely drivers/gpu/drm/gma500/psb_intel_lvds.c)\n"
    },
    {
      "commit": "60d3369edb03fb4799c45ac594e2b8a76aa9079c",
      "tree": "e02a4229fbfa914e4768feb535215c7fc25a80ee",
      "parents": [
        "61c54d20d16f098823058b07b399ac5b716ea5ba"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Sun Jan 15 21:48:38 2012 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Feb 03 22:41:34 2012 +0100"
      },
      "message": "Fix up version number reference in include/trace/events/power.h\n\nWhat was originally going to be 2.6.41 became 3.1 .\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "15eb77a07c714ac80201abd0a9568888bcee6276",
      "tree": "cc43dc8458cb431900fd47990772ffa56b36b4f4",
      "parents": [
        "2673b4cf5d59c3ee5e0c12f6d734d38770324dc4"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Jan 17 11:18:56 2012 -0600"
      },
      "committer": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Feb 01 16:53:40 2012 +0800"
      },
      "message": "writeback: fix NULL bdi-\u003edev in trace writeback_single_inode\n\nbdi_prune_sb() resets sb-\u003es_bdi to default_backing_dev_info when the\ntearing down the original bdi. Fix trace_writeback_single_inode to\nuse sb-\u003es_bdi\u003ddefault_backing_dev_info rather than bdi-\u003edev\u003dNULL for a\nteared down bdi.\n\nCc: \u003cstable@kernel.org\u003e\nReported-by: Rabin Vincent \u003crabin@rab.in\u003e\nTested-by: Rabin Vincent \u003crabin@rab.in\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "82b0a4c3c171b180629696e8d1d5f52516f711e6",
      "tree": "60aab7bc3a767e3c017a228597eaaeedeffe4c00",
      "parents": [
        "a613fa168afc19179a7547fbba45644c5b6912bf"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 20 14:52:23 2012 -0500"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Tue Jan 31 19:28:21 2012 -0500"
      },
      "message": "SUNRPC: Add trace events to the sunrpc subsystem\n\nAdd declarations to allow tracing of RPC call creation, running, sleeping,\nand destruction.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "96070c83b295b31912ad92d3ffb66baec2b86d50",
      "tree": "9ee346398552b40df1a7c7a80cb366bfd6a07181",
      "parents": [
        "87f71ae2dd7471c1b4c94100be1f218e91dc64c3",
        "163566f60bfe6a8176650155e2d98649b0dfabf8"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jan 26 11:09:19 2012 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jan 26 11:09:19 2012 +0100"
      },
      "message": "Merge branch \u0027sigtrace\u0027 of git://github.com/utrace/linux into perf/core\n"
    },
    {
      "commit": "f9156c7288e2d11501ded4d7fe6d9a3a41ee4057",
      "tree": "7bd26fc9a111c6af1601ecd2d1b0ab60da32f3f0",
      "parents": [
        "67175b855bfd6ed95ffeff95532173c07de6432d",
        "96bdc7dc61fb1b1e8e858dafb13abee8482ba064"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:49:54 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 17 15:49:54 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (62 commits)\n  Btrfs: use larger system chunks\n  Btrfs: add a delalloc mutex to inodes for delalloc reservations\n  Btrfs: space leak tracepoints\n  Btrfs: protect orphan block rsv with spin_lock\n  Btrfs: add allocator tracepoints\n  Btrfs: don\u0027t call btrfs_throttle in file write\n  Btrfs: release space on error in page_mkwrite\n  Btrfs: fix btrfsck error 400 when truncating a compressed\n  Btrfs: do not use btrfs_end_transaction_throttle everywhere\n  Btrfs: add balance progress reporting\n  Btrfs: allow for resuming restriper after it was paused\n  Btrfs: allow for canceling restriper\n  Btrfs: allow for pausing restriper\n  Btrfs: add skip_balance mount option\n  Btrfs: recover balance on mount\n  Btrfs: save balance parameters to disk\n  Btrfs: soft profile changing mode (aka soft convert)\n  Btrfs: implement online profile changing\n  Btrfs: do not reduce profile in do_chunk_alloc()\n  Btrfs: virtual address space subset filter\n  ...\n\nFix up trivial conflict in fs/btrfs/ioctl.c due to the use of the new\nmnt_drop_write_file() helper.\n"
    },
    {
      "commit": "8c2a3ca20f6233677ac3222c6506174010eb414f",
      "tree": "88d1105c665d355b363929557ed0c5489795e348",
      "parents": [
        "90290e19820e3323ce6b9c2888eeb68bf29c278b"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Tue Jan 10 10:31:31 2012 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:29:43 2012 -0500"
      },
      "message": "Btrfs: space leak tracepoints\n\nThis in addition to a script in my btrfs-tracing tree will help track down space\nleaks when we\u0027re getting space left over in block groups on umount.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "3f7de037fb3727b20bc27332cdcf2488b702394c",
      "tree": "7e355b7e60b584ca7aaaf7c8abfa1f2408c15ff2",
      "parents": [
        "45a8090e626ab470c91142954431a93846030b0d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Thu Nov 10 08:29:20 2011 -0500"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Jan 16 15:29:42 2012 -0500"
      },
      "message": "Btrfs: add allocator tracepoints\n\nI used these tracepoints when figuring out what the cluster stuff was doing, so\nadd them to mainline in case we need to profile this stuff again.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "6c303d3ab39f0dc69546f179c424ee1124f50906",
      "tree": "40fd551256229f2ac1f931c3f9e650ba67deefc7",
      "parents": [
        "099469502f62fbe0d7e4f0b83a2f22538367f734"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Nov 22 21:13:48 2011 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jan 13 18:48:50 2012 +0100"
      },
      "message": "tracing: let trace_signal_generate() report more info, kill overflow_fail/lose_info\n\n__send_signal()-\u003etrace_signal_generate() doesn\u0027t report enough info.\nThe users want to know was the signal actually delivered or not, and\nthey also need the shared/private info.\n\nThe patch moves trace_signal_generate() at the end of __send_signal()\nand adds the 2 additional arguments.\n\nThis also allows us to kill trace_signal_overflow_fail/lose_info, we\ncan simply add the appropriate TRACE_SIGNAL_ \"result\" codes.\n\nReported-by: Seiji Aguchi \u003csaguchi@redhat.com\u003e\nReviewed-by: Seiji Aguchi \u003cseiji.aguchi@hds.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "ea4d349ffa8028c655236497c2ba17c17aaa0d65",
      "tree": "b983961282dea73db03a1257fa4aaec109aee5cc",
      "parents": [
        "45676885b76237a4c236d26fe20a9b0cfdb2eb22"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Thu Jan 12 17:19:20 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:08 2012 -0800"
      },
      "message": "vmscan/trace: Add \u0027file\u0027 info to trace_mm_vmscan_lru_isolate()\n\nIn trace_mm_vmscan_lru_isolate(), we don\u0027t output \u0027file\u0027 information to\nthe trace event and it is a bit inconvenient for the user to get the\nreal information(like pasted below).  mm_vmscan_lru_isolate:\nisolate_mode\u003d2 order\u003d0 nr_requested\u003d32 nr_scanned\u003d32 nr_taken\u003d32\ncontig_taken\u003d0 contig_dirty\u003d0 contig_failed\u003d0\n\n\u0027active\u0027 can be obtained by analyzing mode(Thanks go to Minchan and\nMel), So this patch adds \u0027file\u0027 to the trace event and it now looks\nlike: mm_vmscan_lru_isolate: isolate_mode\u003d2 order\u003d0 nr_requested\u003d32\nnr_scanned\u003d32 nr_taken\u003d32 contig_taken\u003d0 contig_dirty\u003d0 contig_failed\u003d0\nfile\u003d0\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "001a541ea9163ace5e8243ee0e907ad80a4c0ec2",
      "tree": "a76225046369c440de93739add9823f5ea060245",
      "parents": [
        "40ba587923ae67090d9f141c1d3c951be5c1420e",
        "bc31b86a5923fad5f3fbb6192f767f410241ba27"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:59:59 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:59:59 2012 -0800"
      },
      "message": "Merge branch \u0027writeback-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux\n\n* \u0027writeback-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:\n  writeback: move MIN_WRITEBACK_PAGES to fs-writeback.c\n  writeback: balanced_rate cannot exceed write bandwidth\n  writeback: do strict bdi dirty_exceeded\n  writeback: avoid tiny dirty poll intervals\n  writeback: max, min and target dirty pause time\n  writeback: dirty ratelimit - think time compensation\n  btrfs: fix dirtied pages accounting on sub-page writes\n  writeback: fix dirtied pages accounting on redirty\n  writeback: fix dirtied pages accounting on sub-page writes\n  writeback: charge leaked page dirties to active tasks\n  writeback: Include all dirty inodes in background writeback\n"
    },
    {
      "commit": "40ba587923ae67090d9f141c1d3c951be5c1420e",
      "tree": "342a72fc0ee13a0d2496ef970b64dfeadf1355d2",
      "parents": [
        "54c2c5761febcca46c8037d3a81612991e6c209a",
        "6b550f9495947fc279d12c38feaf98500e8d0646"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:42:48 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:42:48 2012 -0800"
      },
      "message": "Merge branch \u0027akpm\u0027 (aka \"Andrew\u0027s patch-bomb\")\n\nAndrew elucidates:\n - First installmeant of MM.  We have a HUGE number of MM patches this\n   time.  It\u0027s crazy.\n - MAINTAINERS updates\n - backlight updates\n - leds\n - checkpatch updates\n - misc ELF stuff\n - rtc updates\n - reiserfs\n - procfs\n - some misc other bits\n\n* akpm: (124 commits)\n  user namespace: make signal.c respect user namespaces\n  workqueue: make alloc_workqueue() take printf fmt and args for name\n  procfs: add hidepid\u003d and gid\u003d mount options\n  procfs: parse mount options\n  procfs: introduce the /proc/\u003cpid\u003e/map_files/ directory\n  procfs: make proc_get_link to use dentry instead of inode\n  signal: add block_sigmask() for adding sigmask to current-\u003eblocked\n  sparc: make SA_NOMASK a synonym of SA_NODEFER\n  reiserfs: don\u0027t lock root inode searching\n  reiserfs: don\u0027t lock journal_init()\n  reiserfs: delay reiserfs lock until journal initialization\n  reiserfs: delete comments referring to the BKL\n  drivers/rtc/interface.c: fix alarm rollover when day or month is out-of-range\n  drivers/rtc/rtc-twl.c: add DT support for RTC inside twl4030/twl6030\n  drivers/rtc/: remove redundant spi driver bus initialization\n  drivers/rtc/rtc-jz4740.c: make jz4740_rtc_driver static\n  drivers/rtc/rtc-mc13xxx.c: make mc13xxx_rtc_idtable static\n  rtc: convert drivers/rtc/* to use module_platform_driver()\n  drivers/rtc/rtc-wm831x.c: convert to devm_kzalloc()\n  drivers/rtc/rtc-wm831x.c: remove unused period IRQ handler\n  ...\n"
    },
    {
      "commit": "43d2b113241d6797b890318767e0af78e313414b",
      "tree": "6f25647f2660f8fca63cc8355b70ad643993dab8",
      "parents": [
        "6bd4837de96e7d9f9bf33e59117c24fc230862ac"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Jan 10 15:08:09 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:44 2012 -0800"
      },
      "message": "tracepoint: add tracepoints for debugging oom_score_adj\n\noom_score_adj is used for guarding processes from OOM-Killer.  One of\nproblem is that it\u0027s inherited at fork().  When a daemon set oom_score_adj\nand make children, it\u0027s hard to know where the value is set.\n\nThis patch adds some tracepoints useful for debugging. This patch adds\n3 trace points.\n  - creating new task\n  - renaming a task (exec)\n  - set oom_score_adj\n\nTo debug, users need to enable some trace pointer. Maybe filtering is useful as\n\n# EVENT\u003d/sys/kernel/debug/tracing/events/task/\n# echo \"oom_score_adj !\u003d 0\" \u003e $EVENT/task_newtask/filter\n# echo \"oom_score_adj !\u003d 0\" \u003e $EVENT/task_rename/filter\n# echo 1 \u003e $EVENT/enable\n# EVENT\u003d/sys/kernel/debug/tracing/events/oom/\n# echo 1 \u003e $EVENT/enable\n\noutput will be like this.\n# grep oom /sys/kernel/debug/tracing/trace\nbash-7699  [007] d..3  5140.744510: oom_score_adj_update: pid\u003d7699 comm\u003dbash oom_score_adj\u003d-1000\nbash-7699  [007] ...1  5151.818022: task_newtask: pid\u003d7729 comm\u003dbash clone_flags\u003d1200011 oom_score_adj\u003d-1000\nls-7729  [003] ...2  5151.818504: task_rename: pid\u003d7729 oldcomm\u003dbash newcomm\u003dls oom_score_adj\u003d-1000\nbash-7699  [002] ...1  5175.701468: task_newtask: pid\u003d7730 comm\u003dbash clone_flags\u003d1200011 oom_score_adj\u003d-1000\ngrep-7730  [007] ...2  5175.701993: task_rename: pid\u003d7730 oldcomm\u003dbash newcomm\u003dgrep oom_score_adj\u003d-1000\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b413d48aa70605701c0b395b2e350ca15f5d643a",
      "tree": "6aa777c589eedfb9dc498f375d553e561e203506",
      "parents": [
        "da066ad3570b88e7dee82e76a06ee9a7adffcf0d"
      ],
      "author": {
        "name": "Konstantin Khlebnikov",
        "email": "khlebnikov@openvz.org",
        "time": "Tue Jan 10 15:07:09 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 10 16:30:41 2012 -0800"
      },
      "message": "mm-tracepoint: rename page-free events\n\nRename mm_page_free_direct into mm_page_free and mm_pagevec_free into\nmm_page_free_batched\n\nSince v2.6.33-5426-gc475dab the kernel triggers mm_page_free_direct for\nall freed pages, not only for directly freed.  So, let\u0027s name it properly.\n For pages freed via page-list we also trigger mm_page_free_batched event.\n\nSigned-off-by: Konstantin Khlebnikov \u003ckhlebnikov@openvz.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ff9cb1c4eead5e4c292e75cd3170a82d66944101",
      "tree": "cdb132a39e550a9b7b28ea67544cb86cd6ebdb6e",
      "parents": [
        "e4e11180dfa545233e5145919b75b7fac88638df",
        "d50f2ab6f050311dbf7b8f5501b25f0bf64a439b"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 10 11:54:07 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 10 11:54:07 2012 -0500"
      },
      "message": "Merge branch \u0027for_linus\u0027 into for_linus_merged\n\nConflicts:\n\tfs/ext4/ioctl.c\n"
    },
    {
      "commit": "b7d845f8825b058b80e76320f573505afbf4a1fc",
      "tree": "dc66dec44b489723427c9c4a9a92ef6e9f17c55b",
      "parents": [
        "2943c833222ef87c111ee0c6b7b8519ad2983e99",
        "0a92815db789bd5a922d882826cf710f9b0b9d85"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 13:35:24 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 13:35:24 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap: (36 commits)\n  mfd: Clearing events requires event registers to be writable for da9052-core\n  mfd: Fix annotations in da9052-core\n  gpiolib: Mark da9052 driver broken\n  mfd: Declare da9052_regmap_config for the bus drivers\n  MFD: DA9052/53 MFD core module add SPI support v2\n  MFD: DA9052/53 MFD core module\n  regmap: Add irq_base accessor to regmap_irq\n  regmap: Allow drivers to reinitialise the register cache at runtime\n  regmap: Add trace event for successful cache reads\n  regmap: Allow regmap_update_bits() users to detect changes\n  regmap: Report if we actually handled an interrupt in regmap-irq\n  regmap: Fix rbtreee build when not using debugfs\n  regmap: Provide debugfs dump of the rbtree cache data\n  regmap: Do debugfs init before cache init\n  regmap: Suppress noop writes in regmap_update_bits()\n  regmap: Remove indexed cache type\n  regmap: Drop check whether a register is readable in regcache_read\n  regmap: Properly round cache_word_size\n  regmap: Add support for 10/14 register formating\n  regmap: Try cached read before checking if a hardware read is possible\n  ...\n"
    }
  ],
  "next": "0db49b72bce26341274b74fd968501489a361ae3"
}
