)]}'
{
  "log": [
    {
      "commit": "a4277bf122e907e4fec509fc0bd9bf5fde30b14e",
      "tree": "b359e8b0f7895acda1d6331332e69ea5b14d5f0d",
      "parents": [
        "6ae85d6db4871d8dbcb5cc0e9056f97f1ca07061",
        "b5451f7b2694b04d9f912f6cf09db1729f291996"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 24 08:37:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 24 08:37:40 2009 -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 potential inode allocation soft lockup in Orlov allocator\n  ext4: Make the extent validity check more paranoid\n  jbd: use SWRITE_SYNC_PLUG when writing synchronous revoke records\n  jbd2: use SWRITE_SYNC_PLUG when writing synchronous revoke records\n  ext4: really print the find_group_flex fallback warning only once\n"
    },
    {
      "commit": "b5451f7b2694b04d9f912f6cf09db1729f291996",
      "tree": "a1221f12730bc54357fc7600de2b5fbcce97cac3",
      "parents": [
        "e84a26ce178345498a7eca0590852bcc36f1092f"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Apr 22 21:00:36 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Apr 22 21:00:36 2009 -0400"
      },
      "message": "ext4: Fix potential inode allocation soft lockup in Orlov allocator\n\nIf the Orlov allocator is having trouble finding an appropriate block\ngroup, the fallback code could loop forever, causing a soft lockup\nwarning in find_group_orlov():\n\nBUG: soft lockup - CPU#0 stuck for 61s! [cp:11728]\n     ...\nPid: 11728, comm: cp Not tainted (2.6.30-rc1-dirty #77) Lenovo          \nEIP: 0060:[\u003cc021650e\u003e] EFLAGS: 00000246 CPU: 0\nEIP is at ext4_get_group_desc+0x54/0x9d\n    ...\nCall Trace:\n [\u003cc0218021\u003e] find_group_orlov+0x2ee/0x334\n [\u003cc0120a5f\u003e] ? sched_clock+0x8/0xb\n [\u003cc02188e3\u003e] ext4_new_inode+0x2cf/0xb1a\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e84a26ce178345498a7eca0590852bcc36f1092f",
      "tree": "dcd2f95c9f73ffb8d2020fe89bb1c30785e0fa78",
      "parents": [
        "38d726d153cfe5efe5fe22d28d36ab382dda3a5c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Apr 22 20:52:25 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Apr 22 20:52:25 2009 -0400"
      },
      "message": "ext4: Make the extent validity check more paranoid\n\nInstead of just checking that the extent block number is greater or\nequal than s_first_data_block, make sure it it is not pointing into\nthe block group descriptors, since that is clearly wrong.  This helps\nprevent filesystem from getting very badly corrupted in case an extent\nblock is corrupted.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "226e7dabf5534722944adefbad01970bd38bb7ae",
      "tree": "569375339adae68e4773406de0640522158ff12e",
      "parents": [
        "4d1f9fdb6177a9bdecf26976337dd39abcc8edbc"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@suse.de",
        "time": "Wed Apr 15 10:36:16 2009 +0530"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 12:10:13 2009 +0200"
      },
      "message": "ext4: Remove code handling bio_alloc failure with __GFP_WAIT\n\nRemove code handling bio_alloc failure with __GFP_WAIT.\nGFP_NOIO implies __GFP_WAIT.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "6b82f3cb2d480b7714eb0ff61aee99c22160389e",
      "tree": "31eea4876e8ceb93f8641082128b4a8ccd944e0b",
      "parents": [
        "b0cbc861a3c05e634520b049b5cc27ad6febb51f"
      ],
      "author": {
        "name": "Chuck Ebbert",
        "email": "cebbert@redhat.com",
        "time": "Tue Apr 14 07:37:40 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Apr 14 07:37:40 2009 -0400"
      },
      "message": "ext4: really print the find_group_flex fallback warning only once\n\nMissing braces caused the warning to print more than once.\n\nSigned-Off-By: Chuck Ebbert \u003ccebbert@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0f2ddca66d70c8ccba7486cf2d79c6b60e777abd",
      "tree": "7d58c31ab30ba2b9e94780008a2083ac87f80db5",
      "parents": [
        "e44543b83bf4ab84dc6bd5b88158c78b1ed1c208"
      ],
      "author": {
        "name": "From: Thiemo Nagel",
        "email": "thiemo.nagel@ph.tum.de",
        "time": "Tue Apr 07 14:07:47 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Apr 07 14:07:47 2009 -0400"
      },
      "message": "ext4: check block device size on mount\n\nSigned-off-by: Thiemo Nagel \u003cthiemo.nagel@ph.tum.de\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e44543b83bf4ab84dc6bd5b88158c78b1ed1c208",
      "tree": "c55b92d612db9175125ca0edc33af3ff6dcc16d3",
      "parents": [
        "f73953c0656f2db9073c585c4df2884a8ecd101e"
      ],
      "author": {
        "name": "Thiemo Nagel",
        "email": "thiemo.nagel@ph.tum.de",
        "time": "Sat Apr 04 23:30:44 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Apr 04 23:30:44 2009 -0400"
      },
      "message": "ext4: Fix off-by-one-error in ext4_valid_extent_idx()\n\nSigned-off-by: Thiemo Nagel \u003cthiemo.nagel@ph.tum.de\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f73953c0656f2db9073c585c4df2884a8ecd101e",
      "tree": "3771470edbc40318c553468265151f4f2e27004e",
      "parents": [
        "e0724bf6e4a1f2e678d2b2aab01cae22e17862f0"
      ],
      "author": {
        "name": "Thiemo Nagel",
        "email": "thiemo.nagel@ph.tum.de",
        "time": "Tue Apr 07 18:46:47 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Apr 07 18:46:47 2009 -0400"
      },
      "message": "ext4: Fix big-endian problem in __ext4_check_blockref()\n\nCommit fe2c8191 introduced a regression on big-endian system, because\nthe checks to make sure block references in non-extent inodes are\nvalid failed to use le32_to_cpu().\n\nReported-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: Thiemo Nagel \u003cthiemo.nagel@ph.tum.de\u003e\nTested-by: Alexander Beregalov \u003ca.beregalov@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "811158b147a503fbdf9773224004ffd32002d1fe",
      "tree": "0a11dcfefe721bfc38ea9f1f4a238822dbae0dda",
      "parents": [
        "4e76c5ccd5ac9bd003467d3bb0f49b18572dd4cd",
        "b26e0ed4936b743b693a4cc1413561fa3e4eaf65"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 15:24:35 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 15:24:35 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (28 commits)\n  trivial: Update my email address\n  trivial: NULL noise: drivers/mtd/tests/mtd_*test.c\n  trivial: NULL noise: drivers/media/dvb/frontends/drx397xD_fw.h\n  trivial: Fix misspelling of \"Celsius\".\n  trivial: remove unused variable \u0027path\u0027 in alloc_file()\n  trivial: fix a pdlfush -\u003e pdflush typo in comment\n  trivial: jbd header comment typo fix for JBD_PARANOID_IOFAIL\n  trivial: wusb: Storage class should be before const qualifier\n  trivial: drivers/char/bsr.c: Storage class should be before const qualifier\n  trivial: h8300: Storage class should be before const qualifier\n  trivial: fix where cgroup documentation is not correctly referred to\n  trivial: Give the right path in Documentation example\n  trivial: MTD: remove EOL from MODULE_DESCRIPTION\n  trivial: Fix typo in bio_split()\u0027s documentation\n  trivial: PWM: fix of #endif comment\n  trivial: fix typos/grammar errors in Kconfig texts\n  trivial: Fix misspelling of firmware\n  trivial: cgroups: documentation typo and spelling corrections\n  trivial: Update contact info for Jochen Hein\n  trivial: fix typo \"resgister\" -\u003e \"register\"\n  ...\n"
    },
    {
      "commit": "8fe74cf053de7ad2124a894996f84fa890a81093",
      "tree": "77dcd8fbf33ce53a3821942233962fb28c6f2848",
      "parents": [
        "c2eb2fa6d2b6fe122d3479ec5b28d978418b2698",
        "ced117c73edc917e96dea7cca98c91383f0792f7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 21:09:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 21:09:10 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  Remove two unneeded exports and make two symbols static in fs/mpage.c\n  Cleanup after commit 585d3bc06f4ca57f975a5a1f698f65a45ea66225\n  Trim includes of fdtable.h\n  Don\u0027t crap into descriptor table in binfmt_som\n  Trim includes in binfmt_elf\n  Don\u0027t mess with descriptor table in load_elf_binary()\n  Get rid of indirect include of fs_struct.h\n  New helper - current_umask()\n  check_unsafe_exec() doesn\u0027t care about signal handlers sharing\n  New locking/refcounting for fs_struct\n  Take fs_struct handling to new file (fs/fs_struct.c)\n  Get rid of bumping fs_struct refcount in pivot_root(2)\n  Kill unsharing fs_struct in __set_personality()\n"
    },
    {
      "commit": "395d73413c5656c6d7706ae91dcb441f9b7e3074",
      "tree": "7fadabe996f70d7918583fa2312d4fad19397fcb",
      "parents": [
        "c226fd659fa7b6a7b038df5ae6856a68514bacde",
        "06705bff9114531a997a7d0c2520bea0f2927410"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 10:57:49 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 10:57:49 2009 -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: (33 commits)\n  ext4: Regularize mount options\n  ext4: fix locking typo in mballoc which could cause soft lockup hangs\n  ext4: fix typo which causes a memory leak on error path\n  jbd2: Update locking coments\n  ext4: Rename pa_linear to pa_type\n  ext4: add checks of block references for non-extent inodes\n  ext4: Check for an valid i_mode when reading the inode from disk\n  ext4: Use WRITE_SYNC for commits which are caused by fsync()\n  ext4: Add auto_da_alloc mount option\n  ext4: Use struct flex_groups to calculate get_orlov_stats()\n  ext4: Use atomic_t\u0027s in struct flex_groups\n  ext4: remove /proc tuning knobs\n  ext4: Add sysfs support\n  ext4: Track lifetime disk writes\n  ext4: Fix discard of inode prealloc space with delayed allocation.\n  ext4: Automatically allocate delay allocated blocks on rename\n  ext4: Automatically allocate delay allocated blocks on close\n  ext4: add EXT4_IOC_ALLOC_DA_BLKS ioctl\n  ext4: Simplify delalloc code by removing mpage_da_writepages()\n  ext4: Save stack space by removing fake buffer heads\n  ...\n"
    },
    {
      "commit": "c2ec175c39f62949438354f603f4aa170846aabb",
      "tree": "f2c9bf1bec2deabe2d3a5092405b027637b6ead3",
      "parents": [
        "c2fdf3a9b2d52842808a8e551b53b55dd9b45030"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Mar 31 15:23:21 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:14 2009 -0700"
      },
      "message": "mm: page_mkwrite change prototype to match fault\n\nChange the page_mkwrite prototype to take a struct vm_fault, and return\nVM_FAULT_xxx flags.  There should be no functional change.\n\nThis makes it possible to return much more detailed error information to\nthe VM (and also can provide more information eg.  virtual_address to the\ndriver, which might be important in some special cases).\n\nThis is required for a subsequent fix.  And will also make it easier to\nmerge page_mkwrite() with fault() in future.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Artem Bityutskiy \u003cdedekind@infradead.org\u003e\nCc: Felix Blyakher \u003cfelixb@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ce3b0f8d5c2203301fc87f3aaaed73e5819e2a48",
      "tree": "ab952affafe18e604f6aaf6b13315b9435588e60",
      "parents": [
        "f1191b50ec11c8e2ca766d6d99eb5bb9d2c084a3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 29 19:08:22 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:26 2009 -0400"
      },
      "message": "New helper - current_umask()\n\ncurrent-\u003efs-\u003eumask is what most of fs_struct users are doing.\nPut that into a helper function.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "692105b8ac5bcd75dc65f6a8f10bdbd0f0f34dcf",
      "tree": "e079cea0948d250e5411befe0c5cca7c97bcf860",
      "parents": [
        "877d03105d04b2c13e241130277fa69c8d2564f0"
      ],
      "author": {
        "name": "Matt LaPlante",
        "email": "kernel1@cyberdogtech.com",
        "time": "Mon Jan 26 11:12:25 2009 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Mar 30 15:22:01 2009 +0200"
      },
      "message": "trivial: fix typos/grammar errors in Kconfig texts\n\nSigned-off-by: Matt LaPlante \u003ckernel1@cyberdogtech.com\u003e\nAcked-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "06705bff9114531a997a7d0c2520bea0f2927410",
      "tree": "f7bef499cd491c8171db45da5b02c168655d4236",
      "parents": [
        "e7c9e3e99adf6c49c5d593a51375916acc039d1e"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 28 10:59:57 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 28 10:59:57 2009 -0400"
      },
      "message": "ext4: Regularize mount options\n\nAdd support for using the mount options \"barrier\" and \"nobarrier\", and\n\"auto_da_alloc\" and \"noauto_da_alloc\", which is more consistent than\n\"barrier\u003d\u003c0|1\u003e\" or \"auto_da_alloc\u003d\u003c0|1\u003e\".  Most other ext3/ext4 mount\noptions use the foo/nofoo naming convention.  We allow the old forms\nof these mount options for backwards compatibility.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e7c9e3e99adf6c49c5d593a51375916acc039d1e",
      "tree": "a0aef22aed6ff8362a9816d8780db4584bc06ffa",
      "parents": [
        "a7b19448ddbdc34b2b8fedc048ba154ca798667b"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Mar 27 19:43:21 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Mar 27 19:43:21 2009 -0400"
      },
      "message": "ext4: fix locking typo in mballoc which could cause soft lockup hangs\n\nSmatch (http://repo.or.cz/w/smatch.git/) complains about the locking in\next4_mb_add_n_trim() from fs/ext4/mballoc.c\n\n  4438          list_for_each_entry_rcu(tmp_pa, \u0026lg-\u003elg_prealloc_list[order],\n  4439                                                  pa_inode_list) {\n  4440                  spin_lock(\u0026tmp_pa-\u003epa_lock);\n  4441                  if (tmp_pa-\u003epa_deleted) {\n  4442                          spin_unlock(\u0026pa-\u003epa_lock);\n  4443                          continue;\n  4444                  }\n\nBrown paper bag time...\n\nReported-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nReviewed-by: Aneesh Kumar K.V \u003caneesh.kumar@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "a7b19448ddbdc34b2b8fedc048ba154ca798667b",
      "tree": "0a2fb9d4fb875b95f9cfd6ee4789da7e2aad09ad",
      "parents": [
        "86db97c87f744364d5889ca8a4134ca2048b8f83"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Fri Mar 27 19:42:54 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Mar 27 19:42:54 2009 -0400"
      },
      "message": "ext4: fix typo which causes a memory leak on error path\n\nThis was found by smatch (http://repo.or.cz/w/smatch.git/)\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "cc0fb9ad7dbc5a149f4957a0dd6d65881d3d385b",
      "tree": "cbcf88bcd2306acba7d08e1c8e6ea87b76d3eb25",
      "parents": [
        "fe2c8191faa29d7a09f4962198f6dfab973ceec4"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Mar 27 17:16:58 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Mar 27 17:16:58 2009 -0400"
      },
      "message": "ext4: Rename pa_linear to pa_type\n\nImpact: code cleanup\n\nThis patch rename pa_linear to pa_type and add MB_INODE_PA\nand MB_GROUP_PA to indicate inode and group prealloc space.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "fe2c8191faa29d7a09f4962198f6dfab973ceec4",
      "tree": "ed1b9cf3997fb6e90bf889f028d27e1d3e5f2b63",
      "parents": [
        "563bdd61fe4dbd6b58cf7eb06f8d8f14479ae1dc"
      ],
      "author": {
        "name": "Thiemo Nagel",
        "email": "thiemo.nagel@ph.tum.de",
        "time": "Tue Mar 31 08:36:10 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Mar 31 08:36:10 2009 -0400"
      },
      "message": "ext4: add checks of block references for non-extent inodes\n\nCheck block references in the inode and indorect blocks for non-extent\ninodes to make sure they are valid, and flag an error if they are\ninvalid.\n\nSigned-off-by: Thiemo Nagel \u003cthiemo.nagel@ph.tum.de\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "563bdd61fe4dbd6b58cf7eb06f8d8f14479ae1dc",
      "tree": "a0b768373b06f5c86757076d7de3502c589c4d5c",
      "parents": [
        "7058548cd50e5bda8db086bb2e5c1d82f746d047"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Mar 26 00:06:19 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Mar 26 00:06:19 2009 -0400"
      },
      "message": "ext4: Check for an valid i_mode when reading the inode from disk\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a269eb18294d35874c53311acc2cd0b5ef477ce5",
      "tree": "4da256ba45385688bd7f1e8b638ce76f884c8313",
      "parents": [
        "81a052273998f94b098945c4c313e05246956eb2"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jan 26 17:04:39 2009 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Mar 26 02:18:36 2009 +0100"
      },
      "message": "ext4: Use lowercase names of quota functions\n\nUse lowercase names of quota functions instead of old uppercase ones.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nCC: linux-ext4@vger.kernel.org\n"
    },
    {
      "commit": "60e58e0f30e723464c2a7d34b71b8675566c572d",
      "tree": "2797ae1bccdad12d53c989a6dccea1c8ffd2bce3",
      "parents": [
        "643d00ccc311664188c8209bf8b596a30e139c3a"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Thu Jan 22 18:13:05 2009 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Mar 26 02:18:34 2009 +0100"
      },
      "message": "ext4: quota reservation for delayed allocation\n\nUses quota reservation/claim/release to handle quota properly for delayed\nallocation in the three steps: 1) quotas are reserved when data being copied\nto cache when block allocation is defered 2) when new blocks are allocated.\nreserved quotas are converted to the real allocated quota, 2) over-booked\nquotas for metadata blocks are released back.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nAcked-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "edf7245362f7b8b8c76c4a6cad3604bf80884848",
      "tree": "e5a78aeac197c945e1ef6c1321b3ec5dd78378e7",
      "parents": [
        "a219ce3748bbc596cec85c44754b3f6b994f1e1d"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jan 12 19:05:26 2009 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Mar 26 02:18:34 2009 +0100"
      },
      "message": "ext4: Remove unnecessary quota functions\n\next4_dquot_initialize() and ext4_dquot_drop() is no longer\nneeded because of modified quota locking.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "d33a1976fbee1ee321d6f014333d8f03a39d526c",
      "tree": "9cc0de162cd0cba81d08ea1d0e505be6b2d54361",
      "parents": [
        "8d03c7a0c550e7ab24cadcef5e66656bfadec8b9"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Mon Mar 16 23:25:40 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Mar 16 23:25:40 2009 -0400"
      },
      "message": "ext4: fix bb_prealloc_list corruption due to wrong group locking\n\nThis is for Red Hat bug 490026: EXT4 panic, list corruption in\next4_mb_new_inode_pa\n\next4_lock_group(sb, group) is supposed to protect this list for\neach group, and a common code flow to remove an album is like\nthis:\n\n    ext4_get_group_no_and_offset(sb, pa-\u003epa_pstart, \u0026grp, NULL);\n    ext4_lock_group(sb, grp);\n    list_del(\u0026pa-\u003epa_group_list);\n    ext4_unlock_group(sb, grp);\n\nso it\u0027s critical that we get the right group number back for\nthis prealloc context, to lock the right group (the one \nassociated with this pa) and prevent concurrent list manipulation.\n\nhowever, ext4_mb_put_pa() passes in (pa-\u003epa_pstart - 1) with a \ncomment, \"-1 is to protect from crossing allocation group\".\n\nThis makes sense for the group_pa, where pa_pstart is advanced\nby the length which has been used (in ext4_mb_release_context()),\nand when the entire length has been used, pa_pstart has been\nadvanced to the first block of the next group.\n\nHowever, for inode_pa, pa_pstart is never advanced; it\u0027s just\nset once to the first block in the group and not moved after\nthat.  So in this case, if we subtract one in ext4_mb_put_pa(),\nwe are actually locking the *previous* group, and opening the\nrace with the other threads which do not subtract off the extra\nblock.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "afd4672dc7610b7feef5190168aa917cc2e417e4",
      "tree": "53a3aa709232b00473c8da70b792b350150956ff",
      "parents": [
        "7d39db14a42cbd719c7515b9da8f85a2eb6a0633"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Mar 16 23:12:23 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Mar 16 23:12:23 2009 -0400"
      },
      "message": "ext4: Add auto_da_alloc mount option\n\nAdd a mount option which allows the user to disable automatic\nallocation of blocks whose allocation by delayed allocation when the\nfile was originally truncated or when the file is renamed over an\nexisting file.  This feature is intended to save users from the\neffects of naive application writers, but it reduces the effectiveness\nof the delayed allocation code.  This mount option disables this\nsafety feature, which may be desirable for prodcutions systems where\nthe risk of unclean shutdowns or unexpected system crashes is low.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8d03c7a0c550e7ab24cadcef5e66656bfadec8b9",
      "tree": "1fce7a08eb712e9b895ca39786e6f5bef1e632f7",
      "parents": [
        "2842c3b5449f31470b61db716f1926b594fb6156"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Sat Mar 14 11:51:46 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Mar 14 11:51:46 2009 -0400"
      },
      "message": "ext4: fix bogus BUG_ONs in in mballoc code\n\nThiemo Nagel reported that:\n\n# dd if\u003d/dev/zero of\u003dimage.ext4 bs\u003d1M count\u003d2\n# mkfs.ext4 -v -F -b 1024 -m 0 -g 512 -G 4 -I 128 -N 1 \\\n  -O large_file,dir_index,flex_bg,extent,sparse_super image.ext4\n# mount -o loop image.ext4 mnt/\n# dd if\u003d/dev/zero of\u003dmnt/file\n\noopsed, with a BUG_ON in ext4_mb_normalize_request because\nsize \u003d\u003d EXT4_BLOCKS_PER_GROUP\n\nIt appears to me (esp. after talking to Andreas) that the BUG_ON\nis bogus; a request of exactly EXT4_BLOCKS_PER_GROUP should\nbe allowed, though larger sizes do indicate a problem.\n\nFix that an another (apparently rare) codepath with a similar check.\n\nReported-by: Thiemo Nagel \u003cthiemo.nagel@ph.tum.de\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2842c3b5449f31470b61db716f1926b594fb6156",
      "tree": "d32d76a498621a00d961273a15a6e70b7f9db78d",
      "parents": [
        "395a87bfefbc400011417e9eaae33169f9f036c0"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Mar 12 12:20:01 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Mar 12 12:20:01 2009 -0400"
      },
      "message": "ext4: Print the find_group_flex() warning only once\n\nThis is a short-term warning, and even printk_ratelimit() can result\nin too much noise in system logs.  So only print it once as a warning.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "395a87bfefbc400011417e9eaae33169f9f036c0",
      "tree": "1f0d0f85f33166c9d6187102573a683c27d3e849",
      "parents": [
        "041b62374c7fedc11a8a1eeda2868612d3d1436c"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Mar 10 18:18:47 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Mar 10 18:18:47 2009 -0400"
      },
      "message": "ext4: fix header check in ext4_ext_search_right() for deep extent trees.\n\nThe ext4_ext_search_right() function is confusing; it uses a\n\"depth\" variable which is 0 at the root and maximum at the leaves, \nbut the on-disk metadata uses a \"depth\" (actually eh_depth) which\nis opposite: maximum at the root, and 0 at the leaves.\n\nThe ext4_ext_check_header() function is given a depth and checks\nthe header agaisnt that depth; it expects the on-disk semantics,\nbut we are giving it the opposite in the while loop in this \nfunction.  We should be giving it the on-disk notion of \"depth\"\nwhich we can get from (p_depth - depth) - and if you look, the last\n(more commonly hit) call to ext4_ext_check_header() does just this.\n\nSending in the wrong depth results in (incorrect) messages\nabout corruption:\n\nEXT4-fs error (device sdb1): ext4_ext_search_right: bad header\nin inode #2621457: unexpected eh_depth - magic f30a, entries 340,\nmax 340(0), depth 1(2)\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12821\n\nReported-by: David Dindorp \u003cddi@dubex.dk\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7d39db14a42cbd719c7515b9da8f85a2eb6a0633",
      "tree": "5c93b9f76c9895183d1e973ed296cd9b7a1d9a0e",
      "parents": [
        "9f24e4208f7ee2748f157368b63287dc903fcf60"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 04 19:31:53 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 04 19:31:53 2009 -0500"
      },
      "message": "ext4: Use struct flex_groups to calculate get_orlov_stats()\n\nInstead of looping over all of the block groups in a flex group\nsumming their summary statistics, start tracking used_dirs in struct\nflex_groups, and use struct flex_groups instead.  This should save a\nbit of CPU for mkdir-heavy workloads.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9f24e4208f7ee2748f157368b63287dc903fcf60",
      "tree": "255989fe69ebfb2b031dc7cf6dbe975df67c711a",
      "parents": [
        "b713a5ec55bf73c833f9883cdd761b20ee61a1ab"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 04 19:09:10 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 04 19:09:10 2009 -0500"
      },
      "message": "ext4: Use atomic_t\u0027s in struct flex_groups\n\nReduce pressure on the sb_bgl_lock family of locks by using atomic_t\u0027s\nto track the number of free blocks and inodes in each flex_group.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n\n"
    },
    {
      "commit": "b713a5ec55bf73c833f9883cdd761b20ee61a1ab",
      "tree": "77bbc689f442cad3ce8ca21d7b2c7cea2738d519",
      "parents": [
        "3197ebdb130473a92760100cbfe0d7e671838f48"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Mar 31 09:11:14 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Mar 31 09:11:14 2009 -0400"
      },
      "message": "ext4: remove /proc tuning knobs\n\nRemove tuning knobs in /proc/fs/ext4/\u003cdev/* since they have been\nreplaced by knobs in sysfs at /sys/fs/ext4/\u003cdev\u003e/*.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "3197ebdb130473a92760100cbfe0d7e671838f48",
      "tree": "7101dc642e91026a65264adb7845ce3561d691fe",
      "parents": [
        "afc32f7ee9febc020c73da61402351d4c90437f3"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Mar 31 09:10:09 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Mar 31 09:10:09 2009 -0400"
      },
      "message": "ext4: Add sysfs support\n\nAdd basic sysfs support so that information about the mounted\nfilesystem and various tuning parameters can be accessed via\n/sys/fs/ext4/\u003cdev\u003e/*.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7ce9d5d1f3c8736511daa413c64985a05b2feee3",
      "tree": "89b30c50d6e09467f43f4f824d04838e9bb33026",
      "parents": [
        "fec6c6fec3e20637bee5d276fb61dd8b49a3f9cc"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Mar 04 18:38:18 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 04 18:38:18 2009 -0500"
      },
      "message": "ext4: fix ext4_free_inode() vs. ext4_claim_inode() race\n\nI was seeing fsck errors on inode bitmaps after a 4 thread\ndbench run on a 4 cpu machine:\n\nInode bitmap differences: -50736 -(50752--50753) etc...\n\nI believe that this is because ext4_free_inode() uses atomic\nbitops, and although ext4_new_inode() *used* to also use atomic \nbitops for synchronization, commit \n393418676a7602e1d7d3f6e560159c65c8cbd50e changed this to use\nthe sb_bgl_lock, so that we could also synchronize against\nread_inode_bitmap and initialization of uninit inode tables.\n\nHowever, that change left ext4_free_inode using atomic bitops,\nwhich I think leaves no synchronization between setting \u0026 \nunsetting bits in the inode table.\n\nThe below patch fixes it for me, although I wonder if we\u0027re \ngetting at all heavy-handed with this spinlock...\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nReviewed-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "afc32f7ee9febc020c73da61402351d4c90437f3",
      "tree": "7b78aaaac87eb704074f6ece996b2c78a69fbe18",
      "parents": [
        "d6014301b5599fba395c42a1e96a7fe86f7d0b2d"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 28 19:39:58 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 28 19:39:58 2009 -0500"
      },
      "message": "ext4: Track lifetime disk writes\n\nAdd a new superblock value which tracks the lifetime amount of writes\nto the filesystem.  This is useful in estimating the amount of wear on\nsolid state drives (SSD\u0027s) caused by writes to the filesystem.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d6014301b5599fba395c42a1e96a7fe86f7d0b2d",
      "tree": "5b3f8c034c69dfbcc0f4e155dc991179a95e170b",
      "parents": [
        "8750c6d5fcbd3342b3d908d157f81d345c5325a7"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Mar 27 22:36:43 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Mar 27 22:36:43 2009 -0400"
      },
      "message": "ext4: Fix discard of inode prealloc space with delayed allocation.\n\nWith delayed allocation we should not/cannot discard inode prealloc\nspace during file close. We would still have dirty pages for which we\nhaven\u0027t allocated blocks yet. With this fix after each get_blocks\nrequest we check whether we have zero reserved blocks and if yes and\nwe don\u0027t have any writers on the file we discard inode prealloc space.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8f64b32eb73fbfe9f38c4123121b63ee409278a7",
      "tree": "1c856ed32d7a282dbde0cea2e8839e2c2de51ba9",
      "parents": [
        "d8ae4601a4b7ea1fa17fa395c3468c0e144d1275"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Thu Feb 26 00:57:35 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Feb 26 00:57:35 2009 -0500"
      },
      "message": "ext4: don\u0027t call jbd2_journal_force_commit_nested without journal\n\nRunning without a journal, I oopsed when I ran out of space,\nbecause we called jbd2_journal_force_commit_nested() from\next4_should_retry_alloc() without a journal.\n\nThis should take care of it, I think.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8b1a8ff8b321a9384304aeea4dbdb9747daf7ee8",
      "tree": "7be11423c5b5a10e085122b5a3e8d004e5fa865a",
      "parents": [
        "ebd3610b110bbb18ea6f9f2aeed1e1068c537227"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 28 00:08:53 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 28 00:08:53 2009 -0500"
      },
      "message": "ext4: Remove duplicate call to ext4_commit_super() in ext4_freeze()\n\nCommit c4be0c1d added error checking to ext4_freeze() when calling\next4_commit_super().  Unfortunately the patch failed to remove the\noriginal call to ext4_commit_super(), with the net result that when\nfreezing the filesystem, the superblock gets written twice, the first\ntime without error checking.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "8750c6d5fcbd3342b3d908d157f81d345c5325a7",
      "tree": "323e83b9f81379c696acc861555143a06a84eb7b",
      "parents": [
        "7d8f9f7d150dded7b68e61ca6403a1f166fb4edf"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 23 23:05:27 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 23 23:05:27 2009 -0500"
      },
      "message": "ext4: Automatically allocate delay allocated blocks on rename\n\nWhen renaming a file such that a link to another inode is overwritten,\nforce any delay allocated blocks that to be allocated so that if the\nfilesystem is mounted with data\u003dordered, the data blocks will be\npushed out to disk along with the journal commit.  Many application\nprograms expect this, so we do this to avoid zero length files if the\nsystem crashes unexpectedly.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7d8f9f7d150dded7b68e61ca6403a1f166fb4edf",
      "tree": "79572041ae1b5737bc8d75037ff86903469430eb",
      "parents": [
        "ccd2506bd43113659aa904d5bea5d1300605e2a6"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Feb 24 08:21:14 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Feb 24 08:21:14 2009 -0500"
      },
      "message": "ext4: Automatically allocate delay allocated blocks on close\n\nWhen closing a file that had been previously truncated, force any\ndelay allocated blocks that to be allocated so that if the filesystem\nis mounted with data\u003dordered, the data blocks will be pushed out to\ndisk along with the journal commit.  Many application programs expect\nthis, so we do this to avoid zero length files if the system crashes\nunexpectedly.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ccd2506bd43113659aa904d5bea5d1300605e2a6",
      "tree": "99a95645b3c2c092427b7c537c5628d502cd9c22",
      "parents": [
        "f63e6005bc63acc0a6bc3bdb8f971dcfbd827185"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Feb 26 01:04:07 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Feb 26 01:04:07 2009 -0500"
      },
      "message": "ext4: add EXT4_IOC_ALLOC_DA_BLKS ioctl\n\nAdd an ioctl which forces all of the delay allocated blocks to be\nallocated.  This also provides a function ext4_alloc_da_blocks() which\nwill be used by the following commits to force files to be fully\nallocated to preserve application-expected ext3 behaviour.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f63e6005bc63acc0a6bc3bdb8f971dcfbd827185",
      "tree": "22f40e4c70fd9d6fecd36926ae1087d59522098d",
      "parents": [
        "8dc207c0e7a259e7122ddfaf56b8bbbc3c92d685"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 23 16:42:39 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 23 16:42:39 2009 -0500"
      },
      "message": "ext4: Simplify delalloc code by removing mpage_da_writepages()\n\nThe mpage_da_writepages() function is only used in one place, so\ninline it to simplify the call stack and make the code easier to\nunderstand.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8dc207c0e7a259e7122ddfaf56b8bbbc3c92d685",
      "tree": "68f3cfcf4d2f55c3e7fd8128b30c80b6d54679b1",
      "parents": [
        "ed5bde0bf8995d7d8c0b5a9c33e624a945f333ef"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 23 06:46:01 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 23 06:46:01 2009 -0500"
      },
      "message": "ext4: Save stack space by removing fake buffer heads\n\nStruct mpage_da_data and mpage_add_bh_to_extent() use a fake struct\nbuffer_head which is 104 bytes on an x86_64 system, but only use 24\nbytes of the structure.  On systems that use a spinlock for atomic_t,\nthe stack savings will be even greater.\n\nIt turns out that using a fake struct buffer_head doesn\u0027t even save\nthat much code, and it makes the code more confusing since it\u0027s not\nused as a \"real\" buffer head.  So just store pass b_size and b_state\nin mpage_add_bh_to_extent(), and store b_size, b_state, and b_block_nr\nin the mpage_da_data structure.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "ed5bde0bf8995d7d8c0b5a9c33e624a945f333ef",
      "tree": "1e4ba09b0e10860c051ab4eb558b0e58f8037866",
      "parents": [
        "722bde6875bfb49a0c84e5601eb82dd7ac02d27c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 23 10:48:07 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 23 10:48:07 2009 -0500"
      },
      "message": "ext4: Simplify delalloc implementation by removing mpd.get_block\n\nThis parameter was always set to ext4_da_get_block_write().\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7a262f7c69163cd4811f2f838faef5c5b18439c9",
      "tree": "1d048ed0fa78d8d768c149cf414bd4325315f184",
      "parents": [
        "56b19868aca856a7d7bf20c3a7a1030e4fd75b2b"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Fri Mar 27 16:39:58 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Mar 27 16:39:58 2009 -0400"
      },
      "message": "ext4: Validate extent details only when read from the disk\n\nMake sure we validate extent details only when read from the disk.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Thiemo Nagel \u003cthiemo.nagel@ph.tum.de\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "56b19868aca856a7d7bf20c3a7a1030e4fd75b2b",
      "tree": "ca8f9765aa6a319bbe2d5c014b0e27a949c4fc5d",
      "parents": [
        "e6f009b0b45220c004672d41a58865e94946104d"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Thu Mar 12 09:51:20 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Mar 12 09:51:20 2009 -0400"
      },
      "message": "ext4: Add checks to validate extent entries.\n\nThis patch adds checks to validate the extent entries along with extent\nheaders, to avoid crashes caused by corrupt filesystems.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e6f009b0b45220c004672d41a58865e94946104d",
      "tree": "99a00ca6486c896b90376238c22a90de3e31cc57",
      "parents": [
        "a4912123b688e057084e6557cef8924f7ae5bbde"
      ],
      "author": {
        "name": "Bryan Donlan",
        "email": "bdonlan@gmail.com",
        "time": "Sun Feb 22 21:20:25 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Feb 22 21:20:25 2009 -0500"
      },
      "message": "ext4: return -EIO not -ESTALE on directory traversal through deleted inode\n\next4_iget() returns -ESTALE if invoked on a deleted inode, in order to\nreport errors to NFS properly.  However, in ext4_lookup(), this\n-ESTALE can be propagated to userspace if the filesystem is corrupted\nsuch that a directory entry references a deleted inode.  This leads to\na misleading error message - \"Stale NFS file handle\" - and confusion\non the part of the admin.\n\nThe bug can be easily reproduced by creating a new filesystem, making\na link to an unused inode using debugfs, then mounting and attempting\nto ls -l said link.\n\nThis patch thus changes ext4_lookup to return -EIO if it receives\n-ESTALE from ext4_iget(), as ext4 does for other filesystem metadata\ncorruption; and also invokes the appropriate ext*_error functions when\nthis case is detected.\n\nSigned-off-by: Bryan Donlan \u003cbdonlan@gmail.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a4912123b688e057084e6557cef8924f7ae5bbde",
      "tree": "34e88705d6617b52caa0f87692b480119a9c9e2e",
      "parents": [
        "2dc6b0d48ca0599837df21b14bb8393d0804af57"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Mar 12 12:18:34 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Mar 12 12:18:34 2009 -0400"
      },
      "message": "ext4: New inode/block allocation algorithms for flex_bg filesystems\n\nThe find_group_flex() inode allocator is now only used if the\nfilesystem is mounted using the \"oldalloc\" mount option.  It is\nreplaced with the original Orlov allocator that has been updated for\nflex_bg filesystems (it should behave the same way if flex_bg is\ndisabled).  The inode allocator now functions by taking into account\neach flex_bg group, instead of each block group, when deciding whether\nor not it\u0027s time to allocate a new directory into a fresh flex_bg.\n\nThe block allocator has also been changed so that the first block\ngroup in each flex_bg is preferred for use for storing directory\nblocks.  This keeps directory blocks close together, which is good for\nspeeding up e2fsck since large directories are more likely to look\nlike this:\n\ndebugfs:  stat /home/tytso/Maildir/cur\nInode: 1844562   Type: directory    Mode:  0700   Flags: 0x81000\nGeneration: 1132745781    Version: 0x00000000:0000ad71\nUser: 15806   Group: 15806   Size: 1060864\nFile ACL: 0    Directory ACL: 0\nLinks: 2   Blockcount: 2072\nFragment:  Address: 0    Number: 0    Size: 0\n ctime: 0x499c0ff4:164961f4 -- Wed Feb 18 08:41:08 2009\n atime: 0x499c0ff4:00000000 -- Wed Feb 18 08:41:08 2009\n mtime: 0x49957f51:00000000 -- Fri Feb 13 09:10:25 2009\ncrtime: 0x499c0f57:00d51440 -- Wed Feb 18 08:38:31 2009\nSize of extra inode fields: 28\nBLOCKS:\n(0):7348651, (1-258):7348654-7348911\nTOTAL: 259\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ebd3610b110bbb18ea6f9f2aeed1e1068c537227",
      "tree": "a7ecd4c6ef1d05619abeefea831e8f73ffadda11",
      "parents": [
        "05bf9e839d9de4e8a094274a0a2fd07beb47eaf1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Sun Feb 22 21:09:59 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Feb 22 21:09:59 2009 -0500"
      },
      "message": "ext4: Fix deadlock in ext4_write_begin() and ext4_da_write_begin()\n\nFunctions ext4_write_begin() and ext4_da_write_begin() call\ngrab_cache_page_write_begin() without AOP_FLAG_NOFS. Thus it\ncan happen that page reclaim is triggered in that function\nand it recurses back into the filesystem (or some other filesystem).\nBut this can lead to various problems as a transaction is already\nstarted at that point. Add the necessary flag.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d11688\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "05bf9e839d9de4e8a094274a0a2fd07beb47eaf1",
      "tree": "36dba549ded1f7c7b37bd854fb20d55bff89787d",
      "parents": [
        "20f4d6c3a2a23c5d7d9cc7f42fbb943ca7a03d1f"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 21 12:13:24 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 21 12:13:24 2009 -0500"
      },
      "message": "ext4: Add fallback for find_group_flex\n\nThis is a workaround for find_group_flex() which badly needs to be\nreplaced.  One of its problems (besides ignoring the Orlov algorithm)\nis that it is a bit hyperactive about returning failure under\nsuspicious circumstances.  This can lead to spurious ENOSPC failures\neven when there are inodes still available.\n\nWork around this for now by retrying the search using\nfind_group_other() if find_group_flex() returns -1.  If\nfind_group_other() succeeds when find_group_flex() has failed, log a\nwarning message.\n\nA better block/inode allocator that will fix this problem for real has\nbeen queued up for the next merge window.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "090542641de833c6f756895fc2f139f046e298f9",
      "tree": "8a3939e4e72e5107282a5343d2cb50c29e5077a6",
      "parents": [
        "2acf2c261b823d9d9ed954f348b97620297a36b5"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Sun Feb 15 20:02:19 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Feb 15 20:02:19 2009 -0500"
      },
      "message": "ext4: Fix NULL dereference in ext4_ext_migrate()\u0027s error handling\n\nThis was found through a code checker (http://repo.or.cz/w/smatch.git/). \nIt looks like you might be able to trigger the error by trying to migrate \na readonly file system.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2dc6b0d48ca0599837df21b14bb8393d0804af57",
      "tree": "b70dd83908f9bcb3cb953e5b7df1837268968c2e",
      "parents": [
        "8fa43a81b97853fc69417bb6054182e78f95cbeb"
      ],
      "author": {
        "name": "Duane Griffin",
        "email": "duaneg@dghda.com",
        "time": "Sun Feb 15 18:09:20 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Feb 15 18:09:20 2009 -0500"
      },
      "message": "ext4: tighten restrictions on inode flags\n\nAt the moment there are few restrictions on which flags may be set on\nwhich inodes.  Specifically DIRSYNC may only be set on directories and\nIMMUTABLE and APPEND may not be set on links.  Tighten that to disallow\nTOPDIR being set on non-directories and only NODUMP and NOATIME to be set\non non-regular file, non-directories.\n\nIntroduces a flags masking function which masks flags based on mode and\nuse it during inode creation and when flags are set via the ioctl to\nfacilitate future consistency.\n\nSigned-off-by: Duane Griffin \u003cduaneg@dghda.com\u003e\nAcked-by: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8fa43a81b97853fc69417bb6054182e78f95cbeb",
      "tree": "0bcd9550d9f08d825203f8544e6efb75e37bc4eb",
      "parents": [
        "705895b61133ef43d106fe6a6bbdb2eec923867e"
      ],
      "author": {
        "name": "Duane Griffin",
        "email": "duaneg@dghda.com",
        "time": "Sun Feb 15 18:57:26 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Feb 15 18:57:26 2009 -0500"
      },
      "message": "ext4: don\u0027t inherit inappropriate inode flags from parent\n\nAt present INDEX and EXTENTS are the only flags that new ext4 inodes do\nNOT inherit from their parent.  In addition prevent the flags DIRTY,\nECOMPR, IMAGIC, TOPDIR, HUGE_FILE and EXT_MIGRATE from being inherited. \nList inheritable flags explicitly to prevent future flags from\naccidentally being inherited.\n\nThis fixes the TOPDIR flag inheritance bug reported at\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d9866.\n\nSigned-off-by: Duane Griffin \u003cduaneg@dghda.com\u003e\nAcked-by: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "705895b61133ef43d106fe6a6bbdb2eec923867e",
      "tree": "ea05232098c0425fda052240a8bb0e6218bb5e82",
      "parents": [
        "3d0518f4758eca4339e75e5b9dbb7e06a5ce08b4"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sun Feb 15 18:07:52 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Feb 15 18:07:52 2009 -0500"
      },
      "message": "ext4: allocate -\u003es_blockgroup_lock separately\n\nAs spotted by kmemtrace, struct ext4_sb_info is 17664 bytes on 64-bit\nwhich makes it a very bad fit for SLAB allocators.  The culprit of the\nwasted memory is -\u003es_blockgroup_lock which can be as big as 16 KB when\nNR_CPUS \u003e\u003d 32.\n\nTo fix that, allocate -\u003es_blockgroup_lock, which fits nicely in a order 2\npage in the worst case, separately.  This shinks down struct ext4_sb_info\nenough to fit a 2 KB slab cache so now we allocate 16 KB + 2 KB instead of\n32 KB saving 14 KB of memory.\n\nAcked-by: Andreas Dilger \u003cadilger@sun.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "3d0518f4758eca4339e75e5b9dbb7e06a5ce08b4",
      "tree": "30a45a1c82d830646a69591c470680573e14de07",
      "parents": [
        "8bad4597c2d71365adfa846ea1ca6cf99161a455"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yjwei@cn.fujitsu.com",
        "time": "Sat Feb 14 23:01:36 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 14 23:01:36 2009 -0500"
      },
      "message": "ext4: New rec_len encoding for very large blocksizes\n\nThe rec_len field in the directory entry is 16 bits, so to encode\nblocksizes larger than 64k becomes problematic.  This patch allows us\nto supprot block sizes up to 256k, by using the low 2 bits to extend\nthe range of rec_len to 2**18-1 (since valid rec_len sizes must be a\nmultiple of 4).  We use the convention that a rec_len of 0 or 65535\nmeans the filesystem block size, for compatibility with older kernels.\n\nIt\u0027s unlikely we\u0027ll see VM pages of up to 256k, but at some point we\nmight find that the Linux VM has been enhanced to support filesystem\nblock sizes \u003e than the VM page size, at which point it might be useful\nfor some applications to allow very large filesystem block sizes.\n\nSigned-off-by: Wei Yongjun \u003cyjwei@cn.fujitsu.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8bad4597c2d71365adfa846ea1ca6cf99161a455",
      "tree": "8143f59887776dd77f6e4aa0ed886b143db512ca",
      "parents": [
        "e187c6588d6ef3169db53c389b3de9dfde3b16cc"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 14 21:46:54 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 14 21:46:54 2009 -0500"
      },
      "message": "ext4: Use unsigned int for blocksize in dx_make_map() and dx_pack_dirents()\n\nSigned-off-by: Wei Yongjun \u003cyjwei@cn.fujitsu.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2acf2c261b823d9d9ed954f348b97620297a36b5",
      "tree": "01bcc80ee26a9cc25df9b9a215081943f3fcbd6c",
      "parents": [
        "d794bf8e0936dce45104565cd48c571061f4c1e3"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sat Feb 14 10:42:58 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 14 10:42:58 2009 -0500"
      },
      "message": "ext4: Implement range_cyclic in ext4_da_writepages instead of write_cache_pages\n\nWith delayed allocation we lock the page in write_cache_pages() and\ntry to build an in memory extent of contiguous blocks.  This is needed\nso that we can get large contiguous blocks request.  If range_cyclic\nmode is enabled, write_cache_pages() will loop back to the 0 index if\nno I/O has been done yet, and try to start writing from the beginning\nof the range.  That causes an attempt to take the page lock of lower\nindex page while holding the page lock of higher index page, which can\ncause a dead lock with another writeback thread.\n\nThe solution is to implement the range_cyclic behavior in\next4_da_writepages() instead.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12579\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d794bf8e0936dce45104565cd48c571061f4c1e3",
      "tree": "ad23776b739eb551b520865e837a106a7b628819",
      "parents": [
        "ba4439165f0f0d25b2fe065cf0c1ff8130b802eb"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sat Feb 14 10:31:16 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Feb 14 10:31:16 2009 -0500"
      },
      "message": "ext4: Initialize preallocation list_head\u0027s properly\n\nWhen creating a new ext4_prealloc_space structure, we have to\ninitialize its list_head pointers before we add them to any prealloc\nlists.  Otherwise, with list debug enabled, we will get list\ncorruption warnings.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ba4439165f0f0d25b2fe065cf0c1ff8130b802eb",
      "tree": "242f9aa5cc4fe0ca7d3062aa0a7ec713a4346bb8",
      "parents": [
        "7be2baaa0322c59ba888aa5260a8c130666acd41"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Tue Feb 10 11:14:34 2009 -0500"
      },
      "committer": {
        "name": "Theodore Tso",
        "email": "tytso@mit.edu",
        "time": "Tue Feb 10 11:14:34 2009 -0500"
      },
      "message": "ext4: Fix lockdep warning\n\nWe should not call ext4_mb_add_n_trim while holding alloc_semp.\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\n    [ INFO: possible recursive locking detected ]\n    2.6.29-rc4-git1-dirty #124\n    ---------------------------------------------\n    ffsb/3116 is trying to acquire lock:\n     (\u0026meta_group_info[i]-\u003ealloc_sem){----}, at: [\u003cffffffff8035a6e8\u003e]\n     ext4_mb_load_buddy+0xd2/0x343\n\n    but task is already holding lock:\n     (\u0026meta_group_info[i]-\u003ealloc_sem){----}, at: [\u003cffffffff8035a6e8\u003e]\n     ext4_mb_load_buddy+0xd2/0x343\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12672\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7be2baaa0322c59ba888aa5260a8c130666acd41",
      "tree": "a1543a38923d60092e06741ab3dee9ce9af32abc",
      "parents": [
        "7f5aa215088b817add9c71914b83650bdd49f8a9"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yjwei@cn.fujitsu.com",
        "time": "Tue Feb 10 09:53:42 2009 -0500"
      },
      "committer": {
        "name": "Theodore Tso",
        "email": "tytso@mit.edu",
        "time": "Tue Feb 10 09:53:42 2009 -0500"
      },
      "message": "ext4: Fix to read empty directory blocks correctly in 64k\n\nThe rec_len field in the directory entry is 16 bits, so there was a\nproblem representing rec_len for filesystems with a 64k block size in\nthe case where the directory entry takes the entire 64k block.\nUnfortunately, there were two schemes that were proposed; one where\nall zeros meant 65536 and one where all ones (65535) meant 65536.\nE2fsprogs used 0, whereas the kernel used 65535.  Oops.  Fortunately\nthis case happens extremely rarely, with the most common case being\nthe lost+found directory, created by mke2fs.\n\nSo we will be liberal in what we accept, and accept both encodings,\nbut we will continue to encode 65536 as 65535.  This will require a\nchange in e2fsprogs, but with fortunately ext4 filesystems normally\nhave the dir_index feature enabled, which precludes having a\ncompletely empty directory block.\n\nSigned-off-by: Wei Yongjun \u003cyjwei@cn.fujitsu.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7f5aa215088b817add9c71914b83650bdd49f8a9",
      "tree": "9b811d1f0b41a2738fc68654ae605bf5d8cf2a72",
      "parents": [
        "9eddacf9e9c03578ef2c07c9534423e823d677f8"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Feb 10 11:15:34 2009 -0500"
      },
      "committer": {
        "name": "Theodore Tso",
        "email": "tytso@mit.edu",
        "time": "Tue Feb 10 11:15:34 2009 -0500"
      },
      "message": "jbd2: Avoid possible NULL dereference in jbd2_journal_begin_ordered_truncate()\n\nIf we race with commit code setting i_transaction to NULL, we could\npossibly dereference it.  Proper locking requires the journal pointer\n(to access journal-\u003ej_list_lock), which we don\u0027t have.  So we have to\nchange the prototype of the function so that filesystem passes us the\njournal pointer.  Also add a more detailed comment about why the\nfunction jbd2_journal_begin_ordered_truncate() does what it does and\nhow it should be used.\n\nThanks to Dan Carpenter \u003cerror27@gmail.com\u003e for pointing to the\nsuspitious code.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCC: linux-ext4@vger.kernel.org\nCC: ocfs2-devel@oss.oracle.com\nCC: mfasheh@suse.de\nCC: Dan Carpenter \u003cerror27@gmail.com\u003e\n"
    },
    {
      "commit": "9eddacf9e9c03578ef2c07c9534423e823d677f8",
      "tree": "6b317bb2e531ba56c9bc7ece8c41ec039d12d309",
      "parents": [
        "c88ccea3143975294f5a52097546bcbb75975f52"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Feb 10 06:46:05 2009 -0500"
      },
      "committer": {
        "name": "Theodore Tso",
        "email": "tytso@mit.edu",
        "time": "Tue Feb 10 06:46:05 2009 -0500"
      },
      "message": "Revert \"ext4: wait on all pending commits in ext4_sync_fs()\"\n\nThis undoes commit 14ce0cb411c88681ab8f3a4c9caa7f42e97a3184.\n\nSince jbd2_journal_start_commit() is now fixed to return 1 when we\nstarted a transaction commit, there\u0027s some transaction waiting to be\ncommitted or there\u0027s a transaction already committing, we don\u0027t\nneed to call ext4_force_commit() in ext4_sync_fs(). Furthermore\next4_force_commit() can unnecessarily create sync transaction which is\nexpensive so it\u0027s worthwhile to remove it when we can.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12224\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Eric Sandeen \u003csandeen@redhat.com\u003e\nCc: linux-ext4@vger.kernel.org\n"
    },
    {
      "commit": "e187c6588d6ef3169db53c389b3de9dfde3b16cc",
      "tree": "5ac50e38eecb58d8de571af0053331c31eb0a5e2",
      "parents": [
        "074ca44283bf031678e67af7d82668bb03c55a55"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Feb 06 16:23:37 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Feb 06 16:23:37 2009 -0500"
      },
      "message": "ext4: remove call to ext4_group_desc() in ext4_group_used_meta_blocks()\n\nThe static function ext4_group_used_meta_blocks() only has one caller,\nwho already has access to the block group\u0027s group descriptor.  So it\u0027s\nbetter to have ext4_init_block_bitmap() pass the group descriptor to\next4_group_used_meta_blocks(), so it doesn\u0027t need to call\next4_group_desc().  Previously this function did not check if\next4_group_desc() returned NULL due to an error, potentially causing a\nkernel OOPS report.  This avoids the issue entirely.\n\nSigned-off-by: Thadeu Lima de Souza Cascardo \u003ccascardo@holoscopio.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n\n"
    },
    {
      "commit": "074ca44283bf031678e67af7d82668bb03c55a55",
      "tree": "d547808ec88f16e2a20de024f26f02be86e8119f",
      "parents": [
        "0d34fb8e93ceba7b6dad0062dbb4a0813bacd75b"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@gmail.com",
        "time": "Fri Feb 06 16:23:37 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Feb 06 16:23:37 2009 -0500"
      },
      "message": "ext4: Remove stale block allocator references from ext4.h\n\nRemove some leftovers from when the old block allocator was removed\n(c2ea3fde).  ext4_sb_info is now a bit lighter.  Also remove a dangling\nread_block_bitmap() prototype.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b9ec63f78b425c0e16cc95605b5d4ff2dc228b97",
      "tree": "702f3b10c7462a94fb130133257a063a289d495f",
      "parents": [
        "9fd9784c91db79e953ea3fe3741f885bdc390a72"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jan 30 00:00:24 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jan 30 00:00:24 2009 -0500"
      },
      "message": "ext4: Remove bogus BUG() check in ext4_bmap()\n\nThe code to support journal-less ext4 operation added a BUG to\next4_bmap() which fired if there was no journal and the\nEXT4_STATE_JDATA bit was set in the i_state field.  This caused\nrunning the filefrag program (which uses the FIMBAP ioctl) to trigger\na BUG().\n\nThe EXT4_STATE_JDATA bit is only used for ext4_bmap(), and it\u0027s\nharmless for the bit to be set.  We could add a check in\n__ext4_journalled_writepage() and ext4_journalled_write_end() to only\nset the EXT4_STATE_JDATA bit if the journal is present, but that adds\nan extra test and jump instruction.  It\u0027s easier to simply remove the\nBUG check.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12568\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n\n"
    },
    {
      "commit": "9fd9784c91db79e953ea3fe3741f885bdc390a72",
      "tree": "b92c9be3218c6559aed0ff9dc4d61c33a1130093",
      "parents": [
        "fdff73f094e7220602cc3f8959c7230517976412"
      ],
      "author": {
        "name": "Thadeu Lima de Souza Cascardo",
        "email": "cascardo@holoscopio.com",
        "time": "Mon Jan 26 19:26:26 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 26 19:26:26 2009 -0500"
      },
      "message": "ext4: Fix building with EXT4FS_DEBUG\n\nWhen bg_free_blocks_count was renamed to bg_free_blocks_count_lo in\n560671a0, its uses under EXT4FS_DEBUG were not changed to the helper\next4_free_blks_count.\n\nAnother commit, 498e5f24, also did not change everything needed under\nEXT4FS_DEBUG, thus making it spill some warnings related to printing\nformat.\n\nThis commit fixes both issues and makes ext4 build again when\nEXT4FS_DEBUG is enabled.\n\nSigned-off-by: Thadeu Lima de Souza Cascardo \u003ccascardo@holoscopio.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "fdff73f094e7220602cc3f8959c7230517976412",
      "tree": "b58a1b26cdca223d588e6decee8198b6c3fe954e",
      "parents": [
        "e7f07968c16bdd9480001c0a9de013ba56889cf9"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 26 19:06:41 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 26 19:06:41 2009 -0500"
      },
      "message": "ext4: Initialize the new group descriptor when resizing the filesystem\n\nMake sure all of the fields of the group descriptor are properly\ninitialized.  Previously, we allowed bg_flags field to be contain\nrandom garbage, which could trigger non-deterministic behavior,\nincluding a kernel OOPS.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12433\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "e7f07968c16bdd9480001c0a9de013ba56889cf9",
      "tree": "89aaa3c147d8f6abd10711a030aa0a57b630176d",
      "parents": [
        "08ec8c3878cea0bf91f2ba3c0badf44b383752d0"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 20 09:50:19 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 20 09:50:19 2009 -0500"
      },
      "message": "ext4: Fix ext4_free_blocks() w/o a journal when files have indirect blocks\n\nWhen trying to unlink a file with indirect blocks on a filesystem\nwithout a journal, the \"circular indirect block\" sanity test was\ngetting falsely triggered.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e6b8bc09ba2075cd91fbffefcd2778b1a00bd76f",
      "tree": "07a439d21576794c5d39a06a86b09e690e55f2f2",
      "parents": [
        "06a279d636734da32bb62dd2f7b0ade666f65d7c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jan 16 11:13:40 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jan 16 11:13:40 2009 -0500"
      },
      "message": "ext4: Add sanity check to make_indexed_dir\n\nMake sure the rec_len field in the \u0027..\u0027 entry is sane, lest we overrun\nthe directory block and cause a kernel oops on a purposefully\ncorrupted filesystem.\n\nThanks to Sami Liedes for reporting this bug.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12430\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "06a279d636734da32bb62dd2f7b0ade666f65d7c",
      "tree": "e3fb1a899ea7a9d527ff0d8edf3ca23778321728",
      "parents": [
        "c225aa57ff4ffe715df4692676b77c815a337236"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jan 17 18:41:37 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jan 17 18:41:37 2009 -0500"
      },
      "message": "ext4: only use i_size_high for regular files\n\nDirectories are not allowed to be bigger than 2GB, so don\u0027t use\ni_size_high for anything other than regular files.  E2fsck should\ncomplain about these inodes, but the simplest thing to do for the\nkernel is to only use i_size_high for regular files.\n\nThis prevents an intentially corrupted filesystem from causing the\nkernel to burn a huge amount of CPU and issuing error messages such\nas:\n\nEXT4-fs warning (device loop0): ext4_block_to_path: block 135090028 \u003e max\n\nThanks to David Maciejak from Fortinet\u0027s FortiGuard Global Security\nResearch Team for reporting this issue.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12375\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "c4be0c1dc4cdc37b175579be1460f15ac6495e9a",
      "tree": "716ea88318211ed27cadcebda0fd85c1f8246edb",
      "parents": [
        "69347a236b22c3962ea812511495e502dedfd50c"
      ],
      "author": {
        "name": "Takashi Sato",
        "email": "t-sato@yk.jp.nec.com",
        "time": "Fri Jan 09 16:40:58 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 09 16:54:42 2009 -0800"
      },
      "message": "filesystem freeze: add error handling of write_super_lockfs/unlockfs\n\nCurrently, ext3 in mainline Linux doesn\u0027t have the freeze feature which\nsuspends write requests.  So, we cannot take a backup which keeps the\nfilesystem\u0027s consistency with the storage device\u0027s features (snapshot and\nreplication) while it is mounted.\n\nIn many case, a commercial filesystem (e.g.  VxFS) has the freeze feature\nand it would be used to get the consistent backup.\n\nIf Linux\u0027s standard filesystem ext3 has the freeze feature, we can do it\nwithout a commercial filesystem.\n\nSo I have implemented the ioctls of the freeze feature.\nI think we can take the consistent backup with the following steps.\n1. Freeze the filesystem with the freeze ioctl.\n2. Separate the replication volume or create the snapshot\n   with the storage device\u0027s feature.\n3. Unfreeze the filesystem with the unfreeze ioctl.\n4. Take the backup from the separated replication volume\n   or the snapshot.\n\nThis patch:\n\nVFS:\nChanged the type of write_super_lockfs and unlockfs from \"void\"\nto \"int\" so that they can return an error.\nRename write_super_lockfs and unlockfs of the super block operation\nfreeze_fs and unfreeze_fs to avoid a confusion.\n\next3, ext4, xfs, gfs2, jfs:\nChanged the type of write_super_lockfs and unlockfs from \"void\"\nto \"int\" so that write_super_lockfs returns an error if needed,\nand unlockfs always returns 0.\n\nreiserfs:\nChanged the type of write_super_lockfs and unlockfs from \"void\"\nto \"int\" so that they always return 0 (success) to keep a current behavior.\n\nSigned-off-by: Takashi Sato \u003ct-sato@yk.jp.nec.com\u003e\nSigned-off-by: Masayuki Hamaguchi \u003cm-hamaguchi@ys.jp.nec.com\u003e\nCc: \u003cxfs-masters@oss.sgi.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2150edc6c5cf00f7adb54538b9ea2a3e9cedca3f",
      "tree": "f72a0d85e66f500b4cead348a231e3d3b9f357bc",
      "parents": [
        "cd764695b67386a81964f68e9c66efd9f13f4d29",
        "4b905671d2ea09fd48fed72c581df17e40823f39"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 17:14:59 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 17:14:59 2009 -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: (57 commits)\n  jbd2: Fix oops in jbd2_journal_init_inode() on corrupted fs\n  ext4: Remove \"extents\" mount option\n  block: Add Kconfig help which notes that ext4 needs CONFIG_LBD\n  ext4: Make printk\u0027s consistently prefixed with \"EXT4-fs: \"\n  ext4: Add sanity checks for the superblock before mounting the filesystem\n  ext4: Add mount option to set kjournald\u0027s I/O priority\n  jbd2: Submit writes to the journal using WRITE_SYNC\n  jbd2: Add pid and journal device name to the \"kjournald2 starting\" message\n  ext4: Add markers for better debuggability\n  ext4: Remove code to create the journal inode\n  ext4: provide function to release metadata pages under memory pressure\n  ext3: provide function to release metadata pages under memory pressure\n  add releasepage hooks to block devices which can be used by file systems\n  ext4: Fix s_dirty_blocks_counter if block allocation failed with nodelalloc\n  ext4: Init the complete page while building buddy cache\n  ext4: Don\u0027t allow new groups to be added during block allocation\n  ext4: mark the blocks/inode bitmap beyond end of group as used\n  ext4: Use new buffer_head flag to check uninit group bitmaps initialization\n  ext4: Fix the race between read_inode_bitmap() and ext4_new_inode()\n  ext4: code cleanup\n  ...\n"
    },
    {
      "commit": "73ac36ea14fd18ea3dc057e41b16ff31a3c0bd5a",
      "tree": "7f187cade83d9ca9bd180273c25e1216a1dff506",
      "parents": [
        "da2bdf9a6ff40b10d77620d0d76b02a738c103cb"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coyli@suse.de",
        "time": "Wed Jan 07 18:09:16 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:15 2009 -0800"
      },
      "message": "fix similar typos to successfull\n\nWhen I review ocfs2 code, find there are 2 typos to \"successfull\".  After\ndoing grep \"successfull \" in kernel tree, 22 typos found totally -- great\nminds always think alike :)\n\nThis patch fixes all the similar typos. Thanks for Randy\u0027s ack and comments.\n\nSigned-off-by: Coly Li \u003ccoyli@suse.de\u003e\nAcked-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nAcked-by: Roland Dreier \u003crolandd@cisco.com\u003e\nCc: Jeremy Kerr \u003cjk@ozlabs.org\u003e\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Vlad Yasevich \u003cvladislav.yasevich@hp.com\u003e\nCc: Sridhar Samudrala \u003csri@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "97e133b4543c5c677e768a8538d6d704c4218ff2",
      "tree": "3473e5e7e634cab8cfb2c3b59c1bfe99182d7b70",
      "parents": [
        "be857df1dd8d8e1491e60d999caf3b8446ccd475"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Jan 07 18:09:13 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:15 2009 -0800"
      },
      "message": "generic swap(): ext4: remove local swap() macro\n\nUse the new generic implementation.\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "179f7ebff6be45738c6e2fa68c8d2cc5c2c6308e",
      "tree": "3d48b5f825cfa29f5b39656503c5157872454e9f",
      "parents": [
        "e3d5a27d5862b6425d0879272e24abecf7245105"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue Jan 06 14:41:04 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:13 2009 -0800"
      },
      "message": "percpu_counter: FBC_BATCH should be a variable\n\nFor NR_CPUS \u003e\u003d 16 values, FBC_BATCH is 2*NR_CPUS\n\nConsidering more and more distros are using high NR_CPUS values, it makes\nsense to use a more sensible value for FBC_BATCH, and get rid of NR_CPUS.\n\nA sensible value is 2*num_online_cpus(), with a minimum value of 32 (This\nminimum value helps branch prediction in __percpu_counter_add())\n\nWe already have a hotcpu notifier, so we can adjust FBC_BATCH dynamically.\n\nWe rename FBC_BATCH to percpu_counter_batch since its not a constant\nanymore.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "83982b6f47201c4c7767210d24d7d8c99567a0b3",
      "tree": "f1c19b1c6b5a34dd0c5de7519b78414b7a9267ee",
      "parents": [
        "4d783b093cd4f3e2738527365979cbd1c5101065"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 06 14:53:16 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 06 14:53:16 2009 -0500"
      },
      "message": "ext4: Remove \"extents\" mount option\n\nThis mount option is largely superfluous, and in fact the way it was\nimplemented was buggy; if a filesystem which did not have the extents\nfeature flag was mounted -o extents, the filesystem would attempt to\ncreate and use extents-based file even though the extents feature flag\nwas not eabled.  The simplest thing to do is to nuke the mount option\nentirely.  It\u0027s not all that useful to force the non-creation of new\nextent-based files if the filesystem can support it.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "abda14189251563a50f56da5ea2e37e904ac4cba",
      "tree": "4c6e3a00f247cad1c41896f749c2c01cebff579f",
      "parents": [
        "4ec110281379826c5cf6ed14735e47027c3c5765"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 06 00:20:32 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 06 00:20:32 2009 -0500"
      },
      "message": "ext4: Make printk\u0027s consistently prefixed with \"EXT4-fs: \"\n\nPreviously, some were \"ext4: \", and some were \"EXT4: \"; change them to\nbe consistent with most ext4 printk\u0027s, which is to use \"EXT4-fs: \".\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "4ec110281379826c5cf6ed14735e47027c3c5765",
      "tree": "593bcbafe3541264e4effe5310546617de0a76ce",
      "parents": [
        "b3881f74b31b7d47d0f1c4d89ac3e7f0b9c05e3e"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 06 14:53:26 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 06 14:53:26 2009 -0500"
      },
      "message": "ext4: Add sanity checks for the superblock before mounting the filesystem\n\nThis avoids insane superblock configurations that could lead to kernel\noops due to null pointer derefences.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12371\n\nThanks to David Maciejak at Fortinet\u0027s FortiGuard Global Security\nResearch Team who discovered this bug independently (but at\napproximately the same time) as Thiemo Nagel, who submitted the patch.\n\nSigned-off-by: Thiemo Nagel \u003cthiemo.nagel@ph.tum.de\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "b3881f74b31b7d47d0f1c4d89ac3e7f0b9c05e3e",
      "tree": "131190b7ec627fd2ef2ecc818a7b9c17b83ccd63",
      "parents": [
        "40a1984d22294ab202f616e432bb8d3481897675"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 22:46:26 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 22:46:26 2009 -0500"
      },
      "message": "ext4: Add mount option to set kjournald\u0027s I/O priority\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a5b5ee320185adc091a3a31630d278806b19d8f0",
      "tree": "91754a6c5645a9d3dd0f9bee828550f704939bfc",
      "parents": [
        "157091a2c3cdc71422cbc71eace205cf1b9f2200"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Nov 25 15:31:35 2008 +0100"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:26 2009 -0800"
      },
      "message": "ext4: Add default allocation routines for quota structures\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "17bd13b31ce4fe7f789d8848e8cbc8cb42b10544",
      "tree": "ced03fa069a1493421b6c0b0c11e5a163b5dbed6",
      "parents": [
        "ee0d5ffe0da2aa992004447113e28622621a983f"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Aug 20 18:14:35 2008 +0200"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:36:56 2009 -0800"
      },
      "message": "ext4: Use sb_any_quota_loaded() instead of sb_any_quota_enabled()\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "54566b2c1594c2326a645a3551f9d989f7ba3c5e",
      "tree": "b373f3283fe5e197d0df29cd6b645c35adf1076c",
      "parents": [
        "e687d691cb3790d25e31c74f5941fd7c565e9df5"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sun Jan 04 12:00:53 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 04 13:33:20 2009 -0800"
      },
      "message": "fs: symlink write_begin allocation context fix\n\nWith the write_begin/write_end aops, page_symlink was broken because it\ncould no longer pass a GFP_NOFS type mask into the point where the\nallocations happened.  They are done in write_begin, which would always\nassume that the filesystem can be entered from reclaim.  This bug could\ncause filesystem deadlocks.\n\nThe funny thing with having a gfp_t mask there is that it doesn\u0027t really\nallow the caller to arbitrarily tinker with the context in which it can be\ncalled.  It couldn\u0027t ever be GFP_ATOMIC, for example, because it needs to\ntake the page lock.  The only thing any callers care about is __GFP_FS\nanyway, so turn that into a single flag.\n\nAdd a new flag for write_begin, AOP_FLAG_NOFS.  Filesystems can now act on\nthis flag in their write_begin function.  Change __grab_cache_page to\naccept a nofs argument as well, to honour that flag (while we\u0027re there,\nchange the name to grab_cache_page_write_begin which is more instructive\nand does away with random leading underscores).\n\nThis is really a more flexible way to go in the end anyway -- if a\nfilesystem happens to want any extra allocations aside from the pagecache\nones in ints write_begin function, it may now use GFP_KERNEL (rather than\nGFP_NOFS) for common case allocations (eg.  ocfs2_alloc_write_ctxt, for a\nrandom example).\n\n[kosaki.motohiro@jp.fujitsu.com: fix ubifs]\n[kosaki.motohiro@jp.fujitsu.com: fix fuse]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.28.x]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n[ Cleaned up the calling convention: just pass in the AOP flags\n  untouched to the grab_cache_page_write_begin() function.  That\n  just simplifies everybody, and may even allow future expansion of the\n  logic.   - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c644f0e4b56f9a2fc066cd0d75a18074d130e4a3",
      "tree": "96f5954d7e72a2bf56f4165f4e7569364562f04f",
      "parents": [
        "0a30c5cefa53cbac429dcb2de906c0637b646253"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sun Jan 04 12:00:48 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 04 13:33:20 2009 -0800"
      },
      "message": "fs: introduce bgl_lock_ptr()\n\nAs suggested by Andreas Dilger, introduce a bgl_lock_ptr() helper in\n\u003clinux/blockgroup_lock.h\u003e and add separate sb_bgl_lock() helpers to\nfilesystem specific header files to break the hidden dependency to\nstruct ext[234]_sb_info.\n\nAlso, while at it, convert the macros to static inlines to try make up\nfor all the times I broke Andrew Morton\u0027s tree.\n\nAcked-by: Andreas Dilger \u003cadilger@sun.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ba80b1019aa722b24506db1ee755e0bb2f513022",
      "tree": "0c9a7dfd3af0f5991f3eaaeb65d735b11e9cf777",
      "parents": [
        "c31910672376dfb8d020e32afa7249763bcd924a"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jan 03 20:03:21 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jan 03 20:03:21 2009 -0500"
      },
      "message": "ext4: Add markers for better debuggability\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c31910672376dfb8d020e32afa7249763bcd924a",
      "tree": "3f2b95a1d4a4da76d85d5bf32534fa3d15a82eac",
      "parents": [
        "c39a7f84d7845aa95d1c7c168f38215aedcc13c2"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 06 11:14:25 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 06 11:14:25 2009 -0500"
      },
      "message": "ext4: Remove code to create the journal inode\n\nThis code has been obsolete in quite some time, since the supported\nmethod for adding a journal inode is to use tune2fs (or to creating\nnew filesystem with a journal via mke2fs or mkfs.ext4).\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c39a7f84d7845aa95d1c7c168f38215aedcc13c2",
      "tree": "3e9d741df74eef7e6438dfd9a7ab5a32dd5a5501",
      "parents": [
        "6b082b531228c43d454c082fc0f969da1695b060"
      ],
      "author": {
        "name": "Toshiyuki Okajima",
        "email": "toshi.okajima@jp.fujitsu.com",
        "time": "Mon Jan 05 22:38:48 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 22:38:48 2009 -0500"
      },
      "message": "ext4: provide function to release metadata pages under memory pressure\n\nPages in the page cache belonging to ext4 data files are released via\nthe ext4_releasepage() function specified in the ext4 inode\u0027s\naddress_space_ops.  However, metadata blocks (such as indirect blocks,\ndirectory blocks, etc) are managed via the block device\naddress_space_ops, and they can not be released by\ntry_to_free_buffers() if they have a journal head attached to them.\n\nTo address this, we supply a release_metadata function which calls\njbd2_journal_try_to_free_buffers() function to free the metadata, and\nwhich is called by the block device\u0027s blkdev_releasepage() function.\n\nSigned-off-by: Toshiyuki Okajima \u003ctoshi.okajima@jp.fujitsu.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: linux-fsdevel@vger.kernel.org\n"
    },
    {
      "commit": "0087d9fb3f29f59e8d42c8b058376d80e5adde4c",
      "tree": "b7be65e3a316ce92de45fda55f9827f0d1caab9c",
      "parents": [
        "29eaf024980e07cc01f31ae4ea5d68c917f4b7da"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 05 21:49:12 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 21:49:12 2009 -0500"
      },
      "message": "ext4: Fix s_dirty_blocks_counter if block allocation failed with nodelalloc\n\nWith nodelalloc option we need to update the dirty block counter on\nblock allocation failure. This is needed because we increment the\ndirty block counter early in the block allocation phase. Without\nthe patch s_dirty_blocks_counter goes wrong so that filesystem\u0027s\nfree blocks decreases incorrectly.\n\nTested-by: Akira Fujita \u003ca-fujita@rs.jp.nec.com\u003e\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "29eaf024980e07cc01f31ae4ea5d68c917f4b7da",
      "tree": "969f94ad36afc5e1edcd51964f0c6bc5b0044371",
      "parents": [
        "8556e8f3b6c4c11601ce1e9ea8090a6d8bd5daae"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 05 21:48:56 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 21:48:56 2009 -0500"
      },
      "message": "ext4: Init the complete page while building buddy cache\n\nWe need to init the complete page during buddy cache init\nby setting the contents to \u00271\u0027.  Otherwise we can see the\nfollowing errors after doing an online resize of the\nfilesystem:\n\nEXT4-fs error (device sdb1): ext4_mb_mark_diskspace_used:\n\tAllocating block 1040385 in system zone of 127 group\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "8556e8f3b6c4c11601ce1e9ea8090a6d8bd5daae",
      "tree": "8a0da99a4781cbde8c050d7cbcd85f31fd54e894",
      "parents": [
        "648f5879f5892dddd3ba71cd0d285599f40f2512"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 05 21:46:55 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 21:46:55 2009 -0500"
      },
      "message": "ext4: Don\u0027t allow new groups to be added during block allocation\n\nAfter we mark the blocks in the buddy cache as allocated,\nwe need to ensure that we don\u0027t reinit the buddy cache until\nthe block bitmap is updated.  This commit achieves this by holding\nthe group_info alloc_semaphore till ext4_mb_release_context\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "648f5879f5892dddd3ba71cd0d285599f40f2512",
      "tree": "dee22aa9be9e47c9a9a25ce38481079aaf8858c8",
      "parents": [
        "2ccb5fb9f113dae969d1ae9b6c10e80fa34f8cd3"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 05 21:46:04 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 21:46:04 2009 -0500"
      },
      "message": "ext4: mark the blocks/inode bitmap beyond end of group as used\n\nWe need to mark the block/inode bitmap beyond the end of the group\nwith \u00271\u0027.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "2ccb5fb9f113dae969d1ae9b6c10e80fa34f8cd3",
      "tree": "d9dc5bca94748d4173a7783e963d20b5a75f8db8",
      "parents": [
        "393418676a7602e1d7d3f6e560159c65c8cbd50e"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 05 21:49:55 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 21:49:55 2009 -0500"
      },
      "message": "ext4: Use new buffer_head flag to check uninit group bitmaps initialization\n\nFor uninit block group, the on-disk bitmap is not initialized. That\nimplies we cannot depend on the uptodate flag on the bitmap\nbuffer_head to find bitmap validity.  Use a new buffer_head flag which\nwould be set after we properly initialize the bitmap.  This also\nprevents (re-)initializing the uninit group bitmap every time we call \next4_read_block_bitmap().\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "393418676a7602e1d7d3f6e560159c65c8cbd50e",
      "tree": "26b166e426748a7a4bfe3784cd8258a895daba79",
      "parents": [
        "3300beda523136f9f87821e4fba85c5c9e319645"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 05 21:38:14 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 21:38:14 2009 -0500"
      },
      "message": "ext4: Fix the race between read_inode_bitmap() and ext4_new_inode()\n\nWe need to make sure we update the inode bitmap and clear\nEXT4_BG_INODE_UNINIT flag with sb_bgl_lock held, since\next4_read_inode_bitmap() looks at EXT4_BG_INODE_UNINIT to decide\nwhether to initialize the inode bitmap each time it is called.\n(introduced by commit c806e68f.)\n\next4_read_inode_bitmap does:\n\nspin_lock(sb_bgl_lock(EXT4_SB(sb), block_group));\nif (desc-\u003ebg_flags \u0026 cpu_to_le16(EXT4_BG_INODE_UNINIT)) {\n\text4_init_inode_bitmap(sb, bh, block_group, desc);\n\nand ext4_new_inode does\nif (!ext4_set_bit_atomic(sb_bgl_lock(sbi, group),\n                   ino, inode_bitmap_bh-\u003eb_data))\n\t\t   ......\n\t\t   ...\nspin_lock(sb_bgl_lock(sbi, group));\n\ngdp-\u003ebg_flags \u0026\u003d cpu_to_le16(~EXT4_BG_INODE_UNINIT);\ni.e., on allocation we update the bitmap then we take the sb_bgl_lock\nand clear the EXT4_BG_INODE_UNINIT flag. What can happen is a\nparallel ext4_read_inode_bitmap can zero out the bitmap in between\nthe above ext4_set_bit_atomic and spin_lock(sb_bg_lock..)\n\nThe race results in below user visible errors\nEXT4-fs error (device sdb1): ext4_free_inode: bit already cleared for inode 168449\nEXT4-fs warning (device sdb1): ext4_unlink: Deleting nonexistent file ...\nEXT4-fs warning (device sdb1): ext4_rmdir: empty directory has too many links ...\n# ls -al /mnt/tmp/f/p369/d3/d6/d39/db2/dee/d10f/d3f/l71\nls: /mnt/tmp/f/p369/d3/d6/d39/db2/dee/d10f/d3f/l71: Stale NFS file handle\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "3300beda523136f9f87821e4fba85c5c9e319645",
      "tree": "0af91284ffa44b9c8c1b0de26674bca30271561f",
      "parents": [
        "560671a0d3c9ad2d647fa6d09375a262e1f19c4f"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sat Jan 03 22:33:39 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jan 03 22:33:39 2009 -0500"
      },
      "message": "ext4: code cleanup\n\nRename some variables.  We also unlock locks in the reverse order we\nacquired as a part of cleanup.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "560671a0d3c9ad2d647fa6d09375a262e1f19c4f",
      "tree": "a52673326726062d53b35643d51a16739cd804fc",
      "parents": [
        "e8134b27e351e813414da3b95aa8eac6d3908088"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 05 22:20:24 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 22:20:24 2009 -0500"
      },
      "message": "ext4: Use high 16 bits of the block group descriptor\u0027s free counts fields\n\nRename the lower bits with suffix _lo and add helper\nto access the values. Also rename bg_itable_unused_hi\nto bg_pad as in e2fsprogs.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e8134b27e351e813414da3b95aa8eac6d3908088",
      "tree": "c2d9939f92cc326b4ecfc3903a489fb753cb344c",
      "parents": [
        "5d1b1b3f492f8696ea18950a454a141381b0f926"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 05 21:38:26 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 21:38:26 2009 -0500"
      },
      "message": "ext4: Fix race between read_block_bitmap() and mark_diskspace_used()\n\nWe need to make sure we update the block bitmap and clear\nEXT4_BG_BLOCK_UNINIT flag with sb_bgl_lock held, since\next4_read_block_bitmap() looks at EXT4_BG_BLOCK_UNINIT to decide\nwhether to initialize the block bitmap each time it is called\n(introduced by commit c806e68f), and this can race with block\nallocations in ext4_mb_mark_diskspace_used().\n\next4_read_block_bitmap does:\n\nspin_lock(sb_bgl_lock(EXT4_SB(sb), block_group));\nif (desc-\u003ebg_flags \u0026 cpu_to_le16(EXT4_BG_BLOCK_UNINIT)) {\n\text4_init_block_bitmap(sb, bh, block_group, desc);\n\nNow on the block allocation side we do\n\nmb_set_bits(sb_bgl_lock(sbi, ac-\u003eac_b_ex.fe_group), bitmap_bh-\u003eb_data,\n\t\t\tac-\u003eac_b_ex.fe_start, ac-\u003eac_b_ex.fe_len);\n....\nspin_lock(sb_bgl_lock(sbi, ac-\u003eac_b_ex.fe_group));\nif (gdp-\u003ebg_flags \u0026 cpu_to_le16(EXT4_BG_BLOCK_UNINIT)) {\n\tgdp-\u003ebg_flags \u0026\u003d cpu_to_le16(~EXT4_BG_BLOCK_UNINIT);\n\nie on allocation we update the bitmap then we take the sb_bgl_lock\nand clear the EXT4_BG_BLOCK_UNINIT flag. What can happen is a\nparallel ext4_read_block_bitmap can zero out the bitmap in between\nthe above mb_set_bits and spin_lock(sb_bg_lock..)\n\nThe race results in below user visible errors\nEXT4-fs error (device sdb1): ext4_mb_release_inode_pa: free 100, pa_free 105\nEXT4-fs error (device sdb1): mb_free_blocks: double-free of inode 0\u0027s block ..\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "5d1b1b3f492f8696ea18950a454a141381b0f926",
      "tree": "e6277cd3e01c074403b9da7390de1daa6b9f248f",
      "parents": [
        "b7be019e80da4db96d283734d55366014509911c"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Mon Jan 05 22:19:52 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 05 22:19:52 2009 -0500"
      },
      "message": "ext4: fix BUG when calling ext4_error with locked block group\n\nThe mballoc code likes to call ext4_error while it is holding locked\nblock groups.  This can causes a scheduling in atomic context BUG.  We\ncan\u0027t just unlock the block group and relock it after/if ext4_error\nreturns since that might result in race conditions in the case where\nthe filesystem is set to continue after finding errors.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "6b38e842bb832a3dbeb17e382404aef3c40ac5f9",
      "tree": "c36830341781bf49ded16a0d5432647979a74ad8",
      "parents": [
        "c38012daa7ad902a39a4213ba2b3fe50e81157ea"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Dec 30 02:03:31 2008 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 31 18:07:44 2008 -0500"
      },
      "message": "nfsd race fixes: ext4\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e83c1397cafc4e44f868289db5e417463c0d09a4",
      "tree": "1e5673897d0c7bcaad4a7e6927a7277e78525924",
      "parents": [
        "b5ed3112b5f74c8ec1c7aa03a76c596635e85197"
      ],
      "author": {
        "name": "Duane Griffin",
        "email": "duaneg@dghda.com",
        "time": "Fri Dec 19 20:47:15 2008 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Dec 31 18:07:39 2008 -0500"
      },
      "message": "ext4: ensure fast symlinks are NUL-terminated\n\nEnsure fast symlink targets are NUL-terminated, even if corrupted\non-disk.\n\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: adilger@sun.com\nCc: linux-ext4@vger.kernel.org\nSigned-off-by: Duane Griffin \u003cduaneg@dghda.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b3a6ffe16b5cc48abe7db8d04882dc45280eb693",
      "tree": "7bd0860ca93beb9aa8c5cb54a3081617d8d12de9",
      "parents": [
        "3c18ce71af754cefae75103dbae28817e04b2db4"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Dec 12 09:51:16 2008 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Dec 29 08:29:51 2008 +0100"
      },
      "message": "Get rid of CONFIG_LSF\n\nWe have two seperate config entries for large devices/files. One\nis CONFIG_LBD that guards just the devices, the other is CONFIG_LSF\nthat handles large files. This doesn\u0027t make a lot of sense, you typically\nwant both or none. So get rid of CONFIG_LSF and change CONFIG_LBD wording\nto indicate that it covers both.\n\nAcked-by: Jean Delvare \u003ckhali@linux-fr.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "cbacc2c7f066a1e01b33b0e27ae5efbf534bc2db",
      "tree": "90d1093131d2a3543a8b3b1f3364e7c6f4081a93",
      "parents": [
        "4a6908a3a050aacc9c3a2f36b276b46c0629ad91",
        "74192246910ff4fb95309ba1a683215644beeb62"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Thu Dec 25 11:40:09 2008 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Thu Dec 25 11:40:09 2008 +1100"
      },
      "message": "Merge branch \u0027next\u0027 into for-linus\n"
    },
    {
      "commit": "02d211688727ad02bb4555b1aa8ae2de16b21b39",
      "tree": "2ee10b2f0cbfb615c40a2df98627426b8543d6cd",
      "parents": [
        "71c5576fbd809f2015f4eddf72e501e298720cf3"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Dec 09 13:14:14 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 10 08:01:52 2008 -0800"
      },
      "message": "revert \"percpu_counter: new function percpu_counter_sum_and_set\"\n\nRevert\n\n    commit e8ced39d5e8911c662d4d69a342b9d053eaaac4e\n    Author: Mingming Cao \u003ccmm@us.ibm.com\u003e\n    Date:   Fri Jul 11 19:27:31 2008 -0400\n\n        percpu_counter: new function percpu_counter_sum_and_set\n\nAs described in\n\n\trevert \"percpu counter: clean up percpu_counter_sum_and_set()\"\n\nthe new percpu_counter_sum_and_set() is racy against updates to the\ncpu-local accumulators on other CPUs.  Revert that change.\n\nThis means that ext4 will be slow again.  But correct.\n\nReported-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Mingming Cao \u003ccmm@us.ibm.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.27.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "71c5576fbd809f2015f4eddf72e501e298720cf3"
}
