)]}'
{
  "log": [
    {
      "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": "d50f2ab6f050311dbf7b8f5501b25f0bf64a439b",
      "tree": "a4775254db19dc589c85c36a8bd5b3c2e1be4838",
      "parents": [
        "5f163cc759a9fa8844a4efcf1f579dc5b2ca2491"
      ],
      "author": {
        "name": "Xi Wang",
        "email": "xi.wang@gmail.com",
        "time": "Tue Jan 10 11:51:10 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 10 11:51:10 2012 -0500"
      },
      "message": "ext4: fix undefined behavior in ext4_fill_flex_info()\n\nCommit 503358ae01b70ce6909d19dd01287093f6b6271c (\"ext4: avoid divide by\nzero when trying to mount a corrupted file system\") fixes CVE-2009-4307\nby performing a sanity check on s_log_groups_per_flex, since it can be\nset to a bogus value by an attacker.\n\n\tsbi-\u003es_log_groups_per_flex \u003d sbi-\u003es_es-\u003es_log_groups_per_flex;\n\tgroups_per_flex \u003d 1 \u003c\u003c sbi-\u003es_log_groups_per_flex;\n\n\tif (groups_per_flex \u003c 2) { ... }\n\nThis patch fixes two potential issues in the previous commit.\n\n1) The sanity check might only work on architectures like PowerPC.\nOn x86, 5 bits are used for the shifting amount.  That means, given a\nlarge s_log_groups_per_flex value like 36, groups_per_flex \u003d 1 \u003c\u003c 36\nis essentially 1 \u003c\u003c 4 \u003d 16, rather than 0.  This will bypass the check,\nleaving s_log_groups_per_flex and groups_per_flex inconsistent.\n\n2) The sanity check relies on undefined behavior, i.e., oversized shift.\nA standard-confirming C compiler could rewrite the check in unexpected\nways.  Consider the following equivalent form, assuming groups_per_flex\nis unsigned for simplicity.\n\n\tgroups_per_flex \u003d 1 \u003c\u003c sbi-\u003es_log_groups_per_flex;\n\tif (groups_per_flex \u003d\u003d 0 || groups_per_flex \u003d\u003d 1) {\n\nWe compile the code snippet using Clang 3.0 and GCC 4.6.  Clang will\ncompletely optimize away the check groups_per_flex \u003d\u003d 0, leaving the\npatched code as vulnerable as the original.  GCC keeps the check, but\nthere is no guarantee that future versions will do the same.\n\nSigned-off-by: Xi Wang \u003cxi.wang@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@vger.kernel.org\n"
    },
    {
      "commit": "94bf608a18fa4421315275a81c5489734599297a",
      "tree": "69b0022e0f47a5af7888c7e97459302373bfa338",
      "parents": [
        "8fdd8c49fe50394fef3e193db27222cb03c2b212"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 09 15:53:24 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 09 15:57:20 2012 -0500"
      },
      "message": "ext4: fix failure exits\n\na) leaking root dentry is bad\nb) in case of failed ext4_mb_init() we don\u0027t want to do ext4_mb_release()\nc) OTOH, in the same case we *do* want ext4_ext_release()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "eb59c505f8a5906ad2e053d14fab50eb8574fd6f",
      "tree": "c6e875adc12b481b916e847e8f80b8881a0fb02c",
      "parents": [
        "1619ed8f60959829d070d8f39cd2f8ca0e7135ce",
        "c233523b3d392e530033a7587d7970dc62a02361"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 13:10:57 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 13:10:57 2012 -0800"
      },
      "message": "Merge branch \u0027pm-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm\n\n* \u0027pm-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (76 commits)\n  PM / Hibernate: Implement compat_ioctl for /dev/snapshot\n  PM / Freezer: fix return value of freezable_schedule_timeout_killable()\n  PM / shmobile: Allow the A4R domain to be turned off at run time\n  PM / input / touchscreen: Make st1232 use device PM QoS constraints\n  PM / QoS: Introduce dev_pm_qos_add_ancestor_request()\n  PM / shmobile: Remove the stay_on flag from SH7372\u0027s PM domains\n  PM / shmobile: Don\u0027t include SH7372\u0027s INTCS in syscore suspend/resume\n  PM / shmobile: Add support for the sh7372 A4S power domain / sleep mode\n  PM: Drop generic_subsys_pm_ops\n  PM / Sleep: Remove forward-only callbacks from AMBA bus type\n  PM / Sleep: Remove forward-only callbacks from platform bus type\n  PM: Run the driver callback directly if the subsystem one is not there\n  PM / Sleep: Make pm_op() and pm_noirq_op() return callback pointers\n  PM/Devfreq: Add Exynos4-bus device DVFS driver for Exynos4210/4212/4412.\n  PM / Sleep: Merge internal functions in generic_ops.c\n  PM / Sleep: Simplify generic system suspend callbacks\n  PM / Hibernate: Remove deprecated hibernation snapshot ioctls\n  PM / Sleep: Fix freezer failures due to racy usermodehelper_is_disabled()\n  ARM: S3C64XX: Implement basic power domain support\n  PM / shmobile: Use common always on power domain governor\n  ...\n\nFix up trivial conflict in fs/xfs/xfs_buf.c due to removal of unused\nXBT_FORCE_SLEEP bit\n"
    },
    {
      "commit": "34c80b1d93e6e20ca9dea0baf583a5b5510d92d4",
      "tree": "7dcbf0a4e09464247e6992c8f44fcc872867bd3a",
      "parents": [
        "a6322de67b58a00e3a783ad9c87c2a11b2d67b47"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 08 21:32:45 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jan 06 23:19:54 2012 -0500"
      },
      "message": "vfs: switch -\u003eshow_options() to struct dentry *\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d8c9584ea2a92879f471fd3a2be3af6c534fb035",
      "tree": "3541b9c6228f820bdc65e4875156eb27b1c91cb1",
      "parents": [
        "ece2ccb668046610189d88d6aaf05aeb09c988a1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 07 18:16:57 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jan 06 23:16:53 2012 -0500"
      },
      "message": "vfs: prefer -\u003edentry-\u003ed_sb to -\u003emnt-\u003emnt_sb\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1d526fc91bea04ee35b7599bf8b82f86c0aaf46c",
      "tree": "606028370d5eadd8e55edac222b41fc9b7e18f0c",
      "parents": [
        "014a1770371a028d22f364718c805f4216911ecd"
      ],
      "author": {
        "name": "Ben Hutchings",
        "email": "ben@decadent.org.uk",
        "time": "Wed Jan 04 21:22:51 2012 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jan 04 21:22:51 2012 -0500"
      },
      "message": "ext4: Report max_batch_time option correctly\n\nCurrently the value reported for max_batch_time is really the\nvalue of min_batch_time.\n\nReported-by: Russell Coker \u003crussell@coker.com.au\u003e\nSigned-off-by: Ben Hutchings \u003cben@decadent.org.uk\u003e\n"
    },
    {
      "commit": "6b520e0565422966cdf1c3759bd73df77b0f248c",
      "tree": "f63a26afa7342eb59b125271b16e30a219b59094",
      "parents": [
        "2a79f17e4a641a2f463cb512cb0ec349844a147b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Dec 12 15:51:45 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:52:40 2012 -0500"
      },
      "message": "vfs: fix the stupidity with i_dentry in inode destructors\n\nSeeing that just about every destructor got that INIT_LIST_HEAD() copied into\nit, there is no point whatsoever keeping this INIT_LIST_HEAD in inode_init_once();\nthe cost of taking it into inode_init_always() will be negligible for pipes\nand sockets and negative for everything else.  Not to mention the removal of\nboilerplate code from -\u003edestroy_inode() instances...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b00f4dc5ff022cb9cbaffd376d9454d7fa1e496f",
      "tree": "40f1b232e2f1e8ac365317a14fdcbcb331722b46",
      "parents": [
        "1eac8111e0763853266a171ce11214da3a347a0a",
        "b9e26dfdad5a4f9cbdaacafac6998614cc9c41bc"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Dec 21 21:59:45 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Dec 21 21:59:45 2011 +0100"
      },
      "message": "Merge branch \u0027master\u0027 into pm-sleep\n\n* master: (848 commits)\n  SELinux: Fix RCU deref check warning in sel_netport_insert()\n  binary_sysctl(): fix memory leak\n  mm/vmalloc.c: remove static declaration of va from __get_vm_area_node\n  ipmi_watchdog: restore settings when BMC reset\n  oom: fix integer overflow of points in oom_badness\n  memcg: keep root group unchanged if creation fails\n  nilfs2: potential integer overflow in nilfs_ioctl_clean_segments()\n  nilfs2: unbreak compat ioctl\n  cpusets: stall when updating mems_allowed for mempolicy or disjoint nodemask\n  evm: prevent racing during tfm allocation\n  evm: key must be set once during initialization\n  mmc: vub300: fix type of firmware_rom_wait_states module parameter\n  Revert \"mmc: enable runtime PM by default\"\n  mmc: sdhci: remove \"state\" argument from sdhci_suspend_host\n  x86, dumpstack: Fix code bytes breakage due to missing KERN_CONT\n  IB/qib: Correct sense on freectxts increment and decrement\n  RDMA/cma: Verify private data length\n  cgroups: fix a css_set not found bug in cgroup_attach_proc\n  oprofile: Fix uninitialized memory access when writing to writing to oprofilefs\n  Revert \"xen/pv-on-hvm kexec: add xs_reset_watches to shutdown watches from old kernel\"\n  ...\n\nConflicts:\n\tkernel/cgroup_freezer.c\n"
    },
    {
      "commit": "5635a62b83c04d05e4eb4575a1c3de51a35bacdc",
      "tree": "4666e038ce91682c8b32fbfa6583a6249d2b9e56",
      "parents": [
        "60e07cf515e541ea3e13b888d273c9b19a2ad9dd"
      ],
      "author": {
        "name": "Zheng Liu",
        "email": "gnehzuil.liu@gmail.com",
        "time": "Sun Dec 18 16:13:58 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Dec 18 16:13:58 2011 -0500"
      },
      "message": "ext4: add missing space to ext4_msg output in ext4_fill_super()\n\nSigned-off-by: Zheng Liu \u003cwenqing.lz@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "fc6cb1cda5db7b2d24bf32890826214b857c728e",
      "tree": "2f3226090a2da8bcde9d568598ffb3a1c7626fd3",
      "parents": [
        "b4611abfa98af8351bf32e8b9ecc9d3384931c37"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Dec 12 22:06:18 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Dec 12 22:06:18 2011 -0500"
      },
      "message": "ext4: display the correct mount option in /proc/mounts for [no]init_itable\n\n/proc/mounts was showing the mount option [no]init_inode_table when\nthe correct mount option that will be accepted by parse_options() is\n[no]init_itable.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "986b11c3ee9e0eace25fe74a502205f7fe8c179b",
      "tree": "2271bc519eac458fd92799f5731e2ef604f69341",
      "parents": [
        "bb58dd5d1ffad6c2d21c69698ba766dad4ae54e6",
        "24b7ead3fb0bae267c2ee50898eb4c13aedd1e9f"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Nov 23 21:09:02 2011 +0100"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Nov 23 21:09:02 2011 +0100"
      },
      "message": "Merge branch \u0027pm-freezer\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into pm-freezer\n\n* \u0027pm-freezer\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc: (24 commits)\n  freezer: fix wait_event_freezable/__thaw_task races\n  freezer: kill unused set_freezable_with_signal()\n  dmatest: don\u0027t use set_freezable_with_signal()\n  usb_storage: don\u0027t use set_freezable_with_signal()\n  freezer: remove unused @sig_only from freeze_task()\n  freezer: use lock_task_sighand() in fake_signal_wake_up()\n  freezer: restructure __refrigerator()\n  freezer: fix set_freezable[_with_signal]() race\n  freezer: remove should_send_signal() and update frozen()\n  freezer: remove now unused TIF_FREEZE\n  freezer: make freezing() test freeze conditions in effect instead of TIF_FREEZE\n  cgroup_freezer: prepare for removal of TIF_FREEZE\n  freezer: clean up freeze_processes() failure path\n  freezer: kill PF_FREEZING\n  freezer: test freezable conditions while holding freezer_lock\n  freezer: make freezing indicate freeze condition in effect\n  freezer: use dedicated lock instead of task_lock() + memory barrier\n  freezer: don\u0027t distinguish nosig tasks on thaw\n  freezer: remove racy clear_freeze_flag() and set PF_NOFREEZE on dead tasks\n  freezer: rename thaw_process() to __thaw_task() and simplify the implementation\n  ...\n"
    },
    {
      "commit": "a0acae0e886d44bd5ce6d2f173c1ace0fcf0d9f6",
      "tree": "0b763388360a5a9043986e1f2201e43df74ebc46",
      "parents": [
        "3a7cbd50f74907580eb47a8d08e1f29741b81abf"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:22 2011 -0800"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Nov 21 12:32:22 2011 -0800"
      },
      "message": "freezer: unexport refrigerator() and update try_to_freeze() slightly\n\nThere is no reason to export two functions for entering the\nrefrigerator.  Calling refrigerator() instead of try_to_freeze()\ndoesn\u0027t save anything noticeable or removes any race condition.\n\n* Rename refrigerator() to __refrigerator() and make it return bool\n  indicating whether it scheduled out for freezing.\n\n* Update try_to_freeze() to return bool and relay the return value of\n  __refrigerator() if freezing().\n\n* Convert all refrigerator() users to try_to_freeze().\n\n* Update documentation accordingly.\n\n* While at it, add might_sleep() to try_to_freeze().\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Samuel Ortiz \u003csamuel@sortiz.org\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: KONISHI Ryusuke \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "2397256d6218e7bf5147a3b01dcc6aec20fd3916",
      "tree": "b8f25e74a37f72ee670e5a2c96129e4fd0b49d0f",
      "parents": [
        "eb513689c97e3e73bb9b4459d490a8e894b4a546"
      ],
      "author": {
        "name": "Richard Weinberger",
        "email": "richard@nod.at",
        "time": "Mon Nov 07 10:50:09 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 07 10:50:09 2011 -0500"
      },
      "message": "ext4: Remove kernel_lock annotations\n\nThe BKL is gone, these annotations are useless.\n\nSigned-off-by: Richard Weinberger \u003crichard@nod.at\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "eb513689c97e3e73bb9b4459d490a8e894b4a546",
      "tree": "767931920c50055b4416b4554fa2dfac4c579b2a",
      "parents": [
        "5c8a0fbba543d9428a486f0d1282bbcf3cf1d95a"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 07 10:47:42 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 07 10:47:42 2011 -0500"
      },
      "message": "ext4: ignore journalled data options on remount if fs has no journal\n\nThis avoids a confusing failure in the init scripts when the\n/etc/fstab has data\u003dwriteback or data\u003djournal but the file system does\nnot have a journal.  So check for this case explicitly, and warn the\nuser that we are ignoring the (pointless, since they have no journal)\ndata\u003d* mount option.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "6f91bc5fda82d2c49b4f7fb29424cf6a3c7574bc",
      "tree": "e5670070f007c4ad5300e93a4e36fa9a802e2bd9",
      "parents": [
        "446066724c3629664e29942a00b0aee0d6b1663a"
      ],
      "author": {
        "name": "Eric Gouriou",
        "email": "egouriou@google.com",
        "time": "Thu Oct 27 11:43:23 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Oct 27 11:43:23 2011 -0400"
      },
      "message": "ext4: optimize ext4_ext_convert_to_initialized()\n\nThis patch introduces a fast path in ext4_ext_convert_to_initialized()\nfor the case when the conversion can be performed by transferring\nthe newly initialized blocks from the uninitialized extent into\nan adjacent initialized extent. Doing so removes the expensive\ninvocations of memmove() which occur during extent insertion and\nthe subsequent merge.\n\nIn practice this should be the common case for clients performing\nappend writes into files pre-allocated via\nfallocate(FALLOC_FL_KEEP_SIZE). In such a workload performed via\ndirect IO and when using a suboptimal implementation of memmove()\n(x86_64 prior to the 2.6.39 rewrite), this patch reduces kernel CPU\nconsumption by 32%.\n\nTwo new trace points are added to ext4_ext_convert_to_initialized()\nto offer visibility into its operations. No exit trace point has\nbeen added due to the multiplicity of return points. This can be\nrevisited once the upstream cleanup is backported.\n\nSigned-off-by: Eric Gouriou \u003cegouriou@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d44651d0f922b7aaeddd9fc04f2f5700a65983dd",
      "tree": "31387f8acab384d3211903d0abe6232fd7117fe6",
      "parents": [
        "6ee3b2122431fc75015c6114d4749de76422452b"
      ],
      "author": {
        "name": "Fabrice Jouhaud",
        "email": "yargil@free.fr",
        "time": "Sat Oct 08 16:26:03 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Oct 08 16:26:03 2011 -0400"
      },
      "message": "ext4: fix ext4 so it works without CONFIG_PROC_FS\n\nThis fixes a bug which was introduced in dd68314ccf3fb.  The problem\ncame from the test of the return value of proc_mkdir which is always\nfalse without procfs, and this would initialization of ext4.\n\nSigned-off-by: Fabrice Jouhaud \u003cyargil@free.fr\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "4113c4caa4f355b8ff8b7ff0510c29c9d00d30b3",
      "tree": "b978be1044d72ab78739edd441385253f6c932ac",
      "parents": [
        "af909a57fde821627282204ba43f27331342bf26"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Sat Oct 08 14:34:47 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Oct 08 14:34:47 2011 -0400"
      },
      "message": "ext4: remove deprecated oldalloc\n\nFor a long time now orlov is the default block allocator in the\next4. It performs better than the old one and no one seems to claim\notherwise so we can safely drop it and make oldalloc and orlov mount\noption deprecated.\n\nThis is a part of the effort to reduce number of ext4 options hence the\ntest matrix.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "dcf2d804ed6ffe5e942b909ed5e5b74628be6ee4",
      "tree": "a15433ea17d943116c809c1a847e45a387120f19",
      "parents": [
        "7aa0baeaba4afc4fbed7aad2812a1116e6b0adcd"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Thu Oct 06 12:10:11 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Oct 06 12:10:11 2011 -0400"
      },
      "message": "ext4: Free resources in some error path in ext4_fill_super\n\nSome of the error path in ext4_fill_super don\u0027t release the\nresouces properly. So this patch just try to release them\nin the right way.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5dee54372c1ea15ab482b959634cda8c01b042bd",
      "tree": "512da0144f6a9f86b5817569d0521b60cddee4c9",
      "parents": [
        "021b65bb1e4e4b625c80bbb82651e5e155721ef3"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:10:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:10:51 2011 -0400"
      },
      "message": "ext4: rename ext4_count_free_blocks() to ext4_count_free_clusters()\n\nThis function really counts the free clusters reported in the block\ngroup descriptors, so rename it to reduce confusion.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "021b65bb1e4e4b625c80bbb82651e5e155721ef3",
      "tree": "e1826a0ec395ac2acf46c43113f2c6a64a5165d0",
      "parents": [
        "6f16b60690ba04cf476480a6f19b204e4b95b4a6"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:08:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:08:51 2011 -0400"
      },
      "message": "ext4: Rename ext4_free_blks_{count,set}() to refer to clusters\n\nThe field bg_free_blocks_count_{lo,high} in the block group\ndescriptor has been repurposed to hold the number of free clusters for\nbigalloc functions.  So rename the functions so it makes it easier to\nread and audit the block allocation and block freeing code.\n\nNote: at this point in bigalloc development we doesn\u0027t support\nonline resize, so this also makes it really obvious all of the places\nwe need to fix up to add support for online resize.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7b415bf60f6afb0499fd3dc0ee33444f54e28567",
      "tree": "9c64fef2b8d60ce64865af6e4c2cc6008026e28c",
      "parents": [
        "27baebb849d46d901e756e6502b0a65a62e43771"
      ],
      "author": {
        "name": "Aditya Kali",
        "email": "adityakali@google.com",
        "time": "Fri Sep 09 19:04:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:04:51 2011 -0400"
      },
      "message": "ext4: Fix bigalloc quota accounting and i_blocks value\n\nWith bigalloc changes, the i_blocks value was not correctly set (it was still\nset to number of blocks being used, but in case of bigalloc, we want i_blocks\nto represent the number of clusters being used). Since the quota subsystem sets\nthe i_blocks value, this patch fixes the quota accounting and makes sure that\nthe i_blocks value is set correctly.\n\nSigned-off-by: Aditya Kali \u003cadityakali@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f975d6bcc7a698a10cc755115e27d3612dcfe322",
      "tree": "859f688a1962209ef535ca79cf31433c7bc57135",
      "parents": [
        "24aaa8ef4e2b5764ada1fc69787e2fbd4f6276e5"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:00:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 19:00:51 2011 -0400"
      },
      "message": "ext4: teach ext4_statfs() to deal with clusters if bigalloc is enabled\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "24aaa8ef4e2b5764ada1fc69787e2fbd4f6276e5",
      "tree": "7f83cc8e52b5f2edc5d89d2d1808d0972831f9bf",
      "parents": [
        "5704265188ffe4290ed73b3cb685206c3ed8209d"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:58:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:58:51 2011 -0400"
      },
      "message": "ext4: convert the free_blocks field in s_flex_groups to be free_clusters\n\nConvert the free_blocks to be free_clusters to make the final revised\nbigalloc changes easier to read/understand.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n\n"
    },
    {
      "commit": "5704265188ffe4290ed73b3cb685206c3ed8209d",
      "tree": "6bc51bea59625b2a7c8e4b74bbb66884371f74dd",
      "parents": [
        "0aa060000e83ca3d09ddc446a7174fb0820d99bc"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:56:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:56:51 2011 -0400"
      },
      "message": "ext4: convert s_{dirty,free}blocks_counter to s_{dirty,free}clusters_counter\n\nConvert the percpu counters s_dirtyblocks_counter and\ns_freeblocks_counter in struct ext4_super_info to be\ns_dirtyclusters_counter and s_freeclusters_counter.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "bab08ab9646288f1b0b72a7aaeecdff94bd62c18",
      "tree": "e301377f1ce9093a44b2cfb331439e15d79789ed",
      "parents": [
        "281b59959707dfae03ce038cdf231bf4904e170c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:36:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:36:51 2011 -0400"
      },
      "message": "ext4: enforce bigalloc restrictions (e.g., no online resizing, etc.)\n\nAt least initially if the bigalloc feature is enabled, we will not\nsupport non-extent mapped inodes, online resizing, online defrag, or\nthe FITRIM ioctl.  This simplifies the initial implementation.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "281b59959707dfae03ce038cdf231bf4904e170c",
      "tree": "3a6b36d060a41b19351c29c51d079149cae7511c",
      "parents": [
        "7c2e70879fc0949b4220ee61b7c4553f6976a94d"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:34:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:34:51 2011 -0400"
      },
      "message": "ext4: read-only support for bigalloc file systems\n\nThis adds supports for bigalloc file systems.  It teaches the mount\ncode just enough about bigalloc superblock fields that it will mount\nthe file system without freaking out that the number of blocks per\ngroup is too big.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7c2e70879fc0949b4220ee61b7c4553f6976a94d",
      "tree": "5eea688d4ca50ec27e9cf59144f257e1683cfeb7",
      "parents": [
        "02fac1297eb3f471a27368271aadd285548297b0"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:28:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Sep 09 18:28:51 2011 -0400"
      },
      "message": "ext4: add ext4-specific kludge to avoid an oops after the disk disappears\n\nThe del_gendisk() function uninitializes the disk-specific data\nstructures, including the bdi structure, without telling anyone\nelse.  Once this happens, any attempt to call mark_buffer_dirty()\n(for example, by ext4_commit_super), will cause a kernel OOPS.\n\nFix this for now until we can fix things in an architecturally correct\nway.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "56889787cfa77dfd96f0b3a3e6a4f26c2e4a5134",
      "tree": "5fb1be2d593fae0bb1a566397c58dc4f7ce010f2",
      "parents": [
        "2be4751b21ae1cacb002da48cfc5bf6743fee8c1"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Sep 03 18:22:38 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Sep 03 18:22:38 2011 -0400"
      },
      "message": "ext4: improve handling of conflicting mount options\n\nIf the user explicitly specifies conflicting mount options for\ndelalloc or dioread_nolock and data\u003djournal, fail the mount, instead\nof printing a warning and continuing (since many user\u0027s won\u0027t look at\ndmesg and notice the warning).\n\nAlso, print a single warning that data\u003djournal implies that delayed\nallocation is not on by default (since it\u0027s not supported), and\nfurthermore that O_DIRECT is not supported.  Improve the text in\nDocumentation/filesystems/ext4.txt so this is clear there as well.\n\nSimilarly, if the dioread_nolock mount option is specified when the\nfile system block size !\u003d PAGE_SIZE, fail the mount instead of\nprinting a warning message and ignoring the mount option.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2581fdc810889fdea97689cb62481201d579c796",
      "tree": "55d7a2244a5efa184e290446c0ee3f61b71bf264",
      "parents": [
        "441c850857148935babe000fc2ba1455fe54a6a9"
      ],
      "author": {
        "name": "Jiaying Zhang",
        "email": "jiayingz@google.com",
        "time": "Sat Aug 13 12:17:13 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Aug 13 12:17:13 2011 -0400"
      },
      "message": "ext4: call ext4_ioend_wait and ext4_flush_completed_IO in ext4_evict_inode\n\nFlush inode\u0027s i_completed_io_list before calling ext4_io_wait to\nprevent the following deadlock scenario: A page fault happens while\nsome process is writing inode A. During page fault,\nshrink_icache_memory is called that in turn evicts another inode\nB. Inode B has some pending io_end work so it calls ext4_ioend_wait()\nthat waits for inode B\u0027s i_ioend_count to become zero. However, inode\nB\u0027s ioend work was queued behind some of inode A\u0027s ioend work on the\nsame cpu\u0027s ext4-dio-unwritten workqueue. As the ext4-dio-unwritten\nthread on that cpu is processing inode A\u0027s ioend work, it tries to\ngrab inode A\u0027s i_mutex lock. Since the i_mutex lock of inode A is\nstill hold before the page fault happened, we enter a deadlock.\n\nAlso moves ext4_flush_completed_IO and ext4_ioend_wait from\next4_destroy_inode() to ext4_evict_inode(). During inode deleteion,\next4_evict_inode() is called before ext4_destroy_inode() and in\next4_evict_inode(), we may call ext4_truncate() without holding\ni_mutex lock. As a result, there is a race between flush_completed_IO\nthat is called from ext4_ext_truncate() and ext4_end_io_work, which\nmay cause corruption on an io_end structure. This change moves\next4_flush_completed_IO and ext4_ioend_wait from ext4_destroy_inode()\nto ext4_evict_inode() to resolve the race between ext4_truncate() and\next4_end_io_work during inode deletion.\n\nSigned-off-by: Jiaying Zhang \u003cjiayingz@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "db9481c0476c6475d058ac7ecebb5a822b43cc99",
      "tree": "d3115cab19ab99912618428d9f9e76bbf3572857",
      "parents": [
        "ed8f37370d83e695c0a4fa5d5fc7a83ecb947526"
      ],
      "author": {
        "name": "Mathias Krause",
        "email": "minipli@googlemail.com",
        "time": "Wed Aug 03 14:57:11 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Aug 03 14:57:11 2011 -0400"
      },
      "message": "ext4: use kzalloc in ext4_kzalloc()\n\nCommit 9933fc0i (ext4: introduce ext4_kvmalloc(), ext4_kzalloc(), and\next4_kvfree()) intruduced wrappers around k*alloc/vmalloc but introduced\na typo for ext4_kzalloc() by not using kzalloc() but kmalloc().\n\nSigned-off-by: Mathias Krause \u003cminipli@googlemail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f18a5f21c25707b4fe64b326e2b4d150565e7300",
      "tree": "b17baa6c8476eb2a3fbc6b1d65c7fd59950a2dcd",
      "parents": [
        "9933fc0ac1ac14b795819cd63d05ea92112f690a"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 01 08:45:38 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 01 08:45:38 2011 -0400"
      },
      "message": "ext4: use ext4_kvzalloc()/ext4_kvmalloc() for s_group_desc and s_group_info\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9933fc0ac1ac14b795819cd63d05ea92112f690a",
      "tree": "bff42e3494fd5401e6b171ddae8f52ecd1defd91",
      "parents": [
        "33853a0dde359ded0534204eb6857ad5166d515b"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 01 08:45:02 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 01 08:45:02 2011 -0400"
      },
      "message": "ext4: introduce ext4_kvmalloc(), ext4_kzalloc(), and ext4_kvfree()\n\nIntroduce new helper functions which try kmalloc, and then fall back\nto vmalloc if necessary, and use them for allocating and deallocating\ns_flex_groups.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8f82f840ec6ab873f520364d443ff6fa1b3f8e22",
      "tree": "72d90cdc8f7311ef913b7471e53f718bebbf7414",
      "parents": [
        "2d859db3e4a82a365572592d57624a5f996ed0ec"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Tue Jul 26 21:35:44 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 26 21:35:44 2011 -0400"
      },
      "message": "ext4: prevent parallel resizers by atomic bit ops\n\nBefore this patch, parallel resizers are allowed and protected by a\nmutex lock, actually, there is no need to support parallel resizer, so\nthis patch prevents parallel resizers by atmoic bit ops, like\nlock_page() and unlock_page() do.\n\nTo do this, the patch removed the mutex lock s_resize_lock from struct\next4_sb_info and added a unsigned long field named s_resize_flags\nwhich inidicates if there is a resizer.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "3eb08658431abd65c0fe6855d1860859c2d416f7",
      "tree": "5f7d21be65bcec29ac50918cadedd08a62cdf318",
      "parents": [
        "d7a1fee135771e6e5185642bdc17df19bbdbcc48"
      ],
      "author": {
        "name": "Dan Ehrenberg",
        "email": "dehrenberg@google.com",
        "time": "Sun Jul 17 21:18:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 17 21:18:51 2011 -0400"
      },
      "message": "ext4: ignore a stripe width of 1\n\nIf the stripe width was set to 1, then this patch will ignore\nthat stripe width and ext4 will act as if the stripe width\nwere 0 with respect to optimizing allocations.\n\nSigned-off-by: Dan Ehrenberg \u003cdehrenberg@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "12706394bcaa48e3d5e19c97d7b4e5683ebb12fb",
      "tree": "d2a9effccf0162de6b783cf40fadd0f27c1bd22e",
      "parents": [
        "4862fd6047ed02e2726667c54d35f538eecc56aa"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 10 22:37:50 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 10 22:37:50 2011 -0400"
      },
      "message": "ext4: add tracepoint for ext4_journal_start\n\nThis will help debug who is responsible for starting a jbd2 transaction.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f17722f917b2f21497deb6edc62fb1683daa08e6",
      "tree": "10509e066829e685b25d74239f490345d28603d2",
      "parents": [
        "5def1360252b974faeb438775c19c14338bc1903"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Mon Jun 06 00:05:17 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 06 00:05:17 2011 -0400"
      },
      "message": "ext4: Fix max file size and logical block counting of extent format file\n\nKazuya Mio reported that he was able to hit BUG_ON(next \u003d\u003d lblock)\nin ext4_ext_put_gap_in_cache() while creating a sparse file in extent\nformat and fill the tail of file up to its end. We will hit the BUG_ON\nwhen we write the last block (2^32-1) into the sparse file.\n\nThe root cause of the problem lies in the fact that we specifically set\ns_maxbytes so that block at s_maxbytes fit into on-disk extent format,\nwhich is 32 bit long. However, we are not storing start and end block\nnumber, but rather start block number and length in blocks. It means\nthat in order to cover extent from 0 to EXT_MAX_BLOCK we need\nEXT_MAX_BLOCK+1 to fit into len (because we counting block 0 as well) -\nand it does not.\n\nThe only way to fix it without changing the meaning of the struct\next4_extent members is, as Kazuya Mio suggested, to lower s_maxbytes\nby one fs block so we can cover the whole extent we can get by the\non-disk extent format.\n\nAlso in many places EXT_MAX_BLOCK is used as length instead of maximum\nlogical block number as the name suggests, it is all a bit messy. So\nthis commit renames it to EXT_MAX_BLOCKS and change its usage in some\nplaces to actually be maximum number of blocks in the extent.\n\nThe bug which this commit fixes can be reproduced as follows:\n\n dd if\u003d/dev/zero of\u003d/mnt/mp1/file bs\u003d\u003cblocksize\u003e count\u003d1 seek\u003d$((2**32-2))\n sync\n dd if\u003d/dev/zero of\u003d/mnt/mp1/file bs\u003d\u003cblocksize\u003e count\u003d1 seek\u003d$((2**32-1))\n\nReported-by: Kazuya Mio \u003ck-mio@sx.jp.nec.com\u003e\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f8d613e2a665bf1be9628a3c3f9bafe7599b32c0",
      "tree": "98d4da8d0e1a5fb1d9064626b4b96d95ccf26375",
      "parents": [
        "8a0599dd2471f2a2e409498c08a0ab339057ad06",
        "5bc20fc59706214d9591c11e1938a629d3538c12"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 10:50:56 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 10:50:56 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/djm/tmem\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/djm/tmem:\n  xen: cleancache shim to Xen Transcendent Memory\n  ocfs2: add cleancache support\n  ext4: add cleancache support\n  btrfs: add cleancache support\n  ext3: add cleancache support\n  mm/fs: add hooks to support cleancache\n  mm: cleancache core ops functions and config\n  fs: add field to superblock to support cleancache\n  mm/fs: cleancache documentation\n\nFix up trivial conflict in fs/btrfs/extent_io.c due to includes\n"
    },
    {
      "commit": "7abc52c2ed169c65044d3a199879c8438ad82322",
      "tree": "a8b0ef1291c95c444f615ced2217a1e6ce44e81c",
      "parents": [
        "90a887c9a2e25bcb1fc658fad59dfbc6fb792734"
      ],
      "author": {
        "name": "Dan Magenheimer",
        "email": "dan.magenheimer@oracle.com",
        "time": "Thu May 26 10:02:03 2011 -0600"
      },
      "committer": {
        "name": "Dan Magenheimer",
        "email": "dan.magenheimer@oracle.com",
        "time": "Thu May 26 10:02:03 2011 -0600"
      },
      "message": "ext4: add cleancache support\n\nThis seventh patch of eight in this cleancache series \"opts-in\"\ncleancache for ext4.  Filesystems must explicitly enable cleancache\nby calling cleancache_init_fs anytime an instance of the filesystem\nis mounted. For ext4, all other cleancache hooks are in\nthe VFS layer including the matching cleancache_flush_fs\nhook which must be called on unmount.\n\nDetails and a FAQ can be found in Documentation/vm/cleancache.txt\n\n[v6-v8: no changes]\n[v5: jeremy@goop.org: simplify init hook and any future fs init changes]\nSigned-off-by: Dan Magenheimer \u003cdan.magenheimer@oracle.com\u003e\nReviewed-by: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nReviewed-by: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\nAcked-by: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: Ted Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Rik Van Riel \u003criel@redhat.com\u003e\nCc: Jan Beulich \u003cJBeulich@novell.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\n"
    },
    {
      "commit": "c5e06d101aaf72f1f2192a661414459775e9bd74",
      "tree": "96d05d41be2bfea6d51be915ce196f033a5d9bf3",
      "parents": [
        "d02a9391f79cab65cde74cd9e8ccd2290a565229"
      ],
      "author": {
        "name": "Johann Lombardi",
        "email": "johann@whamcloud.com",
        "time": "Tue May 24 18:31:25 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 24 18:31:25 2011 -0400"
      },
      "message": "ext4: add support for multiple mount protection\n\nPrevent an ext4 filesystem from being mounted multiple times.\nA sequence number is stored on disk and is periodically updated (every 5\nseconds by default) by a mounted filesystem.\nAt mount time, we now wait for s_mmp_update_interval seconds to make sure\nthat the MMP sequence does not change.\nIn case of failure, the nodename, bdevname and the time at which the MMP\nblock was last updated is displayed.\n\nSigned-off-by: Andreas Dilger \u003cadilger@whamcloud.com\u003e\nSigned-off-by: Johann Lombardi \u003cjohann@whamcloud.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d02a9391f79cab65cde74cd9e8ccd2290a565229",
      "tree": "a70993ce201661a360ade69c3a5925b653e9c542",
      "parents": [
        "28739eea9cd42598b632972f5cc64a458c5d40b3"
      ],
      "author": {
        "name": "Kazuya Mio",
        "email": "k-mio@sx.jp.nec.com",
        "time": "Tue May 24 18:30:07 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 24 18:30:07 2011 -0400"
      },
      "message": "ext4: ensure f_bfree returned by ext4_statfs() is non-negative\n\nI found the issue that the number of free blocks went negative.\n# stat -f /mnt/mp1/\n  File: \"/mnt/mp1/\"\n    ID: e175ccb83a872efe Namelen: 255     Type: ext2/ext3\nBlock size: 4096       Fundamental block size: 4096\nBlocks: Total: 258022     Free: -15        Available: -13122\nInodes: Total: 65536      Free: 63029\n\nf_bfree in struct statfs will go negative when the filesystem has\nfew free blocks. Because the number of dirty blocks is bigger than\nthe number of free blocks in the following two cases.\n\nCASE 1:\next4_da_writepages\n  mpage_da_map_and_submit\n    ext4_map_blocks\n      ext4_ext_map_blocks\n        ext4_mb_new_blocks\n          ext4_mb_diskspace_used\n            percpu_counter_sub(\u0026sbi-\u003es_freeblocks_counter, ac-\u003eac_b_ex.fe_len);\n        \u003c--- interrupt statfs systemcall ---\u003e\n        ext4_da_update_reserve_space\n            percpu_counter_sub(\u0026sbi-\u003es_dirtyblocks_counter,\n                            used + ei-\u003ei_allocated_meta_blocks);\n\nCASE 2:\next4_write_begin\n  __block_write_begin\n    ext4_map_blocks\n      ext4_ext_map_blocks\n        ext4_mb_new_blocks\n          ext4_mb_diskspace_used\n            percpu_counter_sub(\u0026sbi-\u003es_freeblocks_counter, ac-\u003eac_b_ex.fe_len);\n            \u003c--- interrupt statfs systemcall ---\u003e\n            percpu_counter_sub(\u0026sbi-\u003es_dirtyblocks_counter, reserv_blks);\n\nTo avoid the issue, this patch ensures that f_bfree is non-negative.\n\nSigned-off-by: Kazuya Mio \u003ck-mio@sx.jp.nec.com\u003e\n"
    },
    {
      "commit": "77f4135f2a219a2127be6cc1208c42e6175b11dd",
      "tree": "8f85549d2354c5a69a5b29197f68a554daad1324",
      "parents": [
        "93917411be8db5d21abf15c781dfa43c5cc6edf2"
      ],
      "author": {
        "name": "Vivek Haldar",
        "email": "haldar@google.com",
        "time": "Sun May 22 21:24:16 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 22 21:24:16 2011 -0400"
      },
      "message": "ext4: count hits/misses of extent cache and expose in sysfs\n\nThe number of hits and misses for each filesystem is exposed in\n/sys/fs/ext4/\u003cdev\u003e/extent_cache_{hits, misses}.\n\nTested: fsstress, manual checks.\nSigned-off-by: Vivek Haldar \u003chaldar@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "373cd5c53d5ea6622c319ecd84e29e2737d488bd",
      "tree": "2df40a29def22438cc15f90e4683d43974798784",
      "parents": [
        "1bb933fb1fa8e4cb337a0d5dfd2ff4c0dc2073e8"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 22 16:12:35 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 22 16:12:35 2011 -0400"
      },
      "message": "ext4: don\u0027t show mount options in /proc/mounts if there is no journal\n\nAfter creating an ext4 file system without a journal:\n\n  # mke2fs -t ext4 -O ^has_journal /dev/sda\n  # mount -t ext4 /dev/sda /test\n\nthe /proc/mounts will show:\n\"/dev/sda /test ext4 rw,relatime,user_xattr,acl,barrier\u003d1,data\u003dwriteback 0 0\"\nwhich can fool users into thinking that the fs is using writeback mode.\n\nSo don\u0027t set the writeback option when the journal has not been\nenabled; we don\u0027t depend on the writeback option being set, since\next4_should_writeback_data() in ext4_jbd2.h tests to see if the\njournal is not present before returning true.\n\nReported-by: Robin Dong \u003csanbai@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n\n"
    },
    {
      "commit": "1bb933fb1fa8e4cb337a0d5dfd2ff4c0dc2073e8",
      "tree": "d03bbc0de028862fb9df1d7941a03103150d69de",
      "parents": [
        "51ce65115642b77040f5582b8d2fc8815ac450f9"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Fri May 20 13:55:29 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 20 13:55:29 2011 -0400"
      },
      "message": "ext4: fix possible use-after-free in ext4_remove_li_request()\n\nWe need to take reference to the s_li_request after we take a mutex,\nbecause it might be freed since then, hence result in accessing old\nalready freed memory. Also we should protect the whole\next4_remove_li_request() because ext4_li_info might be in the process of\nbeing freed in ext4_lazyinit_thread().\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\n"
    },
    {
      "commit": "51ce65115642b77040f5582b8d2fc8815ac450f9",
      "tree": "53e42bb73ccbca4251d46ec5705a40a6b61bc5ab",
      "parents": [
        "e1290b3e62c496ade19939ce036f35bb69306820"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Fri May 20 13:55:16 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 20 13:55:16 2011 -0400"
      },
      "message": "ext4: fix the mount option \"init_itable\u003dn\" to work as expected for n\u003d0\n\nFor some reason, when we set the mount option \"init_itable\u003d0\" it\nbehaves as we would set init_itable\u003d20 which is not right at all.\nBasically when we set it to zero we are saying to lazyinit thread not\nto wait between zeroing the inode table (except of cond_resched()) so\nthis commit fixes that and removes the unnecessary condition.  The \u0027n\u0027\nshould be also properly used on remount.\n\nWhen the n is not set at all, it means that the default miltiplier\nEXT4_DEF_LI_WAIT_MULT is set instead.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReported-by: Eric Sandeen \u003csandeen@redhat.com\u003e\n"
    },
    {
      "commit": "e1290b3e62c496ade19939ce036f35bb69306820",
      "tree": "aaf8fc2fd2b9b7c9c1ce15303bb8debf7ab3d01b",
      "parents": [
        "4ed5c033c11b33149d993734a6a8de1016e8f03f"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Fri May 20 13:49:51 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 20 13:49:51 2011 -0400"
      },
      "message": "ext4: Remove unnecessary wait_event ext4_run_lazyinit_thread()\n\nFor some reason we have been waiting for lazyinit thread to start in the\next4_run_lazyinit_thread() but it is not needed since it was jus\nunnecessary complexity, so get rid of it. We can also remove li_task and\nli_wait_task since it is not used anymore.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\n"
    },
    {
      "commit": "4ed5c033c11b33149d993734a6a8de1016e8f03f",
      "tree": "826892fddc9cef7cbfac541eb13bb8eebc95c539",
      "parents": [
        "0e499890c1fd9e0a1bed02002161c4c7873d7489"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Fri May 20 13:49:04 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri May 20 13:49:04 2011 -0400"
      },
      "message": "ext4: Use schedule_timeout_interruptible() for waiting in lazyinit thread\n\nIn order to make lazyinit eat approx. 10% of io bandwidth at max, we\nare sleeping between zeroing each single inode table. For that purpose\nwe are using timer which wakes up thread when it expires. It is set\nvia add_timer() and this may cause troubles in the case that thread\nhas been woken up earlier and in next iteration we call add_timer() on\nstill running timer hence hitting BUG_ON in add_timer(). We could fix\nthat by using mod_timer() instead however we can use\nschedule_timeout_interruptible() for waiting and hence simplifying\nthings a lot.\n\nThis commit exchange the old \"waiting mechanism\" with simple\nschedule_timeout_interruptible(), setting the time to sleep. Hence we\ndo not longer need li_wait_daemon waiting queue and others, so get rid\nof it.\n\nAddresses-Red-Hat-Bugzilla: #699708\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\n"
    },
    {
      "commit": "ed3ce80a52c4658f48ef8fc825bdedf8b3fcaa89",
      "tree": "ebed56d680e8d79842b0c3077f11cbc237faa19f",
      "parents": [
        "9b940f8e8c32456c8a6428fa4313a4bcca7b4fcb"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Wed May 18 13:29:57 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed May 18 13:29:57 2011 -0400"
      },
      "message": "ext4: don\u0027t warn about mnt_count if it has been disabled\n\nCurrently, if we mkfs a new ext4 volume with s_max_mnt_count set to\nzero, and mount it for the first time, we will get the warning:\n\n\tmaximal mount count reached, running e2fsck is recommended\n\nIt is really misleading. So change the check so that it won\u0027t warn in\nthat case.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0b26859027ce0005ef89520af20351360e51ad76",
      "tree": "d0d8cec8c1f413c0980b4a66614871bd435ab334",
      "parents": [
        "6976a6f2acde2b0443cd64f1d08af90630e4ce81"
      ],
      "author": {
        "name": "Amir Goldstein",
        "email": "amir73il@gmail.com",
        "time": "Mon May 16 09:59:13 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 16 09:59:13 2011 -0400"
      },
      "message": "ext4: fix oops in ext4_quota_off()\n\nIf quota is not enabled when ext4_quota_off() is called, we must not\ndereference quota file inode since it is NULL.  Check properly for\nthis.\n\nThis fixes a bug in commit 21f976975cbe (ext4: remove unnecessary\n[cm]time update of quota file), which was merged for 2.6.39-rc3.\n\nReported-by: Amir Goldstein \u003camir73il@users.sf.net\u003e\nSigned-off-by: Amir Goldstein \u003camir73il@users.sf.net\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "66bb82798d9ff896271d13f5020f7fb9b7d88e1a",
      "tree": "7bfbb2708421712b735e9c32a92a8cbbf3d58f22",
      "parents": [
        "55ff3840a293923daacc880cf4aed30c3c49f754"
      ],
      "author": {
        "name": "Amerigo Wang",
        "email": "amwang@redhat.com",
        "time": "Mon May 09 10:30:41 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 09 10:30:41 2011 -0400"
      },
      "message": "ext4: remove redundant #ifdef in super.c\n\nThere is already an #ifdef CONFIG_QUOTA some lines above,\nso this one is totally useless.\n\nSigned-off-by: WANG Cong \u003camwang@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "55ff3840a293923daacc880cf4aed30c3c49f754",
      "tree": "a6ff7d177ff6b2e1f58d63560cc9323f789f53a1",
      "parents": [
        "00d098822fe215a2f4fd32f244a9055b0b043bfe"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon May 09 10:28:41 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon May 09 10:28:41 2011 -0400"
      },
      "message": "ext4: remove redundant check for first_not_zeroed in ext4_register_li_request\n\nWe have checked first_not_zeroed \u003d\u003d ngroups already above, so remove\nthis redundant check.\n\nsbi-\u003es_li_request \u003d NULL above is also removed since it is NULL\nalready.\n\nCc: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2035e776050aea57fb5255557216473e82793f2c",
      "tree": "6a97e536fd5fbdc29e4b471195a5dd5a0df35fc6",
      "parents": [
        "26626f1172fb4f3f323239a6a5cf4e082643fa46"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 18 17:29:14 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 18 17:29:14 2011 -0400"
      },
      "message": "ext4: check for ext[23] file system features when mounting as ext[23]\n\nProvide better emulation for ext[23] mode by enforcing that the file\nsystem does not have any unsupported file system features as defined\nby ext[23] when emulating the ext[23] file system driver when\nCONFIG_EXT4_USE_FOR_EXT23 is defined.\n\nThis causes the file system type information in /proc/mounts to be\ncorrect for the automatically mounted root file system.  This also\nmeans that \"mount -t ext2 /dev/sda /mnt\" will fail if /dev/sda\ncontains an ext3 or ext4 file system, just as one would expect if the\noriginal ext2 file system driver were in use.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a97b52022a73ec12e43f0b2c7d4bd1f40f89c81d",
      "tree": "1a35544915a5704fa59c63b43e9f46e20be1e296",
      "parents": [
        "18770c7c3a0ccd60017ac76b5d2e7d1f71376b94",
        "c8205636029fc869278c55b7336053b3e7ae3ef4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 11 15:45:47 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 11 15:45:47 2011 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:\n  ext4: fix data corruption regression by reverting commit 6de9843dab3f\n  ext4: Allow indirect-block file to grow the file size to max file size\n  ext4: allow an active handle to be started when freezing\n  ext4: sync the directory inode in ext4_sync_parent()\n  ext4: init timer earlier to avoid a kernel panic in __save_error_info\n  jbd2: fix potential memory leak on transaction commit\n  ext4: fix a double free in ext4_register_li_request\n  ext4: fix credits computing for indirect mapped files\n  ext4: remove unnecessary [cm]time update of quota file\n  jbd2: move bdget out of critical section\n"
    },
    {
      "commit": "be4f27d324e8ddd57cc0d4d604fe85ee0425cba9",
      "tree": "e4262a9e1ade9095e1bf937dc4b9d56a08824eda",
      "parents": [
        "0893ed458b4b1d7c7667ca7ffb8b11febe7e7e6c"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Sun Apr 10 22:06:07 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Apr 10 22:06:07 2011 -0400"
      },
      "message": "ext4: allow an active handle to be started when freezing\n\next4_journal_start_sb() should not prevent an active handle from being\nstarted due to s_frozen.  Otherwise, deadlock is easy to happen, below\nis a situation.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n     freeze         |       truncate\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                    |  ext4_ext_truncate()\n    freeze_super()  |   starts a handle\n    sets s_frozen   |\n                    |  ext4_ext_truncate()\n                    |  holds i_data_sem\n  ext4_freeze()     |\n  waits for updates |\n                    |  ext4_free_blocks()\n                    |  calls dquot_free_block()\n                    |\n                    |  dquot_free_blocks()\n                    |  calls ext4_dirty_inode()\n                    |\n                    |  ext4_dirty_inode()\n                    |  trys to start an active\n                    |  handle\n                    |\n                    |  block due to s_frozen\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReported-by: Amir Goldstein \u003camir73il@users.sf.net\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nReviewed-by: Andreas Dilger \u003cadilger@dilger.ca\u003e\n"
    },
    {
      "commit": "0449641130f5652b344ef6fa39fa019d7e94660a",
      "tree": "d24779d75a6d3fafff8082591b3572a5fdb32858",
      "parents": [
        "6cba611e600ded15f642552ce6b5f7ee243bacf0"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Tue Apr 05 19:55:28 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Apr 05 19:55:28 2011 -0400"
      },
      "message": "ext4: init timer earlier to avoid a kernel panic in __save_error_info\n\nDuring mount, when we fail to open journal inode or root inode, the\n__save_error_info will mod_timer. But actually s_err_report isn\u0027t\ninitialized yet and the kernel oops. The detailed information can\nbe found https://bugzilla.kernel.org/show_bug.cgi?id\u003d32082.\n\nThe best way is to check whether the timer s_err_report is initialized\nor not. But it seems that in include/linux/timer.h, we can\u0027t find a\ngood function to check the status of this timer, so this patch just\nmove the initializtion of s_err_report earlier so that we can avoid\nthe kernel panic. The corresponding del_timer is also added in the\nerror path.\n\nReported-by: Sami Liedes \u003csliedes@cc.hut.fi\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "46e4690bbd9a4f8d9e7c4f34e34b48f703ad47e0",
      "tree": "94d800c75ed4a9e11cd5301e171d301b266d4032",
      "parents": [
        "5b41395fcc0265fc9f193aef9df39ce49d64677c"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon Apr 04 16:00:49 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 04 16:00:49 2011 -0400"
      },
      "message": "ext4: fix a double free in ext4_register_li_request\n\nIn ext4_register_li_request, we malloc a ext4_li_request and\ninserts it into ext4_li_info-\u003eli_request_list. In case of any\nerror later, we free it in the end.  But if we have some error\nin ext4_run_lazyinit_thread, the whole li_request_list will be\ndropped and freed in it. So we will double free this ext4_li_request.\n\nThis patch just sets elr to NULL after it is inserted to the list\nso that the latter kfree won\u0027t double free it.\n\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nReviewed-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "21f976975cbecbdaf23ceeacc1cab2b1c05a028e",
      "tree": "3040b533bf50d58e23c3c207001d89b29846df37",
      "parents": [
        "50f689af019b19f9b9a39be782c21b6f52b1615a"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Apr 04 15:33:39 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Apr 04 15:33:39 2011 -0400"
      },
      "message": "ext4: remove unnecessary [cm]time update of quota file\n\nIt is not necessary to update [cm]time of quota file on each quota\nfile write and it wastes journal space and IO throughput with inode\nwrites. So just remove the updating from ext4_quota_write() and only\nupdate times when quotas are being turned off. Userspace cannot get\nanything reliable from quota files while they are used by the kernel\nanyway.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "ae005cbed12d0b340b04b59d6f5c56e710b3895d",
      "tree": "d464865bcc97bea05eab4eba0d10bcad4ec89b93",
      "parents": [
        "3961cdf85b749f6bab50ad31ee97e9277e7a3b70",
        "0ba0851714beebb800992e5105a79dc3a4c504b0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 09:57:40 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 25 09:57:41 2011 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (43 commits)\n  ext4: fix a BUG in mb_mark_used during trim.\n  ext4: unused variables cleanup in fs/ext4/extents.c\n  ext4: remove redundant set_buffer_mapped() in ext4_da_get_block_prep()\n  ext4: add more tracepoints and use dev_t in the trace buffer\n  ext4: don\u0027t kfree uninitialized s_group_info members\n  ext4: add missing space in printk\u0027s in __ext4_grp_locked_error()\n  ext4: add FITRIM to compat_ioctl.\n  ext4: handle errors in ext4_clear_blocks()\n  ext4: unify the ext4_handle_release_buffer() api\n  ext4: handle errors in ext4_rename\n  jbd2: add COW fields to struct jbd2_journal_handle\n  jbd2: add the b_cow_tid field to journal_head struct\n  ext4: Initialize fsync transaction ids in ext4_new_inode()\n  ext4: Use single thread to perform DIO unwritten convertion\n  ext4: optimize ext4_bio_write_page() when no extent conversion is needed\n  ext4: skip orphan cleanup if fs has unknown ROCOMPAT features\n  ext4: use the nblocks arg to ext4_truncate_restart_trans()\n  ext4: fix missing iput of root inode for some mount error paths\n  ext4: make FIEMAP and delayed allocation play well together\n  ext4: suppress verbose debugging information if malloc-debug is off\n  ...\n\nFi up conflicts in fs/ext4/super.c due to workqueue changes\n"
    },
    {
      "commit": "21149d611ecd0faf60f4ef94aa2bf8ed872f92bf",
      "tree": "93c1b2cf51747dae66789db0506e94bc02dd0859",
      "parents": [
        "a56e69c28ad0782a99f3f196e93d57ba5a7e2324"
      ],
      "author": {
        "name": "Robin Dong",
        "email": "sanbai@taobao.com",
        "time": "Mon Mar 21 20:39:22 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Mar 21 20:39:22 2011 -0400"
      },
      "message": "ext4: add missing space in printk\u0027s in __ext4_grp_locked_error()\n\nWhen we do performence-testing on ext4 filesystem, we observed a\nwarning like this:\n\nEXT4-fs error (device sda7): ext4_mb_generate_buddy:718: group 259825901 blocks in bitmap, 26057 in gd\n\ninstead, it should be\n\n\"group 2598, 25901 blocks in bitmap, 26057 in gd\"\n\nReviewed-by: Coly Li \u003cbosong.ly@taobao.com\u003e\nCc: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: Robin Dong \u003csanbai@taobao.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "bd2895eeade5f11f3e5906283c630bbdb4b57454",
      "tree": "4d98f4fcd80c7d062afce28823d08aee53e66f82",
      "parents": [
        "016aa2ed1cc9cf704cf76d8df07751b6daa9750f",
        "24d51add7438f9696a7205927bf9de3c5c787a58"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 08:20:19 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 08:20:19 2011 -0700"
      },
      "message": "Merge branch \u0027for-2.6.39\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\n* \u0027for-2.6.39\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:\n  workqueue: fix build failure introduced by s/freezeable/freezable/\n  workqueue: add system_freezeable_wq\n  rds/ib: use system_wq instead of rds_ib_fmr_wq\n  net/9p: replace p9_poll_task with a work\n  net/9p: use system_wq instead of p9_mux_wq\n  xfs: convert to alloc_workqueue()\n  reiserfs: make commit_wq use the default concurrency level\n  ocfs2: use system_wq instead of ocfs2_quota_wq\n  ext4: convert to alloc_workqueue()\n  scsi/scsi_tgt_lib: scsi_tgtd isn\u0027t used in memory reclaim path\n  scsi/be2iscsi,qla2xxx: convert to alloc_workqueue()\n  misc/iwmc3200top: use system_wq instead of dedicated workqueues\n  i2o: use alloc_workqueue() instead of create_workqueue()\n  acpi: kacpi*_wq don\u0027t need WQ_MEM_RECLAIM\n  fs/aio: aio_wq isn\u0027t used in memory reclaim path\n  input/tps6507x-ts: use system_wq instead of dedicated workqueue\n  cpufreq: use system_wq instead of dedicated workqueues\n  wireless/ipw2x00: use system_wq instead of dedicated workqueues\n  arm/omap: use system_wq in mailbox\n  workqueue: use WQ_MEM_RECLAIM instead of WQ_RESCUER\n"
    },
    {
      "commit": "f2fa2ffc2046fdc35f96366d1ec8675f4d578522",
      "tree": "b1215682f5fbb99cf975cee3fb827909ee4a1c97",
      "parents": [
        "03cb5f03dcb26846fcad345d8c15aae91579a53d"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sat Jan 29 18:43:40 2011 +0530"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 15 02:21:45 2011 -0400"
      },
      "message": "ext4: Copy fs UUID to superblock\n\nFile system UUID is made available to application\nvia  /proc/\u003cpid\u003e/mountinfo\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "198868f35de99e7197829314076e5465c37e4cc5",
      "tree": "04d6044250667f150787bedf68db6ac3732458c9",
      "parents": [
        "b616844310a6c8a4ab405d3436bbb6e53cfd852f"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Sat Mar 05 11:52:45 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 05 11:52:45 2011 -0500"
      },
      "message": "ext4: Use single thread to perform DIO unwritten convertion\n\nWhile running ext4 testing on multiple core, we found there are per\ncpu ext4-dio-unwritten threads processing conversion from unwritten\nextents to written for IOs completed from async direct IO patch.  Per\nfilesystem is enough, we don\u0027t need per cpu threads to work on\nconversion.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\n"
    },
    {
      "commit": "d39195c33bb1b5fdcb0f416e8a0b34bfdb07a027",
      "tree": "dcea99dcf6ca1b76c0db23fd4e81033440d057b5",
      "parents": [
        "8e8eaabefee3ff645b9551ee32c6c54c7d80ad19"
      ],
      "author": {
        "name": "Amir Goldstein",
        "email": "amir73il@gmail.com",
        "time": "Mon Feb 28 00:53:45 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 28 00:53:45 2011 -0500"
      },
      "message": "ext4: skip orphan cleanup if fs has unknown ROCOMPAT features\n\nOrphan cleanup is currently executed even if the file system has some\nnumber of unknown ROCOMPAT features, which deletes inodes and frees\nblocks, which could be very bad for some RO_COMPAT features,\nespecially the SNAPSHOT feature.\n\nThis patch skips the orphan cleanup if it contains readonly compatible\nfeatures not known by this ext4 implementation, which would prevent\nthe fs from being mounted (or remounted) readwrite.\n\nSigned-off-by: Amir Goldstein \u003camir73il@users.sf.net\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "32a9bb57d7c1fd04ae0f72b8f671501f000a0e9f",
      "tree": "9bab50282f4d17a9710df599170662bda8a9a61d",
      "parents": [
        "6d9c85eb700bd3ac59e63bb9de463dea1aca084c"
      ],
      "author": {
        "name": "Manish Katiyar",
        "email": "mkatiyar@gmail.com",
        "time": "Sun Feb 27 20:42:06 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Feb 27 20:42:06 2011 -0500"
      },
      "message": "ext4: fix missing iput of root inode for some mount error paths\n\nThis assures that the root inode is not leaked, and that sb-\u003es_root is\nNULL, which will prevent generic_shutdown_super() from doing extra\nwork, including call sync_filesystem, which ultimately results in\next4_sync_fs() getting called with an uninitialized struct super,\nwhich is the cause of the crash noted in Kernel Bugzilla #26752.\n\nhttps://bugzilla.kernel.org/show_bug.cgi?id\u003d26752\n\nSigned-off-by: Manish Katiyar \u003cmkatiyar@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "6fd7a46781999c32f423025767e43b349b967d57",
      "tree": "cb324e785e6e00c29ba522c5b76a2bfdfee7b1ab",
      "parents": [
        "c7f5938adce6727b9d17785f289c1146bd88d678"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 26 13:53:09 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 26 13:53:09 2011 -0500"
      },
      "message": "ext4: enable mblk_io_submit by default\n\nNow that we\u0027ve fixed the file corruption bug in commit d50bdd5aa55,\nit\u0027s time to enable mblk_io_submit by default.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ea6633369458992241599c9d9ebadffaeddec164",
      "tree": "b9d42574ad1dbefb09e527ea9ed4e5d78c3d762c",
      "parents": [
        "5c2ed62fd447e2c696e222dcf71d1322bbbc58d4"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Feb 23 17:51:51 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Feb 23 17:51:51 2011 -0500"
      },
      "message": "ext4: enable acls and user_xattr by default\n\nThere\u0027s no good reason to require the extra step of providing\na mount option for acl or user_xattr once the feature is configured\non; no other filesystem that I know of requires this.\n\nUserspace patches have set these options in default mount options,\nand this patch makes them default in the kernel.  At some point\nwe can start to deprecate the options, perhaps.\n\nFor now I\u0027ve removed default mount option checks in show_options()\nto be explicit about what\u0027s set, since it\u0027s changing the default,\nbut I\u0027m open to alternatives if desired.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0b75a840120b1e647e32342e9cc46631410088d5",
      "tree": "8c6858b3a0a9627f1424fd2b61e0f9d866221340",
      "parents": [
        "5dbd571d875d73e087c1eeb3d840cfc653a97422"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Wed Feb 23 12:22:49 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Feb 23 12:22:49 2011 -0500"
      },
      "message": "ext4: mark file-local functions and variables as static\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5dbd571d875d73e087c1eeb3d840cfc653a97422",
      "tree": "dfad6885fad57fb45f3e1d37d3d2d56fd6c320b0",
      "parents": [
        "7dc576158d7e5cdff3349f78598fdb4080536342"
      ],
      "author": {
        "name": "Alexander V. Lukyanov",
        "email": "lav@netis.ru",
        "time": "Mon Feb 21 21:33:21 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 21 21:33:21 2011 -0500"
      },
      "message": "ext4: allow inode_readahead_blks\u003d0 (linux-2.6.37)\n\nI cannot disable inode-read-ahead feature of ext4 (on 2.6.37):\n\n# echo 0 \u003e /sys/fs/ext4/sda2/inode_readahead_blks \nbash: echo: write error: Invalid argument\n\nOn a server with lots of small files and random access this read-ahead makes\nperformance worse, and I\u0027d like to disable it. I work around this problem\nby using value of 1, but it still reads an extra block.\n\nThis patch fixes the problem by checking for zero explicitly.\n\nSigned-off-by: Alexander V. Lukyanov \u003clav@netis.ru\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7dc576158d7e5cdff3349f78598fdb4080536342",
      "tree": "e7be15a8ee8add729915c81e9cb39cd55d6b572d",
      "parents": [
        "da488945f4bf4096f4ab6091938469bd8822cfec"
      ],
      "author": {
        "name": "Peter Huewe",
        "email": "peterhuewe@gmx.de",
        "time": "Mon Feb 21 21:01:42 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 21 21:01:42 2011 -0500"
      },
      "message": "ext4: Fix sparse warning: Using plain integer as NULL pointer\n\nThis patch fixes the warning \"Using plain integer as NULL pointer\",\ngenerated by sparse, by replacing the offending 0s with NULL.\n\nSigned-off-by: Peter Huewe \u003cpeterhuewe@gmx.de\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "43d133c18b44e7d82d82ef0dcc2bddd55d5dfe81",
      "tree": "8de75c837b55874cc8a81a29bdedbc62668d4481",
      "parents": [
        "4149efb22da66e326fc48baf80d628834509f7f0",
        "6f576d57f1fa0d6026b495d8746d56d949989161"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Feb 21 09:43:56 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Feb 21 09:43:56 2011 +0100"
      },
      "message": "Merge branch \u0027master\u0027 into for-2.6.39\n"
    },
    {
      "commit": "e9e3bcecf44c04b9e6b505fd8e2eb9cea58fb94d",
      "tree": "9f347a48889a00071dbe1f12be4c50ec7a45542b",
      "parents": [
        "2892c15ddda6a76dc10b7499e56c0f3b892e5a69"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Sat Feb 12 08:17:34 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 12 08:17:34 2011 -0500"
      },
      "message": "ext4: serialize unaligned asynchronous DIO\n\next4 has a data corruption case when doing non-block-aligned\nasynchronous direct IO into a sparse file, as demonstrated\nby xfstest 240.\n\nThe root cause is that while ext4 preallocates space in the\nhole, mappings of that space still look \"new\" and \ndio_zero_block() will zero out the unwritten portions.  When\nmore than one AIO thread is going, they both find this \"new\"\nblock and race to zero out their portion; this is uncoordinated\nand causes data corruption.\n\nDave Chinner fixed this for xfs by simply serializing all\nunaligned asynchronous direct IO.  I\u0027ve done the same here.\nThe difference is that we only wait on conversions, not all IO.\nThis is a very big hammer, and I\u0027m not very pleased with\nstuffing this into ext4_file_write().  But since ext4 is\nDIO_LOCKING, we need to serialize it at this high level.\n\nI tried to move this into ext4_ext_direct_IO, but by then\nwe have the i_mutex already, and we will wait on the\nwork queue to do conversions - which must also take the\ni_mutex.  So that won\u0027t work.\n\nThis was originally exposed by qemu-kvm installing to\na raw disk image with a normal sector-63 alignment.  I\u0027ve\ntested a backport of this patch with qemu, and it does\navoid the corruption.  It is also quite a lot slower\n(14 min for package installs, vs. 8 min for well-aligned)\nbut I\u0027ll take slow correctness over fast corruption any day.\n\nMingming suggested that we can track outstanding\nconversions, and wait on those so that non-sparse\nfiles won\u0027t be affected, and I\u0027ve implemented that here;\nunaligned AIO to nonsparse files won\u0027t take a perf hit.\n\n[tytso@mit.edu: Keep the mutex as a hashed array instead\n of bloating the ext4 inode]\n\n[tytso@mit.edu: Fix up namespace issues so that global\n variables are protected with an \"ext4_\" prefix.]\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "dd68314ccf3fb918c1fb6471817edbc60ece4b52",
      "tree": "9faa6b90bfafcd3dbaac1df206df7f56e537030e",
      "parents": [
        "8f021222c1e2756ea4c9dde93b23e1d2a0a4ec37"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Feb 03 14:33:49 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Feb 03 14:33:49 2011 -0500"
      },
      "message": "ext4: fix up ext4 error handling\n\nMake sure we the correct cleanup happens if we die while trying to\nload the ext4 file system.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8f021222c1e2756ea4c9dde93b23e1d2a0a4ec37",
      "tree": "8a74b91a0b1dd27fad9c384449bac0c4b8777a74",
      "parents": [
        "8f1f745331c1b560f53c0d60e55a4f4f43f7cce5"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Thu Feb 03 14:33:33 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Feb 03 14:33:33 2011 -0500"
      },
      "message": "ext4: unregister features interface on module unload\n\nExt4 features interface was not properly unregistered which led to\nproblems while unloading/reloading ext4 module. This commit fixes that by\nadding proper kobject unregistration code into ext4_exit_fs() as well as\nfail-path of ext4_init_fs()\n\nReported-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "8f1f745331c1b560f53c0d60e55a4f4f43f7cce5",
      "tree": "d8db8e0e1a067012795372e38fce09dec6bc575a",
      "parents": [
        "1bae4ce27c9c90344f23c65ea6966c50ffeae2f5"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Thu Feb 03 14:33:15 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Feb 03 14:33:15 2011 -0500"
      },
      "message": "ext4: fix panic on module unload when stopping lazyinit thread\n\nhttps://bugzilla.kernel.org/show_bug.cgi?id\u003d27652\n\nIf the lazyinit thread is running, the teardown function\next4_destroy_lazyinit_thread() has problems:\n\n        ext4_clear_request_list();\n        while (ext4_li_info-\u003eli_task) {\n                wake_up(\u0026ext4_li_info-\u003eli_wait_daemon);\n                wait_event(ext4_li_info-\u003eli_wait_task,\n                           ext4_li_info-\u003eli_task \u003d\u003d NULL);\n        }\n\nClearing the request list will cause the thread to exit and free\next4_li_info, so then we\u0027re waiting on something which is getting\nfreed.\n\nFix this up by making the thread respond to kthread_stop, and exit,\nwithout the need to wait for that exit in some other homegrown way.\n\nCc: stable@kernel.org\nReported-and-Tested-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "fd89d5f2030ac83324330bfd0bc73abf1beadaa6",
      "tree": "5368d06cf6cb5990ff9a58525c9c813d8d73adc3",
      "parents": [
        "40f38ffb72cd58452dc5afc25ca5215bb90538a4"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 01 11:42:42 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 01 11:42:42 2011 +0100"
      },
      "message": "ext4: convert to alloc_workqueue()\n\nConvert create_workqueue() to alloc_workqueue().  This is an identity\nconversion.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Andreas Dilger \u003cadilger.kernel@dilger.ca\u003e\nCc: linux-ext4@vger.kernel.org\n"
    },
    {
      "commit": "4843456c5c341eb57f80f9224362a22665d14107",
      "tree": "5656b405a8b1d2596e8eb748b953ee677a261e3c",
      "parents": [
        "2b1caf6ed7b888c95a1909d343799672731651a5",
        "f00c9e44ad1a9660fe8cd3ca15b6cd9497172eab"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 21 07:33:37 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 21 07:33:37 2011 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6:\n  quota: Fix deadlock during path resolution\n"
    },
    {
      "commit": "275220f0fcff1adf28a717076e00f575edf05fda",
      "tree": "d249bccc80c64443dab211639050c4fb14332648",
      "parents": [
        "fe3c560b8a22cb28e54fe8950abef38e88d75831",
        "81c5e2ae33c4b19e53966b427e33646bf6811830"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "message": "Merge branch \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block: (43 commits)\n  block: ensure that completion error gets properly traced\n  blktrace: add missing probe argument to block_bio_complete\n  block cfq: don\u0027t use atomic_t for cfq_group\n  block cfq: don\u0027t use atomic_t for cfq_queue\n  block: trace event block fix unassigned field\n  block: add internal hd part table references\n  block: fix accounting bug on cross partition merges\n  kref: add kref_test_and_get\n  bio-integrity: mark kintegrityd_wq highpri and CPU intensive\n  block: make kblockd_workqueue smarter\n  Revert \"sd: implement sd_check_events()\"\n  block: Clean up exit_io_context() source code.\n  Fix compile warnings due to missing removal of a \u0027ret\u0027 variable\n  fs/block: type signature of major_to_index(int) to major_to_index(unsigned)\n  block: convert !IS_ERR(p) \u0026\u0026 p to !IS_ERR_NOR_NULL(p)\n  cfq-iosched: don\u0027t check cfqg in choose_service_tree()\n  fs/splice: Pull buf-\u003eops-\u003econfirm() from splice_from_pipe actors\n  cdrom: export cdrom_check_events()\n  sd: implement sd_check_events()\n  sr: implement sr_check_events()\n  ...\n"
    },
    {
      "commit": "f00c9e44ad1a9660fe8cd3ca15b6cd9497172eab",
      "tree": "cbb47ae0d8aba9d8b3c44714b000156715cdf969",
      "parents": [
        "4162cf64973df51fc885825bc9ca4d055891c49f"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Sep 15 17:38:58 2010 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Jan 12 19:14:55 2011 +0100"
      },
      "message": "quota: Fix deadlock during path resolution\n\nAs Al Viro pointed out path resolution during Q_QUOTAON calls to quotactl\nis prone to deadlocks. We hold s_umount semaphore for reading during the\npath resolution and resolution itself may need to acquire the semaphore\nfor writing when e. g. autofs mountpoint is passed.\n\nSolve the problem by performing the resolution before we get hold of the\nsuperblock (and thus s_umount semaphore). The whole thing is complicated\nby the fact that some filesystems (OCFS2) ignore the path argument. So to\ndistinguish between filesystem which want the path and which do not we\nintroduce new .quota_on_meta callback which does not get the path. OCFS2\nthen uses this callback instead of old .quota_on.\n\nCC: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCC: Christoph Hellwig \u003chch@lst.de\u003e\nCC: Ted Ts\u0027o \u003ctytso@mit.edu\u003e\nCC: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "e9688f6acad8cb1f2e8d7abb2de06a6a5c9cbcf2",
      "tree": "2f9b89987c57e3395e53d3ca354f9674c0bef369",
      "parents": [
        "40c73abbb37e399eba274fe49e520ffa3dd65bdb",
        "0f0a25bf516843adae479636dc1cf75fd0bd003c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 11 14:37:31 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 11 14:37:31 2011 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (44 commits)\n  ext4: fix trimming starting with block 0 with small blocksize\n  ext4: revert buggy trim overflow patch\n  ext4: don\u0027t pass entire map to check_eofblocks_fl\n  ext4: fix memory leak in ext4_free_branches\n  ext4: remove ext4_mb_return_to_preallocation()\n  ext4: flush the i_completed_io_list during ext4_truncate\n  ext4: add error checking to calls to ext4_handle_dirty_metadata()\n  ext4: fix trimming of a single group\n  ext4: fix uninitialized variable in ext4_register_li_request\n  ext4: dynamically allocate the jbd2_inode in ext4_inode_info as necessary\n  ext4: drop i_state_flags on architectures with 64-bit longs\n  ext4: reorder ext4_inode_info structure elements to remove unneeded padding\n  ext4: drop ec_type from the ext4_ext_cache structure\n  ext4: use ext4_lblk_t instead of sector_t for logical blocks\n  ext4: replace i_delalloc_reserved_flag with EXT4_STATE_DELALLOC_RESERVED\n  ext4: fix 32bit overflow in ext4_ext_find_goal()\n  ext4: add more error checks to ext4_mkdir()\n  ext4: ext4_ext_migrate should use NULL not 0\n  ext4: Use ext4_error_file() to print the pathname to the corrupted inode\n  ext4: use IS_ERR() to check for errors in ext4_error_file\n  ...\n"
    },
    {
      "commit": "6c5a6cb998854f3c579ecb2bc1423d302bcb1b76",
      "tree": "c3c3b895f39a2d555a12ab6307fbad82e5ee63ab",
      "parents": [
        "8aefcd557d26d0023a36f9ec5afbf55e59f8f26b"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Mon Jan 10 12:30:17 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:30:17 2011 -0500"
      },
      "message": "ext4: fix uninitialized variable in ext4_register_li_request\n\nfs/ext4/super.c: In function \u0027ext4_register_li_request\u0027:\nfs/ext4/super.c:2936: warning: \u0027ret\u0027 may be used uninitialized in this function\n\nIt looks buggy to me, too.\n\nCc: Lukas Czerner \u003clczerner@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8aefcd557d26d0023a36f9ec5afbf55e59f8f26b",
      "tree": "e13143306cd64525cddd2cc2513c448275a1d95a",
      "parents": [
        "353eb83c1422c6326eaab30ce044a179c6018169"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:29:43 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:29:43 2011 -0500"
      },
      "message": "ext4: dynamically allocate the jbd2_inode in ext4_inode_info as necessary\n\nReplace the jbd2_inode structure (which is 48 bytes) with a pointer\nand only allocate the jbd2_inode when it is needed --- that is, when\nthe file system has a journal present and the inode has been opened\nfor writing.  This allows us to further slim down the ext4_inode_info\nstructure.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f232109773ff5b0c840a6761d74940b9cf0d66ec",
      "tree": "a32da5ebd1a3e074e9f52107f3bdc23babb6340c",
      "parents": [
        "ad4fb9cafe100a4a9de6e0529015e584d94ac8dc"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:12:36 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:12:36 2011 -0500"
      },
      "message": "ext4: replace i_delalloc_reserved_flag with EXT4_STATE_DELALLOC_RESERVED\n\nRemove the short element i_delalloc_reserved_flag from the\next4_inode_info structure and replace it a new bit in i_state_flags.\nSince we have an ext4_inode_info for every ext4 inode cached in the\ninode cache, any savings we can produce here is a very good thing from\na memory utilization perspective.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f7c21177af0b32a2cd9ee36189637f0c1f0e1e17",
      "tree": "ba83d4ddcd4b7e15ff575f0b75013ba9ed62f249",
      "parents": [
        "f9a62d090cf47fae2fe6f6bd8eb9f24482573fd8"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:10:55 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:10:55 2011 -0500"
      },
      "message": "ext4: Use ext4_error_file() to print the pathname to the corrupted inode\n\nWhere the file pointer is available, use ext4_error_file() instead of\next4_error_inode().\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f9a62d090cf47fae2fe6f6bd8eb9f24482573fd8",
      "tree": "018b35b669705055963d09c7e2a07c90cc36ade5",
      "parents": [
        "13195184a8bc119dbd2f905db325a453047971cb"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Mon Jan 10 12:10:50 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:10:50 2011 -0500"
      },
      "message": "ext4: use IS_ERR() to check for errors in ext4_error_file\n\nd_path() returns an ERR_PTR and it doesn\u0027t return NULL.  This is in\next4_error_file() and no one actually calls ext4_error_file().\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\n\n"
    },
    {
      "commit": "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9",
      "tree": "203e0f73883e4c26b5597e36042386a1237dab35",
      "parents": [
        "77812a1ef139d84270d27faacc0630c887411013"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:49 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: icache RCU free inodes\n\nRCU free the struct inode. This will allow:\n\n- Subsequent store-free path walking patch. The inode must be consulted for\n  permissions when walking, so an RCU inode reference is a must.\n- sb_inode_list_lock to be moved inside i_lock because sb list walkers who want\n  to take i_lock no longer need to take sb_inode_list_lock to walk the list in\n  the first place. This will simplify and optimize locking.\n- Could remove some nested trylock loops in dcache code\n- Could potentially simplify things a bit in VM land. Do not need to take the\n  page lock to follow page-\u003emapping.\n\nThe downsides of this is the performance cost of using RCU. In a simple\ncreat/unlink microbenchmark, performance drops by about 10% due to inability to\nreuse cache-hot slab objects. As iterations increase and RCU freeing starts\nkicking over, this increases to about 20%.\n\nIn cases where inode lifetimes are longer (ie. many inodes may be allocated\nduring the average life span of a single inode), a lot of this cache reuse is\nnot applicable, so the regression caused by this patch is smaller.\n\nThe cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,\nhowever this adds some complexity to list walking and store-free path walking,\nso I prefer to implement this at a later date, if it is shown to be a win in\nreal situations. I haven\u0027t found a regression in any non-micro benchmark so I\ndoubt it will be a problem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "0ff2ea7d84e31176a046a1eabea59d6e4eecd998",
      "tree": "6aafc9e97bc6fc15923039d0039c8acfd6311722",
      "parents": [
        "94de56ab2062be59d80e2efb7c0dc60ecf616075"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Sun Dec 19 22:43:19 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Dec 19 22:43:19 2010 -0500"
      },
      "message": "ext4: Use printf extension %pV\n\nUsing %pV reduces the number of printk calls and eliminates any\npossible message interleaving from other printk calls.\n\nIn function __ext4_grp_locked_error also added KERN_CONT to some\nprintks.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "94de56ab2062be59d80e2efb7c0dc60ecf616075",
      "tree": "ec2049ff864708b04fd1d109af0b28cd288884c5",
      "parents": [
        "af0b44a1970fed1cda31d2969c99c46ffc515160"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Sun Dec 19 22:21:02 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Dec 19 22:21:02 2010 -0500"
      },
      "message": "ext4: Use vzalloc in ext4_fill_flex_info()\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a2595b8aa67011419dae26b47e474f46df902989",
      "tree": "d44d79256f92f32b7958a04e89907f7e1a755767",
      "parents": [
        "673c610033a8202c037ecd068c7a235495acda17"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 15 20:30:48 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 15 20:30:48 2010 -0500"
      },
      "message": "ext4: Add second mount options field since the s_mount_opt is full up\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "673c610033a8202c037ecd068c7a235495acda17",
      "tree": "e47ca541bf33f1d43d4ced9b72d6100853896236",
      "parents": [
        "fd8c37eccdda21153298997417144b38b1623196"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 15 20:28:48 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 15 20:28:48 2010 -0500"
      },
      "message": "ext4: Move struct ext4_mount_options from ext4.h to super.c\n\nMove the ext4_mount_options structure definition from ext4.h, since it\nis only used in super.c.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "fd8c37eccdda21153298997417144b38b1623196",
      "tree": "313e022d9d82f890e728dce66ce6e115ea3970b1",
      "parents": [
        "b0c3844d8af6b9f3f18f31e1b0502fbefa2166be"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 15 20:26:48 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 15 20:26:48 2010 -0500"
      },
      "message": "ext4: Simplify the usage of clear_opt() and set_opt() macros\n\nChange clear_opt() and set_opt() to take a superblock pointer instead\nof a pointer to EXT4_SB(sb)-\u003es_mount_opt.  This makes it easier for us\nto support a second mount option field.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1449032be17abb69116dbc393f67ceb8bd034f92",
      "tree": "f62757457241c2fdc14105afc12cb2718f7a2e68",
      "parents": [
        "e8a7e48bb248a1196484d3f8afa53bded2b24e71"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 14 15:27:50 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 14 15:27:50 2010 -0500"
      },
      "message": "ext4: Turn off multiple page-io submission by default\n\nJon Nelson has found a test case which causes postgresql to fail with\nthe error:\n\npsql:t.sql:4: ERROR: invalid page header in block 38269 of relation base/16384/16581\n\nUnder memory pressure, it looks like part of a file can end up getting\nreplaced by zero\u0027s.  Until we can figure out the cause, we\u0027ll roll\nback the change and use block_write_full_page() instead of\next4_bio_write_page().  The new, more efficient writing function can\nbe used via the mount option mblk_io_submit, so we can test and fix\nthe new page I/O code.\n\nTo reproduce the problem, install postgres 8.4 or 9.0, and pin enough\nmemory such that the system just at the end of triggering writeback\nbefore running the following sql script:\n\nbegin;\ncreate temporary table foo as select x as a, ARRAY[x] as b FROM\ngenerate_series(1, 10000000 ) AS x;\ncreate index foo_a_idx on foo (a);\ncreate index foo_b_idx on foo USING GIN (b);\nrollback;\n\nIf the temporary table is created on a hard drive partition which is\nencrypted using dm_crypt, then under memory pressure, approximately\n30-40% of the time, pgsql will issue the above failure.\n\nThis patch should fix this problem, and the problem will come back if\nthe file system is mounted with the mblk_io_submit mount option.\n\nReported-by: Jon Nelson \u003cjnelson@jamponi.net\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "93bb41f4f8b89ac8b4d0a734bc59634cb0a29a89",
      "tree": "16ed3163dbbdb5b46ed0f3a12d059b4c2c467e95",
      "parents": [
        "5a9ae68a349aa076bc8557ee2fcf865574459282"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Fri Nov 19 21:18:35 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Nov 19 21:18:35 2010 -0500"
      },
      "message": "fs: Do not dispatch FITRIM through separate super_operation\n\nThere was concern that FITRIM ioctl is not common enough to be included\nin core vfs ioctl, as Christoph Hellwig pointed out there\u0027s no real point\nin dispatching this out to a separate vector instead of just through\n-\u003eioctl.\n\nSo this commit removes ioctl_fstrim() from vfs ioctl and trim_fs\nfrom super_operation structure.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5a9ae68a349aa076bc8557ee2fcf865574459282",
      "tree": "484c26f74f13a0c5962ac634c90462d98dea8e1a",
      "parents": [
        "0587aa3d11f9769a301b21bff2c3ed8365606b8d"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Fri Nov 19 09:56:44 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Nov 19 09:56:44 2010 -0500"
      },
      "message": "ext4: ext4_fill_super shouldn\u0027t return 0 on corruption\n\nAt the start of ext4_fill_super, ret is set to -EINVAL, and any failure path\nout of that function returns ret.  However, the generic_check_addressable\nclause sets ret \u003d 0 (if it passes), which means that a subsequent failure (e.g.\na group checksum error) returns 0 even though the mount should fail.  This\ncauses vfs_kern_mount in turn to think that the mount succeeded, leading to an\noops.\n\nA simple fix is to avoid using ret for the generic_check_addressable check,\nwhich was last changed in commit 30ca22c70e3ef0a96ff84de69cd7e8561b416cb2.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f4c8cc652d9f70680dd91be60a7a455040d0a282",
      "tree": "15464ab1cfa63b2e7b7c83006aa09e605aa7099a",
      "parents": [
        "08da1193d2c8c7a25d0cef7f85d0b9f1ad7c583a"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Wed Nov 17 21:46:25 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Nov 17 21:46:25 2010 -0500"
      },
      "message": "ext4: missing unlock in ext4_clear_request_list()\n\nIf the the li_request_list was empty then it returned with the lock\nheld.  Instead of adding a \"goto unlock\" I just removed that special\ncase and let it go past the empty list_for_each_safe().\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d4d77629953eabd3c14f6fa5746f6b28babfc55f",
      "tree": "38cce0d4764ecb34a9f7f49332959780e28bb786",
      "parents": [
        "75f1dc0d076d1c1168f2115f1941ea627d38bd5a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:18 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:18 2010 +0100"
      },
      "message": "block: clean up blkdev_get() wrappers and their users\n\nAfter recent blkdev_get() modifications, open_by_devnum() and\nopen_bdev_exclusive() are simple wrappers around blkdev_get().\nReplace them with blkdev_get_by_dev() and blkdev_get_by_path().\n\nblkdev_get_by_dev() is identical to open_by_devnum().\nblkdev_get_by_path() is slightly different in that it doesn\u0027t\nautomatically add %FMODE_EXCL to @mode.\n\nAll users are converted.  Most conversions are mechanical and don\u0027t\nintroduce any behavior difference.  There are several exceptions.\n\n* btrfs now sets FMODE_EXCL in btrfs_device-\u003emode, so there\u0027s no\n  reason to OR it explicitly on blkdev_put().\n\n* gfs2, nilfs2 and the generic mount_bdev() now set FMODE_EXCL in\n  sb-\u003es_mode.\n\n* With the above changes, sb-\u003es_mode now always should contain\n  FMODE_EXCL.  WARN_ON_ONCE() added to kill_block_super() to detect\n  errors.\n\nThe new blkdev_get_*() functions are with proper docbook comments.\nWhile at it, add function description to blkdev_get() too.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: Joern Engel \u003cjoern@lazybastard.org\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: KONISHI Ryusuke \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: reiserfs-devel@vger.kernel.org\nCc: xfs-masters@oss.sgi.com\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e525fd89d380c4a94c0d63913a1dd1a593ed25e7",
      "tree": "d226ef40d3f99e42fcf272ad432585cbd641ebec",
      "parents": [
        "e09b457bdb7e8d23fc54dcef0930ac697d8de895"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "message": "block: make blkdev_get/put() handle exclusive access\n\nOver time, block layer has accumulated a set of APIs dealing with bdev\nopen, close, claim and release.\n\n* blkdev_get/put() are the primary open and close functions.\n\n* bd_claim/release() deal with exclusive open.\n\n* open/close_bdev_exclusive() are combination of open and claim and\n  the other way around, respectively.\n\n* bd_link/unlink_disk_holder() to create and remove holder/slave\n  symlinks.\n\n* open_by_devnum() wraps bdget() + blkdev_get().\n\nThe interface is a bit confusing and the decoupling of open and claim\nmakes it impossible to properly guarantee exclusive access as\nin-kernel open + claim sequence can disturb the existing exclusive\nopen even before the block layer knows the current open if for another\nexclusive access.  Reorganize the interface such that,\n\n* blkdev_get() is extended to include exclusive access management.\n  @holder argument is added and, if is @FMODE_EXCL specified, it will\n  gain exclusive access atomically w.r.t. other exclusive accesses.\n\n* blkdev_put() is similarly extended.  It now takes @mode argument and\n  if @FMODE_EXCL is set, it releases an exclusive access.  Also, when\n  the last exclusive claim is released, the holder/slave symlinks are\n  removed automatically.\n\n* bd_claim/release() and close_bdev_exclusive() are no longer\n  necessary and either made static or removed.\n\n* bd_link_disk_holder() remains the same but bd_unlink_disk_holder()\n  is no longer necessary and removed.\n\n* open_bdev_exclusive() becomes a simple wrapper around lookup_bdev()\n  and blkdev_get().  It also has an unexpected extra bdev_read_only()\n  test which probably should be moved into blkdev_get().\n\n* open_by_devnum() is modified to take @holder argument and pass it to\n  blkdev_get().\n\nMost of bdev open/close operations are unified into blkdev_get/put()\nand most exclusive accesses are tested atomically at the open time (as\nit should).  This cleans up code and removes some, both valid and\ninvalid, but unnecessary all the same, corner cases.\n\nopen_bdev_exclusive() and open_by_devnum() can use further cleanup -\nrename to blkdev_get_by_path() and blkdev_get_by_devt() and drop\nspecial features.  Well, let\u0027s leave them for another day.\n\nMost conversions are straight-forward.  drbd conversion is a bit more\ninvolved as there was some reordering, but the logic should stay the\nsame.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nCc: Peter Osterlund \u003cpetero2@telia.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Andreas Dilger \u003cadilger.kernel@dilger.ca\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: dm-devel@redhat.com\nCc: drbd-dev@lists.linbit.com\nCc: Leo Chen \u003cleochen@broadcom.com\u003e\nCc: Scott Branden \u003csbranden@broadcom.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nCc: Joern Engel \u003cjoern@logfs.org\u003e\nCc: reiserfs-devel@vger.kernel.org\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7ff9c073dd4d7200399076554f7ab9b876f196f6",
      "tree": "6ca4eb4ca9b2f6f7b11e8197bd8a9417d7307b00",
      "parents": [
        "b56ff9d397cecdaad6c98c9d57cc6fea475e1f50"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 08 13:51:33 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 08 13:51:33 2010 -0500"
      },
      "message": "ext4: Add new ext4 inode tracepoints\n\nAdd ext4_evict_inode, ext4_drop_inode, ext4_mark_inode_dirty, and\next4_begin_ordered_truncate()\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "87009d86dc045d228e21242467a67a5f99347553",
      "tree": "2c24052844da18e7a736680b5af9ea97581cebd0",
      "parents": [
        "83668e7141c7a0aa4035bde94344b81f9cf966ab"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Mon Nov 08 13:47:33 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 08 13:47:33 2010 -0500"
      },
      "message": "ext4: do not try to grab the s_umount semaphore in ext4_quota_off\n\nIt\u0027s not needed to sync the filesystem, and it fixes a lock_dep complaint.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\n\n"
    },
    {
      "commit": "f7ad6d2e9201a6e1c9ee6530a291452eb695feb8",
      "tree": "006cdcfd487404fb61986e3030d96cb33866755d",
      "parents": [
        "ce7e010aef63dc6b37a2354f7c9f5f4aedb37978"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 08 13:43:33 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 08 13:43:33 2010 -0500"
      },
      "message": "ext4: handle writeback of inodes which are being freed\n\nThe following BUG can occur when an inode which is getting freed when\nit still has dirty pages outstanding, and it gets deleted (in this\nbecause it was the target of a rename).  In ordered mode, we need to\nmake sure the data pages are written just in case we crash before the\nrename (or unlink) is committed.  If the inode is being freed then\nwhen we try to igrab the inode, we end up tripping the BUG_ON at\nfs/ext4/page-io.c:146.\n\nTo solve this problem, we need to keep track of the number of io\ncallbacks which are pending, and avoid destroying the inode until they\nhave all been completed.  That way we don\u0027t have to bump the inode\ncount to keep the inode from being destroyed; an approach which\ndoesn\u0027t work because the count could have already been dropped down to\nzero before the inode writeback has started (at which point we\u0027re not\nallowed to bump the count back up to 1, since it\u0027s already started\ngetting freed).\n\nThanks to Dave Chinner for suggesting this approach, which is also\nused by XFS.\n\n  kernel BUG at /scratch_space/linux-2.6/fs/ext4/page-io.c:146!\n  Call Trace:\n   [\u003cffffffff811075b1\u003e] ext4_bio_write_page+0x172/0x307\n   [\u003cffffffff811033a7\u003e] mpage_da_submit_io+0x2f9/0x37b\n   [\u003cffffffff811068d7\u003e] mpage_da_map_and_submit+0x2cc/0x2e2\n   [\u003cffffffff811069b3\u003e] mpage_add_bh_to_extent+0xc6/0xd5\n   [\u003cffffffff81106c66\u003e] write_cache_pages_da+0x2a4/0x3ac\n   [\u003cffffffff81107044\u003e] ext4_da_writepages+0x2d6/0x44d\n   [\u003cffffffff81087910\u003e] do_writepages+0x1c/0x25\n   [\u003cffffffff810810a4\u003e] __filemap_fdatawrite_range+0x4b/0x4d\n   [\u003cffffffff810815f5\u003e] filemap_fdatawrite_range+0xe/0x10\n   [\u003cffffffff81122a2e\u003e] jbd2_journal_begin_ordered_truncate+0x7b/0xa2\n   [\u003cffffffff8110615d\u003e] ext4_evict_inode+0x57/0x24c\n   [\u003cffffffff810c14a3\u003e] evict+0x22/0x92\n   [\u003cffffffff810c1a3d\u003e] iput+0x212/0x249\n   [\u003cffffffff810bdf16\u003e] dentry_iput+0xa1/0xb9\n   [\u003cffffffff810bdf6b\u003e] d_kill+0x3d/0x5d\n   [\u003cffffffff810be613\u003e] dput+0x13a/0x147\n   [\u003cffffffff810b990d\u003e] sys_renameat+0x1b5/0x258\n   [\u003cffffffff81145f71\u003e] ? _atomic_dec_and_lock+0x2d/0x4c\n   [\u003cffffffff810b2950\u003e] ? cp_new_stat+0xde/0xea\n   [\u003cffffffff810b29c1\u003e] ? sys_newlstat+0x2d/0x38\n   [\u003cffffffff810b99c6\u003e] sys_rename+0x16/0x18\n   [\u003cffffffff81002a2b\u003e] system_call_fastpath+0x16/0x1b\n\nReported-by: Nick Bowler \u003cnbowler@elliptictech.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nTested-by: Nick Bowler \u003cnbowler@elliptictech.com\u003e\n"
    }
  ],
  "next": "ce7e010aef63dc6b37a2354f7c9f5f4aedb37978"
}
