)]}'
{
  "log": [
    {
      "commit": "152a08366671080f27b32e0c411ad620c5f88b57",
      "tree": "d13d16028f74839c678bce355ba8aac75d939fa8",
      "parents": [
        "c96e41e92b4aaf11e1f9775ecf0d1c8cbff829ed"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 25 00:46:55 2010 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 29 04:16:13 2010 -0400"
      },
      "message": "new helper: mount_bdev()\n\n... and switch of the obvious get_sb_bdev() users to -\u003emount()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "671f837a04cbcaaa10e8404989cf08ca3fdf1c80",
      "tree": "d98a55d2e347ad15a73cbd860d1fd71a61be20bd",
      "parents": [
        "c9e2a72ff1acfdffdecb338b3d997f90c507e665",
        "b1142e8fec6a594723e5054055a7b53379b90490"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 28 15:46:57 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 28 15:46:57 2010 -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: BUG_ON fix: check if page has buffers before calling page_buffers()\n"
    },
    {
      "commit": "b1142e8fec6a594723e5054055a7b53379b90490",
      "tree": "57d6234fa2eb33f861eaea4cee4a40a3ae44c09e",
      "parents": [
        "81280572ca6f54009edfa4deee563e8678784218"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Oct 28 17:33:57 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Oct 28 17:33:57 2010 -0400"
      },
      "message": "ext4: BUG_ON fix: check if page has buffers before calling page_buffers() \n\nWe need to make check if a page does not have buffes by checking\npage_has_buffers(page) before calling page_buffers(page) in\next4_writepage().  Otherwise page_buffers() could throw a BUG_ON.\n\nThanks also to Markus Trippelsdorf and Avinash Kurup who also reported\nthe problem.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReported-by: Sedat Dilek \u003csedat.dilek@googlemail.com\u003e\nTested-by: Sedat Dilek \u003csedat.dilek@googlemail.com\u003e\n"
    },
    {
      "commit": "19ef20143ff86c8012270c619ac7b6c3b389a8fa",
      "tree": "6ba0b8b2ddf437161c1d7028ea5863005c4e2fe2",
      "parents": [
        "90a2b69c14d0f0b6cbd124caf429ae9033f0615c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 28 09:56:31 2010 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 28 09:29:17 2010 -0700"
      },
      "message": "ext4: fix compile with CONFIG_EXT4_FS_XATTR disabled\n\nCommit 5dabfc78dced (\"ext4: rename {exit,init}_ext4_*() to\next4_{exit,init}_*()\") causes\n\n  fs/ext4/super.c:4776: error: implicit declaration of function ‘ext4_init_xattr’\n\nwhen CONFIG_EXT4_FS_XATTR is disabled.\n\nIt renamed init_ext4_xattr to ext4_init_xattr but forgot to update the\ndummy definition in fs/ext4/xattr.h.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a107e5a3a473a2ea62bd5af24e11b84adf1486ff",
      "tree": "d36c2cb38d8be88d4d75cdebc354aa140aa0e470",
      "parents": [
        "e3e1288e86a07cdeb0aee5860a2dff111c6eff79",
        "a269029d0e2192046be4c07ed78a45022469ee4c"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 23:44:47 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 23:44:47 2010 -0400"
      },
      "message": "Merge branch \u0027next\u0027 into upstream-merge\n\nConflicts:\n\tfs/ext4/inode.c\n\tfs/ext4/mballoc.c\n\tinclude/trace/events/ext4.h\n"
    },
    {
      "commit": "3d287de3b828226e5a450c7fd5bf4283792dc2b0",
      "tree": "4adcc534e2042aed924750df3ef2433bd2f14fd8",
      "parents": [
        "beed5ecbaa377fa8bb6a54a6608e8725a21efdbc"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Wed Oct 27 22:08:46 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 22:08:46 2010 -0400"
      },
      "message": "ext4: optimize orphan_list handling for ext4_setattr\n\nSurprisingly chown() on ext4 is not SMP scalable operation. \nDue to unconditional orphan_del(NULL, inode) in ext4_setattr()\nresult in significant performance overhead because of global orphan\nmutex, especially in no-journal mode (where orphan_add() is noop).\nIt is possible to skip explicit orphan_del if possible.\nResults of fchown() micro-benchmark in no-journal mode\nwhile (1) {\n   iteration++;\n   fchown(fd, uid, gid);\n   fchown(fd, uid + 1, gid + 1)\n}\nmeasured: iterations per millisecond\n| nr_tasks | w/o patch | with patch |\n|        1 |       142 |        185 |\n|        4 |       109 |        642 |\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "beed5ecbaa377fa8bb6a54a6608e8725a21efdbc",
      "tree": "c8e76b2af5f0ccdc64d53907238947540de7d182",
      "parents": [
        "a6371b636f9f007ee5c90f85de048bc1b675424a"
      ],
      "author": {
        "name": "Nicolas Kaiser",
        "email": "nikai@nikai.net",
        "time": "Wed Oct 27 22:08:42 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 22:08:42 2010 -0400"
      },
      "message": "ext4: fix unbalanced mutex unlock in error path of ext4_li_request_new\n\nSigned-off-by: Nicolas Kaiser \u003cnikai@nikai.net\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a6371b636f9f007ee5c90f85de048bc1b675424a",
      "tree": "8cb3091cc98debd71ba58a4a3d2157e6eec24593",
      "parents": [
        "eee4adc709afe40d8c02fa154c63dbeb55d911e3"
      ],
      "author": {
        "name": "Kazuya Mio",
        "email": "k-mio@sx.jp.nec.com",
        "time": "Wed Oct 27 21:30:15 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:15 2010 -0400"
      },
      "message": "ext4: fix compile error in ext4_fallocate()\n\nWhen I compiled 2.6.36-rc3 kernel with EXT4FS_DEBUG definition, I got\nthe following compile error.\n\n  CC [M]  fs/ext4/extents.o\nfs/ext4/extents.c: In function \u0027ext4_fallocate\u0027:\nfs/ext4/extents.c:3772: error: \u0027block\u0027 undeclared (first use in this function)\nfs/ext4/extents.c:3772: error: (Each undeclared identifier is reported only once\nfs/ext4/extents.c:3772: error: for each function it appears in.)\nmake[2]: *** [fs/ext4/extents.o] Error 1\n\nThe patch fixes this problem.\n\nSigned-off-by: Kazuya Mio \u003ck-mio@sx.jp.nec.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "eee4adc709afe40d8c02fa154c63dbeb55d911e3",
      "tree": "e65d8235eb7cf745a1d9dc2ac9ab1c62bdd45758",
      "parents": [
        "61d08673de1fe68bfba86203258377bf39f234b6"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Oct 27 21:30:15 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:15 2010 -0400"
      },
      "message": "ext4: move ext4_mb_{get,put}_buddy_cache_lock and make them static\n\nThese functions are only used within fs/ext4/mballoc.c, so move them\nso they are used after they are defined, and then make them be static.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "61d08673de1fe68bfba86203258377bf39f234b6",
      "tree": "5cb32998c69eca626df54b50cb01e50a83c4db81",
      "parents": [
        "4a873a472b3bbcfd425d7ae210afdec28c04e2e5"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:15 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:15 2010 -0400"
      },
      "message": "ext4: rename mark_bitmap_end() to ext4_mark_bitmap_end()\n\nFix a namespace leak from fs/ext4\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n\n"
    },
    {
      "commit": "4a873a472b3bbcfd425d7ae210afdec28c04e2e5",
      "tree": "88aa333bfafcc5303b7a3074865f51f67ad836b9",
      "parents": [
        "bf89d16f6ef5389f1b9d8046e838ec87b9b3f8b9"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:14 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:14 2010 -0400"
      },
      "message": "ext4: move flush_completed_IO to fs/ext4/fsync.c and make it static\n\nFix a namespace leak by moving the function to the file where it is\nused and making it static.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "bf89d16f6ef5389f1b9d8046e838ec87b9b3f8b9",
      "tree": "dd491dd3035281d0ff537ddcba21ef7edbfef6b8",
      "parents": [
        "1f109d5a17b438c4a54cbf6fd87a249e3d72fb21"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:14 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:14 2010 -0400"
      },
      "message": "ext4: rename {ext,idx}_pblock and inline small extent functions\n\nCleanup namespace leaks from fs/ext4 and the inline trivial functions\next4_{ext,idx}_pblock() and ext4_{ext,idx}_store_pblock() since the\ncode size actually shrinks when we make these functions inline,\nthey\u0027re so trivial.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1f109d5a17b438c4a54cbf6fd87a249e3d72fb21",
      "tree": "f58c6fd431975bf900b502b80122e175065da657",
      "parents": [
        "5dabfc78dcedbe46cb2e4872dde448de3cec2979"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:14 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:14 2010 -0400"
      },
      "message": "ext4: make various ext4 functions be static\n\nThese functions have no need to be exported beyond file context.\n\nNo functions needed to be moved for this commit; just some function\ndeclarations changed to be static and removed from header files.\n\n(A similar patch was submitted by Eric Sandeen, but I wanted to handle\ncode movement in separate patches to make sure code changes didn\u0027t\naccidentally get dropped.)\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5dabfc78dcedbe46cb2e4872dde448de3cec2979",
      "tree": "804ef3e76289978ef6690c2b8f379a14a60b15f0",
      "parents": [
        "7f93cff90fa9be6ed45f6189e136153d1d8631b0"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:14 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:14 2010 -0400"
      },
      "message": "ext4: rename {exit,init}_ext4_*() to ext4_{exit,init}_*()\n\nThis is a cleanup to avoid namespace leaks out of fs/ext4\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7f93cff90fa9be6ed45f6189e136153d1d8631b0",
      "tree": "e48cbf01bc646e63df2fea10a2208015e028b95b",
      "parents": [
        "72f84e6560d18d60a091df27edf81409be6641cb"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:13 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:13 2010 -0400"
      },
      "message": "ext4: fix kernel oops if the journal superblock has a non-zero j_errno\n\nCommit 84061e0 fixed an accounting bug only to introduce the\npossibility of a kernel OOPS if the journal has a non-zero j_errno\nfield indicating that the file system had detected a fs inconsistency.\nAfter the journal replay, if the journal superblock indicates that the\nfile system has an error, this indication is transfered to the file\nsystem and then ext4_commit_super() is called to write this to the\ndisk.\n\nBut since the percpu counters are now initialized after the journal\nreplay, the call to ext4_commit_super() will cause a kernel oops since\nit needs to use the percpu counters the ext4 superblock structure.\n\nThe fix is to skip setting the ext4 free block and free inode fields\nif the percpu counter has not been set.\n\nThanks to Ken Sumrall for reporting and analyzing the root causes of\nthis bug.\n\nAddresses-Google-Bug: #3054080\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "72f84e6560d18d60a091df27edf81409be6641cb",
      "tree": "e2fa11476b074f8526d620820f8b2e86e8a11412",
      "parents": [
        "5b41d92437f1ae19b3f3ffa3b16589fd5df50ac0"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Oct 27 21:30:13 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:13 2010 -0400"
      },
      "message": "ext4: update writeback_index based on last page scanned\n\nAs pointed out in a prior patch, updating the mapping\u0027s\nwriteback_index based on pages written isn\u0027t quite right;\nwhat the writeback index is really supposed to reflect is\nthe next page which should be scanned for writeback during\nperiodic flush.\n\nAs in write_cache_pages(), write_cache_pages_da() does\nthis scanning for us as we assemble the mpd for later\nwriteout.  If we keep track of the next page after the\ncurrent scan, we can easily update writeback_index without\nworrying about pages written vs. pages skipped, etc.\n\nWithout this, an fsync will reset writeback_index to\n0 (its starting index) + however many pages it wrote, which\ncan mess up the progress of periodic flush.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5b41d92437f1ae19b3f3ffa3b16589fd5df50ac0",
      "tree": "ed7e1999a2349811e3cae0f0bdd53a93aea413d7",
      "parents": [
        "bbd08344e3df8c7c1d7aa04bc0c8c9367806e12d"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Oct 27 21:30:13 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:13 2010 -0400"
      },
      "message": "ext4: implement writeback livelock avoidance using page tagging\n\nThis is analogous to Jan Kara\u0027s commit,\nf446daaea9d4a420d16c606f755f3689dcb2d0ce\nmm: implement writeback livelock avoidance using page tagging\n\nbut since we forked write_cache_pages, we need to reimplement\nit there (and in ext4_da_writepages, since range_cyclic handling\nwas moved to there)\n\nIf you start a large buffered IO to a file, and then set\nfsync after it, you\u0027ll find that fsync does not complete\nuntil the other IO stops.\n\nIf you continue re-dirtying the file (say, putting dd\nwith conv\u003dnotrunc in a loop), when fsync finally completes\n(after all IO is done), it reports via tracing that\nit has written many more pages than the file contains;\nin other words it has synced and re-synced pages in\nthe file multiple times.\n\nThis then leads to problems with our writeback_index\nupdate, since it advances it by pages written, and\nessentially sets writeback_index off the end of the\nfile...\n\nWith the following patch, we only sync as much as was\ndirty at the time of the sync.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "bbd08344e3df8c7c1d7aa04bc0c8c9367806e12d",
      "tree": "6441a113660deb3bbe1795f5b03b1c11b9e18fda",
      "parents": [
        "27ee40df2b17c84aa7855907df12befe6869b7a7"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Oct 27 21:30:12 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:12 2010 -0400"
      },
      "message": "ext4: tidy up a void argument in inode.c\n\nThis doesn\u0027t fix anything at all, it just removes a vestige\nof prior use from __mpage_da_writepage()\n\n__mpage_da_writepage() had a *void argument leftover from\nits previous life as a callback; make it reflect the actual type.\n\nFixing this up makes it slightly more obvious to read, and \nenables proper typechecking.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "27ee40df2b17c84aa7855907df12befe6869b7a7",
      "tree": "9ff6c98b2e2a715234b9a9ebd91232fd7ca7f558",
      "parents": [
        "7360d1731e5dc78aec867e65e55f9fb58782b5fe"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Wed Oct 27 21:30:12 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:12 2010 -0400"
      },
      "message": "ext4: add batched_discard into ext4 feature list\n\nShould be applied on the top of \"lazy inode table initialization\"\nand \"batched discard support\" patch-sets.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7360d1731e5dc78aec867e65e55f9fb58782b5fe",
      "tree": "2cc0d139ec129c19150ef481d6adb9b0fd947c89",
      "parents": [
        "367a51a339020ba4d9edb0ce0f21d65bd50b00c9"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Wed Oct 27 21:30:12 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:12 2010 -0400"
      },
      "message": "ext4: Add batched discard support for ext4\n\nWalk through allocation groups and trim all free extents. It can be\ninvoked through FITRIM ioctl on the file system. The main idea is to\nprovide a way to trim the whole file system if needed, since some SSD\u0027s\nmay suffer from performance loss after the whole device was filled (it\ndoes not mean that fs is full!).\n\nIt search for free extents in allocation groups specified by Byte range\nstart -\u003e start+len. When the free extent is within this range, blocks\nare marked as used and then trimmed. Afterwards these blocks are marked\nas free in per-group bitmap.\n\nSince fstrim is a long operation it is good to have an ability to\ninterrupt it by a signal. This was added by Dmitry Monakhov.\nThanks Dimitry.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nReviewed-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "77ca6cdf0ab8a42f481ec997911bc89e79138723",
      "tree": "30f6cb268a3b4cad391e5784557b2c6432b52691",
      "parents": [
        "877836905da55e8f2426234f42a89287184949e9"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Wed Oct 27 21:30:11 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:11 2010 -0400"
      },
      "message": "ext4: Use return value from sb_issue_discard()\n\nUse return value from sb_issue_discard() as return value in\next4_issue_discard(). Since sb_issue_discard() may result in more\nserious errors than just -EOPNOTSUPP it is worth to inform user of this\nfunction about them to handle error cases properly.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "877836905da55e8f2426234f42a89287184949e9",
      "tree": "eecb60e9b55daaf794a3083f9c48fc94e05d4cd2",
      "parents": [
        "bd2d0210cf22f2bd0cef72eb97cf94fc7d31d8cc"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Wed Oct 27 21:30:11 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:11 2010 -0400"
      },
      "message": "ext4: Check return value of sb_getblk() and friends\n\nFail block allocation if sb_getblk() returns NULL. In that case,\nsb_find_get_block() also likely to fail so that it should skip\ncalling ext4_forget().\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "bd2d0210cf22f2bd0cef72eb97cf94fc7d31d8cc",
      "tree": "f0d1902b7ff4294114614cc706855c3d6b131f73",
      "parents": [
        "1de3e3df917459422cb2aecac440febc8879d410"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:10 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:10 2010 -0400"
      },
      "message": "ext4: use bio layer instead of buffer layer in mpage_da_submit_io\n\nCall the block I/O layer directly instad of going through the buffer\nlayer.  This should give us much better performance and scalability,\nas well as lowering our CPU utilization when doing buffered writeback.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "1de3e3df917459422cb2aecac440febc8879d410",
      "tree": "3ff2584fa323ec855dec74b7e842e5e4abe39597",
      "parents": [
        "3ecdb3a193a5f224f084c04a63aa28cdccf4d7d0"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:10 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:10 2010 -0400"
      },
      "message": "ext4: move mpage_put_bnr_to_bhs()\u0027s functionality to mpage_da_submit_io()\n\nThis massively simplifies the ext4_da_writepages() code path by\ncompletely removing mpage_put_bnr_bhs(), which is almost 100 lines of\ncode iterating over a set of pages using pagevec_lookup(), and folds\nthat functionality into mpage_da_submit_io()\u0027s existing\npagevec_lookup() loop.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "3ecdb3a193a5f224f084c04a63aa28cdccf4d7d0",
      "tree": "9949f753917004c75ddd4549c8e9741ccdbd435e",
      "parents": [
        "cb20d5188366f04d96d2e07b1240cc92170ade40"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:10 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:10 2010 -0400"
      },
      "message": "ext4: inline walk_page_buffers() into mpage_da_submit_io\n\nExpand the call:\n\n  if (walk_page_buffers(NULL, page_bufs, 0, len, NULL,\n                        ext4_bh_delay_or_unwritten))\n\tgoto redirty_page\n\ninto mpage_da_submit_io().\n\nThis will allow us to merge in mpage_put_bnr_to_bhs() in the next\npatch.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "cb20d5188366f04d96d2e07b1240cc92170ade40",
      "tree": "6fe424e1ccdd36f8b4a60e144cfdaa577296926e",
      "parents": [
        "a42afc5f56f319107e987aa6adf2f65d93d527c7"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:09 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:09 2010 -0400"
      },
      "message": "ext4: inline ext4_writepage() into mpage_da_submit_io()\n\nAs a prepratory step to switching to bio_submit, inline\next4_writepage() into mpage_da_submit() and then simplify things a\nbit.  This makes it clearer what mpage_da_submit needs to do.\n\nAlso, move the ClearPageChecked(page) call into\n__ext4_journalled_writepage(), as a minor bit of cleanup refactoring.\n\nThis also allows us to pull i_size_read() and\next4_should_journal_data() out of the loop, which should be a very\nminor CPU savings.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a42afc5f56f319107e987aa6adf2f65d93d527c7",
      "tree": "845d03a8cec3fcb705ea6c821d202c816de76655",
      "parents": [
        "5a87b7a5da250c9be6d757758425dfeaf8ed3179"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:09 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:09 2010 -0400"
      },
      "message": "ext4: simplify ext4_writepage()\n\nThe actual code in ext4_writepage() is unnecessarily convoluted.\nSimplify it so it is easier to understand, but otherwise logically\nequivalent.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5a87b7a5da250c9be6d757758425dfeaf8ed3179",
      "tree": "efd1ca776e184101cb20ba4606bc35103385bcb5",
      "parents": [
        "16828088f9e518158edecb6cde7e6fa38e4c889b"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:09 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:09 2010 -0400"
      },
      "message": "ext4: call mpage_da_submit_io() from mpage_da_map_blocks()\n\nEventually we need to completely reorganize the ext4 writepage\ncallpath, but for now, we simplify things a little by calling\nmpage_da_submit_io() from mpage_da_map_blocks(), since all of the\nplaces where we call mpage_da_map_blocks() it is followed up by a call\nto mpage_da_submit_io().\n\nWe\u0027re also a wee bit better with respect to error handling, but there\nare still a number of issues where it\u0027s not clear what the right thing\nis to do with ext4 functions deep in the writeback codepath fails.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "16828088f9e518158edecb6cde7e6fa38e4c889b",
      "tree": "620f14e52107d59aee3a0c55135037df4a07ae73",
      "parents": [
        "7845c0497536c566bfef08db1a38ae1ad2c25464"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:09 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:09 2010 -0400"
      },
      "message": "ext4: use KMEM_CACHE instead of kmem_cache_create\n\nAlso remove the SLAB_RECLAIM_ACCOUNT flag from the system zone kmem\ncache.  This slab tends to be fairly static, so it shouldn\u0027t be marked\nas likely to have free pages that can be reclaimed.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n\n"
    },
    {
      "commit": "7845c0497536c566bfef08db1a38ae1ad2c25464",
      "tree": "1d5fc97acad87341c6a703dc0763fa95135923ef",
      "parents": [
        "8941ec8bb6443d28d5c25311870aeaa809cf1538"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:08 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:08 2010 -0400"
      },
      "message": "ext4: use search_dirblock() in ext4_dx_find_entry()\n\nUse the search_dirblock() in ext4_dx_find_entry().  It makes the code\neasier to read, and it takes advantage of common code.  It also saves\n100 bytes or so of text space.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Brad Spengler \u003cspender@grsecurity.net\u003e\n"
    },
    {
      "commit": "8941ec8bb6443d28d5c25311870aeaa809cf1538",
      "tree": "5fbd2aff55ff077ec98604b03f6fc9d35a6f081d",
      "parents": [
        "640e9396566a1e1f52f2db294755a23f1e62cc97"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:08 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:08 2010 -0400"
      },
      "message": "ext4: avoid uninitialized memory references in ext3_htree_next_block()\n\nIf the first block of htree directory is missing \u0027.\u0027 or \u0027..\u0027 but is\notherwise a valid directory, and we do a lookup for \u0027.\u0027 or \u0027..\u0027, it\u0027s\npossible to dereference an uninitialized memory pointer in\next4_htree_next_block().\n\nWe avoid this by moving the special case from ext4_dx_find_entry() to\next4_find_entry(); this also means we can optimize ext4_find_entry()\nslightly when NFS looks up \"..\".\n\nThanks to Brad Spengler for pointing a Clang warning that led me to\nlook more closely at this code.  The warning was harmless, but it was\nuseful in pointing out code that was too ugly to live.  This warning was\nalso reported by Roman Borisov.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Brad Spengler \u003cspender@grsecurity.net\u003e\n"
    },
    {
      "commit": "640e9396566a1e1f52f2db294755a23f1e62cc97",
      "tree": "013b0028ceff606beb1290cc9f42704f2a94ab3d",
      "parents": [
        "c999af2b347a55174f702702e0df814d05ef5491"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Oct 27 21:30:08 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:08 2010 -0400"
      },
      "message": "ext4: remove unused ext4_sb_info members\n\nNot that these take up a lot of room, but the structure is long enough\nas it is, and there\u0027s no need to confuse people with these various\nundocumented \u0026 unused structure members...\n\nSigned-off-by: Eric Sandeen \u003csandeen@redaht.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c999af2b347a55174f702702e0df814d05ef5491",
      "tree": "47957b52c9a54babe4d8aefdda4f09cee5f76249",
      "parents": [
        "3e1e5f501632460184a98237d5460c521510535e"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Oct 27 21:30:07 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:07 2010 -0400"
      },
      "message": "ext4: queue conversion after adding to inode\u0027s completed IO list\n\nBy queuing the io end on the unwritten workqueue before adding it\nto our inode\u0027s list of completed IOs, I think we run the risk\nof the work getting completed, and the IO freed, before we try\nto add it to the inode\u0027s i_completed_io_list.\n\nIt should be safe to add it to the inode\u0027s list of completed\nIOs, and -then- queue it for completion, I think.\n\nThanks to Dave Chinner for pointing out the race.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nReviewed-by: Jiaying Zhang \u003cjiayingz@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "3e1e5f501632460184a98237d5460c521510535e",
      "tree": "9bb5006c9bcb1651f9c447869f4e90deb116e6e8",
      "parents": [
        "4d5476164a052e80d4ef430e368e76dbde96801f"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Oct 27 21:30:07 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:07 2010 -0400"
      },
      "message": "ext4: don\u0027t use ext4_allocation_contexts for tracing\n\nMany tracepoints were populating an ext4_allocation_context\nto pass in, but this requires a slab allocation even when\ntracepoints are off.  In fact, 4 of 5 of these allocations\nwere only for tracing.  In addition, we were only using a\nsmall fraction of the 144 bytes of this structure for this\npurpose.\n\nWe can do away with all these alloc/frees of the ac and\nsimply pass in the bits we care about, instead.\n\nI tested this by turning on tracing and running through\nxfstests on x86_64.  I did not actually do anything with\nthe trace output, however.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0c9169ccad4aed233fdd49e95da4eada2536a06d",
      "tree": "2c89c49f8aa48dd781747e4f9d801ad06e5517b9",
      "parents": [
        "e0d10bfa91b0a089a9e2c378b5c42f4e96171d95"
      ],
      "author": {
        "name": "Toshiyuki Okajima",
        "email": "toshi.okajima@jp.fujitsu.com",
        "time": "Wed Oct 27 21:30:07 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:07 2010 -0400"
      },
      "message": "ext4: fix potential infinite loop in ext4_da_writepages()\n\nOn linux-2.6.36-rc2, if we execute the following script, we can hang\nthe system when the /bin/sync command is executed:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n#!/bin/sh\n\necho -n \"HANG UP TEST: \"\n/bin/dd if\u003d/dev/zero of\u003d/tmp/img bs\u003d1k count\u003d1 seek\u003d1M 2\u003e /dev/null\n/sbin/mkfs.ext4 -Fq /tmp/img\n/bin/mount -o loop -t ext4 /tmp/img /mnt\n/bin/dd if\u003d/dev/zero of\u003d/mnt/file bs\u003d1 count\u003d1 \\\nseek\u003d$((16*1024*1024*1024*1024-4096)) 2\u003e /dev/null\n/bin/sync\n/bin/umount /mnt\necho \"DONE\"\nexit 0\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nWe can see the following backtrace if we get the kdump when this\nhangup occurs:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nkthread()\n\u003d\u003e bdi_writeback_thread()\n   \u003d\u003e wb_do_writeback()\n      \u003d\u003e wb_writeback()\n         \u003d\u003e writeback_inodes_wb()\n            \u003d\u003e writeback_sb_inodes()\n               \u003d\u003e writeback_single_inode()\n                  \u003d\u003e ext4_da_writepages()  ---+ \n                                ^ infinite    |\n                                |   loop      |\n                                +-------------+\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe reason why this hangup happens is described as follows:\n1) We write the last extent block of the file whose size is the filesystem \n   maximum size.\n2) \"BH_Delay\" flag is set on the buffer_head of its block.\n3) - the member, \"m_lblk\" of struct mpage_da_data is 4294967295 (UINT_MAX)\n   - the member, \"m_len\" of struct mpage_da_data is 1\n  mpage_put_bnr_to_bhs() which is called via ext4_da_writepages()\n  cannot clear \"BH_Delay\" flag of the buffer_head because the type of\n  m_lblk is ext4_lblk_t and then m_lblk + m_len is overflow.\n\n  Therefore an infinite loop occurs because ext4_da_writepages()\n  cannot write the page (which corresponds to the block) since\n  \"BH_Delay\" flag isn\u0027t cleared.\n----------------------------------------------------------------------\nstatic void mpage_put_bnr_to_bhs(struct mpage_da_data *mpd,\n\t\t\t\tstruct ext4_map_blocks *map)\n{\n...\n\tint blocks \u003d map-\u003em_len;\n...\n\t\tdo {\n\t\t\t// cur_logical \u003d 4294967295\n\t\t\t// map-\u003em_lblk \u003d 4294967295\n\t\t\t// blocks \u003d 1\n\t\t\t// *** map-\u003em_lblk + blocks \u003d\u003d 0 (OVERFLOW!) ***\n\t\t\t// (cur_logical \u003e\u003d map-\u003em_lblk + blocks) \u003d\u003e true\n\t\t\tif (cur_logical \u003e\u003d map-\u003em_lblk + blocks)\n\t\t\t\tbreak;\n----------------------------------------------------------------------\n\nNOTE: Mounting with the nodelalloc option will avoid this codepath,\nand thus, avoid this hang\n\nSigned-off-by: Toshiyuki Okajima \u003ctoshi.okajima@jp.fujitsu.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e0d10bfa91b0a089a9e2c378b5c42f4e96171d95",
      "tree": "254d6b0b7d7ca2dfd817171d8d641c1a648e9c46",
      "parents": [
        "c41303ced67c4ebf51bf2e7d0f139155e09e0939"
      ],
      "author": {
        "name": "Toshiyuki Okajima",
        "email": "toshi.okajima@jp.fujitsu.com",
        "time": "Wed Oct 27 21:30:06 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:06 2010 -0400"
      },
      "message": "ext4: improve llseek error handling for overly large seek offsets\n\nThe llseek system call should return EINVAL if passed a seek offset\nwhich results in a write error.  What this maximum offset should be\ndepends on whether or not the huge_file file system feature is set,\nand whether or not the file is extent based or not.\n\n\nIf the file has no \"EXT4_EXTENTS_FL\" flag, the maximum size which can be \nwritten (write systemcall) is different from the maximum size which can be \nsought (lseek systemcall).\n\nFor example, the following 2 cases demonstrates the differences\nbetween the maximum size which can be written, versus the seek offset\nallowed by the llseek system call:\n\n#1: mkfs.ext3 \u003cdev\u003e; mount -t ext4 \u003cdev\u003e\n#2: mkfs.ext3 \u003cdev\u003e; tune2fs -Oextent,huge_file \u003cdev\u003e; mount -t ext4 \u003cdev\u003e\n\nTable. the max file size which we can write or seek\n       at each filesystem feature tuning and file flag setting\n+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d+\n| \\ File flag|                               |                               |\n|      \\     |     !EXT4_EXTENTS_FL          |        EXT4_EXTETNS_FL        |\n|case       \\|                               |                               |\n+------------+-------------------------------+-------------------------------+\n| #1         |   write:      2194719883264   | write:       --------------   |\n|            |   seek:       2199023251456   | seek:        --------------   |\n+------------+-------------------------------+-------------------------------+\n| #2         |   write:      4402345721856   | write:       17592186044415   |\n|            |   seek:      17592186044415   | seek:        17592186044415   |\n+------------+-------------------------------+-------------------------------+\n\nThe differences exist because ext4 has 2 maxbytes which are sb-\u003es_maxbytes\n(\u003d extent-mapped maxbytes) and EXT4_SB(sb)-\u003es_bitmap_maxbytes (\u003d block-mapped \nmaxbytes).  Although generic_file_llseek uses only extent-mapped maxbytes.\n(llseek of ext4_file_operations is generic_file_llseek which uses\nsb-\u003es_maxbytes.)\n\nTherefore we create ext4 llseek function which uses 2 maxbytes.\n\nThe new own function originates from generic_file_llseek().\nIf the file flag, \"EXT4_EXTENTS_FL\" is not set, the function alters \ninode-\u003ei_sb-\u003es_maxbytes into EXT4_SB(inode-\u003ei_sb)-\u003es_bitmap_maxbytes.\n\nSigned-off-by: Toshiyuki Okajima \u003ctoshi.okajima@jp.fujitsu.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Andreas Dilger \u003cadilger.kernel@dilger.ca\u003e\n"
    },
    {
      "commit": "c41303ced67c4ebf51bf2e7d0f139155e09e0939",
      "tree": "6593e7d580d48c2229df94bac0412654a1a7f76e",
      "parents": [
        "2407518de63a2f80d9b850fb525f35df93bbbe53"
      ],
      "author": {
        "name": "Maciej Żenczykowski",
        "email": "zenczykowski@gmail.com",
        "time": "Wed Oct 27 21:30:06 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:06 2010 -0400"
      },
      "message": "ext4: don\u0027t update sb journal_devnum when RO dev\n\nAn ext4 filesystem on a read-only device, with an external journal\nwhich is at a different device number then recorded in the superblock\nwill fail to honor the read-only setting of the device and trigger\na superblock update (write).\n\nFor example:\n  - ext4 on a software raid which is in read-only mode\n  - external journal on a read-write device which has changed device num\n  - attempt to mount with -o journal_dev\u003d\u003cnew_number\u003e\n  - hits BUG_ON(mddev-\u003ero \u003d 1) in md.c\n\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nSigned-off-by: Maciej Żenczykowski \u003czenczykowski@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "2407518de63a2f80d9b850fb525f35df93bbbe53",
      "tree": "97720c9fc4ee04f92463bde87a454a3f3cea6b5a",
      "parents": [
        "a31437b85aa2cbc4ea80f9ee5d603fdd5430980c"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Wed Oct 27 21:30:06 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:06 2010 -0400"
      },
      "message": "ext4: use sb_issue_zeroout in ext4_ext_zeroout\n\nChange ext4_ext_zeroout to use sb_issue_zeroout instead of its\nown approach to zero out extents.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a31437b85aa2cbc4ea80f9ee5d603fdd5430980c",
      "tree": "d4c0a609d5e4e59d2cd748ddf57c5f2c49844673",
      "parents": [
        "857ac889cce8a486d47874db4d2f9620e7e9e5de"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Wed Oct 27 21:30:05 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:05 2010 -0400"
      },
      "message": "ext4: use sb_issue_zeroout in setup_new_group_blocks\n\nUse sb_issue_zeroout to zero out inode table and descriptor table\nblocks instead of old approach which involves journaling.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "857ac889cce8a486d47874db4d2f9620e7e9e5de",
      "tree": "12401895197d819fcbf2335244d91259f4640aa2",
      "parents": [
        "bfff68738f1cb5c93dab1114634cea02aae9e7ba"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Wed Oct 27 21:30:05 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:05 2010 -0400"
      },
      "message": "ext4: add interface to advertise ext4 features in sysfs\n\nUser-space should have the opportunity to check what features doest ext4\nsupport in each particular copy. This adds easy interface by creating new\n\"features\" directory in sys/fs/ext4/. In that directory files\nadvertising feature names can be created.\n\nAdd lazy_itable_init to the feature list.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "bfff68738f1cb5c93dab1114634cea02aae9e7ba",
      "tree": "b6cdf3f26e86464c7088cab62d837eb32f559fb9",
      "parents": [
        "e6fa0be699449d28a20e815bfe9ce26725ec4962"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Wed Oct 27 21:30:05 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:05 2010 -0400"
      },
      "message": "ext4: add support for lazy inode table initialization\n\nWhen the lazy_itable_init extended option is passed to mke2fs, it\nconsiderably speeds up filesystem creation because inode tables are\nnot zeroed out.  The fact that parts of the inode table are\nuninitialized is not a problem so long as the block group descriptors,\nwhich contain information regarding how much of the inode table has\nbeen initialized, has not been corrupted However, if the block group\nchecksums are not valid, e2fsck must scan the entire inode table, and\nthe the old, uninitialized data could potentially cause e2fsck to\nreport false problems.\n\nHence, it is important for the inode tables to be initialized as soon\nas possble.  This commit adds this feature so that mke2fs can safely\nuse the lazy inode table initialization feature to speed up formatting\nfile systems.\n\nThis is done via a new new kernel thread called ext4lazyinit, which is\ncreated on demand and destroyed, when it is no longer needed.  There\nis only one thread for all ext4 filesystems in the system. When the\nfirst filesystem with inititable mount option is mounted, ext4lazyinit\nthread is created, then the filesystem can register its request in the\nrequest list.\n\nThis thread then walks through the list of requests picking up\nscheduled requests and invoking ext4_init_inode_table(). Next schedule\ntime for the request is computed by multiplying the time it took to\nzero out last inode table with wait multiplier, which can be set with\nthe (init_itable\u003dn) mount option (default is 10).  We are doing\nthis so we do not take the whole I/O bandwidth. When the thread is no\nlonger necessary (request list is empty) it frees the appropriate\nstructures and exits (and can be created later later by another\nfilesystem).\n\nWe do not disturb regular inode allocations in any way, it just do not\ncare whether the inode table is, or is not zeroed. But when zeroing, we\nhave to skip used inodes, obviously. Also we should prevent new inode\nallocations from the group, while zeroing is on the way. For that we\ntake write alloc_sem lock in ext4_init_inode_table() and read alloc_sem\nin the ext4_claim_inode, so when we are unlucky and allocator hits the\ngroup which is currently being zeroed, it just has to wait.\n\nThis can be suppresed using the mount option no_init_itable.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a1c6c5698d53db4c47a25c3a8d11731a4d7b8370",
      "tree": "4c0b46a74ea1699f8a5e2765a432fec35fb38bcb",
      "parents": [
        "53fdcf992d616484d388a8ab9dad07dc8b8f1178"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Wed Oct 27 21:30:04 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:04 2010 -0400"
      },
      "message": "ext4: fix NULL pointer dereference in print_daily_error_info()\n\nFix NULL pointer dereference in print_daily_error_info, when   \ncalled on unmounted fs (EXT4_SB(sb) returns NULL), by removing error \nreporting timer in ext4_put_super.\n\nGoogle-Bug-Id: 3017663\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "53fdcf992d616484d388a8ab9dad07dc8b8f1178",
      "tree": "f9542d11f725bfb552636f53eab455f917138f47",
      "parents": [
        "582987098207f1182ed5c7d01d5fedf7a5f56286"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Wed Oct 27 21:30:04 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:04 2010 -0400"
      },
      "message": "ext4: don\u0027t hold spinlock while calling ext4_issue_discard()\n\nWe can\u0027t hold the block group spinlock because we ext4_issue_discard()\ncalls wait and hence can get rescheduled.\n\nGoogle-Bug-Id: 3017678\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "582987098207f1182ed5c7d01d5fedf7a5f56286",
      "tree": "90bd12d0744a8ba7cf63f4042f09102812340334",
      "parents": [
        "b443e7339aa08574d30b0819b344618459c76214"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Wed Oct 27 21:30:03 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:03 2010 -0400"
      },
      "message": "ext4: check for negative error code from sb_issue_discard\n\nsb_issue_discard() is returning negative error code, so check for\n-EOPNOTSUPP.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b443e7339aa08574d30b0819b344618459c76214",
      "tree": "3c89ccd60deee6184b5cc9cf2bbb78291952b047",
      "parents": [
        "659c6009ca2e3a01acc9881bafe5f55ef09c965b"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Oct 27 21:30:03 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:03 2010 -0400"
      },
      "message": "ext4: don\u0027t bump up LONG_MAX nr_to_write by a factor of 8\n\nI\u0027m uneasy with lots of stuff going on in ext4_da_writepages(),\nbut bumping nr_to_write from LLONG_MAX to -8 clearly isn\u0027t\nmaking anything better, so avoid the multiplier in that case.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "659c6009ca2e3a01acc9881bafe5f55ef09c965b",
      "tree": "c7d6b0a8cfb8f5979f3f8d0e0e5122ffd9c688be",
      "parents": [
        "fb1813f4a8a27bbd4735967e46931e61fc837a3e"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Oct 27 21:30:03 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:30:03 2010 -0400"
      },
      "message": "ext4: stop looping in ext4_num_dirty_pages when max_pages reached\n\nToday we simply break out of the inner loop when we have accumulated\nmax_pages; this keeps scanning forwad and doing pagevec_lookup_tag()\nin the while (!done) loop, this does potentially a lot of work\nwith no net effect.\n\nWhen we have accumulated max_pages, just clean up and return.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "fb1813f4a8a27bbd4735967e46931e61fc837a3e",
      "tree": "c9d7c9d851c81663a8e501ba5c14f2a4b332f893",
      "parents": [
        "b853fd364810a241050778124842a8c415c72a69"
      ],
      "author": {
        "name": "Curt Wohlgemuth",
        "email": "curtw@google.com",
        "time": "Wed Oct 27 21:29:12 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:29:12 2010 -0400"
      },
      "message": "ext4: use dedicated slab caches for group_info structures\n\next4_group_info structures are currently allocated with kmalloc().\nWith a typical 4K block size, these are 136 bytes each -- meaning\nthey\u0027ll each consume a 256-byte slab object.  On a system with many\next4 large partitions, that\u0027s a lot of wasted kernel slab space.\n(E.g., a single 1TB partition will have about 8000 block groups, using\nabout 2MB of slab, of which nearly 1MB is wasted.)\n\nThis patch creates an array of slab pointers created as needed --\ndepending on the superblock block size -- and uses these slabs to\nallocate the group info objects.\n\nGoogle-Bug-Id: 2980809\n\nSigned-off-by: Curt Wohlgemuth \u003ccurtw@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "58590b06d79f7ce5ab64ff3b6d537180fa50dc84",
      "tree": "4e3c785e4ec6709385f62b741389de34a9ade279",
      "parents": [
        "899611ee7d373e5eeda08e9a8632684e1ebbbf00"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:23:12 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:23:12 2010 -0400"
      },
      "message": "ext4: fix EOFBLOCKS_FL handling\n\nIt turns out we have several problems with how EOFBLOCKS_FL is\nhandled.  First of all, there was a fencepost error where we were not\nclearing the EOFBLOCKS_FL when fill in the last uninitialized block,\nbut rather when we allocate the next block _after_ the uninitalized\nblock.  Secondly we were not testing to see if we needed to clear the\nEOFBLOCKS_FL when writing to the file O_DIRECT or when were converting\nan uninitialized block (which is the most common case).\n\nGoogle-Bug-Id: 2928259\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "85fe4025c616a7c0ed07bc2fc8c5371b07f3888c",
      "tree": "7a5db7accb6192f2911f2473b4e3191227b914cc",
      "parents": [
        "f991bd2e14210fb93d722cb23e54991de20e8a3d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Oct 23 11:19:54 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "fs: do not assign default i_ino in new_inode\n\nInstead of always assigning an increasing inode number in new_inode\nmove the call to assign it into those callers that actually need it.\nFor now callers that need it is estimated conservatively, that is\nthe call is added to all filesystems that do not assign an i_ino\nby themselves.  For a few more filesystems we can avoid assigning\nany inode number given that they aren\u0027t user visible, and for others\nit could be done lazily when an inode number is actually needed,\nbut that\u0027s left for later patches.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7de9c6ee3ecffd99e1628e81a5ea5468f7581a1f",
      "tree": "88787e77ba8a253d0a26aeda4bd5e58532d592e0",
      "parents": [
        "646ec4615cd05972581c9c5342ed7a1e77df17bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 23 11:11:40 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "new helper: ihold()\n\nClones an existing reference to inode; caller must already hold one.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ebdec241d509cf69f6ebf1ecdc036359d3dbe154",
      "tree": "e3c23f9b213936cb8501c83f55522a01f4a69aca",
      "parents": [
        "56b0dacfa2b8416815a2f2a5f4f51e46be4cf14c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Oct 06 10:47:23 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:18:20 2010 -0400"
      },
      "message": "fs: kill block_prepare_write\n\n__block_write_begin and block_prepare_write are identical except for slightly\ndifferent calling conventions.  Convert all callers to the __block_write_begin\ncalling conventions and drop block_prepare_write.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a2887097f25cd38cadfc11d10769e2b349fb5eca",
      "tree": "cd4adcb305365d6ba9acd2c02d4eb9d0125c6f8d",
      "parents": [
        "8abfc6e7a45eb74e51904bbae676fae008b11366",
        "005a1d15f5a6b2bb4ada80349513effbf22b4588"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block: (46 commits)\n  xen-blkfront: disable barrier/flush write support\n  Added blk-lib.c and blk-barrier.c was renamed to blk-flush.c\n  block: remove BLKDEV_IFL_WAIT\n  aic7xxx_old: removed unused \u0027req\u0027 variable\n  block: remove the BH_Eopnotsupp flag\n  block: remove the BLKDEV_IFL_BARRIER flag\n  block: remove the WRITE_BARRIER flag\n  swap: do not send discards as barriers\n  fat: do not send discards as barriers\n  ext4: do not send discards as barriers\n  jbd2: replace barriers with explicit flush / FUA usage\n  jbd2: Modify ASYNC_COMMIT code to not rely on queue draining on barrier\n  jbd: replace barriers with explicit flush / FUA usage\n  nilfs2: replace barriers with explicit flush / FUA usage\n  reiserfs: replace barriers with explicit flush / FUA usage\n  gfs2: replace barriers with explicit flush / FUA usage\n  btrfs: replace barriers with explicit flush / FUA usage\n  xfs: replace barriers with explicit flush / FUA usage\n  block: pass gfp_mask and flags to sb_issue_discard\n  dm: convey that all flushes are processed as empty\n  ...\n"
    },
    {
      "commit": "79f14b7c56d3b3ba58f8b43d1f70b9b71477a800",
      "tree": "3bb53b7806c1baba6cc24b91724a9264cceccd39",
      "parents": [
        "c37927d4359e81b85de644f8fb08878717cf5f3f",
        "6d7bccc2215c37205ede6c9cf84db64e7c4f9443"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:01 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:01 2010 -0700"
      },
      "message": "Merge branch \u0027vfs\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027vfs\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl: (30 commits)\n  BKL: remove BKL from freevxfs\n  BKL: remove BKL from qnx4\n  autofs4: Only declare function when CONFIG_COMPAT is defined\n  autofs: Only declare function when CONFIG_COMPAT is defined\n  ncpfs: Lock socket in ncpfs while setting its callbacks\n  fs/locks.c: prepare for BKL removal\n  BKL: Remove BKL from ncpfs\n  BKL: Remove BKL from OCFS2\n  BKL: Remove BKL from squashfs\n  BKL: Remove BKL from jffs2\n  BKL: Remove BKL from ecryptfs\n  BKL: Remove BKL from afs\n  BKL: Remove BKL from USB gadgetfs\n  BKL: Remove BKL from autofs4\n  BKL: Remove BKL from isofs\n  BKL: Remove BKL from fat\n  BKL: Remove BKL from ext2 filesystem\n  BKL: Remove BKL from do_new_mount()\n  BKL: Remove BKL from cgroup\n  BKL: Remove BKL from NTFS\n  ...\n"
    },
    {
      "commit": "f2143c4e2ebc6be3f07b7c7527dae7313fde23e1",
      "tree": "5911d66d2c443d66e20639f0ff9f6c4830384245",
      "parents": [
        "77b54a46a83232d172d55013c3af838190615260"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@infradead.org",
        "time": "Wed Feb 24 13:25:30 2010 +0100"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Mon Oct 04 21:10:38 2010 +0200"
      },
      "message": "BKL: Remove BKL from ext4 filesystem\n\nThe BKL is still used in ext4_put_super(), ext4_fill_super() and\next4_remount(). All three calles are protected against concurrent calls by\nthe s_umount rw semaphore of struct super_block.\n\nTherefore the BKL is protecting nothing in this case.\n\nSigned-off-by: Jan Blunck \u003cjblunck@infradead.org\u003e\nAcked-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\n"
    },
    {
      "commit": "db71922217a214e5c9268448e537b54fc1f301ea",
      "tree": "9c9afbf29411547891f6968e5ade29ce59d66c07",
      "parents": [
        "899611ee7d373e5eeda08e9a8632684e1ebbbf00"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@infradead.org",
        "time": "Sun Aug 15 22:51:10 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Mon Oct 04 21:10:10 2010 +0200"
      },
      "message": "BKL: Explicitly add BKL around get_sb/fill_super\n\nThis patch is a preparation necessary to remove the BKL from do_new_mount().\nIt explicitly adds calls to lock_kernel()/unlock_kernel() around\nget_sb/fill_super operations for filesystems that still uses the BKL.\n\nI\u0027ve read through all the code formerly covered by the BKL inside\ndo_kern_mount() and have satisfied myself that it doesn\u0027t need the BKL\nany more.\n\ndo_kern_mount() is already called without the BKL when mounting the rootfs\nand in nfsctl. do_kern_mount() calls vfs_kern_mount(), which is called\nfrom various places without BKL: simple_pin_fs(), nfs_do_clone_mount()\nthrough nfs_follow_mountpoint(), afs_mntpt_do_automount() through\nafs_mntpt_follow_link(). Both later functions are actually the filesystems\nfollow_link inode operation. vfs_kern_mount() is calling the specified\nget_sb function and lets the filesystem do its job by calling the given\nfill_super function.\n\nTherefore I think it is safe to push down the BKL from the VFS to the\nlow-level filesystems get_sb/fill_super operation.\n\n[arnd: do not add the BKL to those file systems that already\n       don\u0027t use it elsewhere]\n\nSigned-off-by: Jan Blunck \u003cjblunck@infradead.org\u003e\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "dd3932eddf428571762596e17b65f5dc92ca361b",
      "tree": "57cec5ae2f862037f78b7e993323d77955bb6463",
      "parents": [
        "8786fb70ccb36c7cff64680bb80c46d3a09d44db"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Sep 16 20:51:46 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 20:52:58 2010 +0200"
      },
      "message": "block: remove BLKDEV_IFL_WAIT\n\nAll the blkdev_issue_* helpers can only sanely be used for synchronous\ncaller.  To issue cache flushes or barriers asynchronously the caller needs\nto set up a bio by itself with a completion callback to move the asynchronous\nstate machine ahead.  So drop the BLKDEV_IFL_WAIT flag that is always\nspecified when calling blkdev_issue_* and also remove the now unused flags\nargument to blkdev_issue_flush and blkdev_issue_zeroout.  For\nblkdev_issue_discard we need to keep it for the secure discard flag, which\ngains a more descriptive name and loses the bitops vs flag confusion.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "30ca22c70e3ef0a96ff84de69cd7e8561b416cb2",
      "tree": "0da339bf657ae19a39baf3c4d31ebfb0ae6c09ce",
      "parents": [
        "729963a1ff8d069d05dab6a024bfd59805ac622c"
      ],
      "author": {
        "name": "Patrick J. LoPresti",
        "email": "lopresti@gmail.com",
        "time": "Thu Jul 22 15:03:41 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Sep 10 08:41:42 2010 -0700"
      },
      "message": "ext3/ext4: Factor out disk addressability check\n\nAs part of adding support for OCFS2 to mount huge volumes, we need to\ncheck that the sector_t and page cache of the system are capable of\naddressing the entire volume.\n\nAn identical check already appears in ext3 and ext4.  This patch moves\nthe addressability check into its own function in fs/libfs.c and\nmodifies ext3 and ext4 to invoke it.\n\n[Edited to -EINVAL instead of BUG_ON() for bad blocksize_bits -- Joel]\n\nSigned-off-by: Patrick LoPresti \u003clopresti@gmail.com\u003e\nCc: linux-ext4@vger.kernel.org\nAcked-by: Andreas Dilger \u003cadilger@dilger.ca\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "61002f7db33c7d064cddcdab680fb750fa43d8fd",
      "tree": "a9a4a9f6288478cc91934b0784e31649faaa8efb",
      "parents": [
        "9c35575bbe6b1dd4914a5323c8df8b3159edcc75"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Aug 18 05:29:18 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:39 2010 +0200"
      },
      "message": "ext4: do not send discards as barriers\n\next4 already uses synchronous discards, no need to add I/O barriers.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "2cf6d26a354ab6362e301b5a323832b02867df47",
      "tree": "dcc84f3422df777baa85f54870cda613262e74ca",
      "parents": [
        "b372d360df6deaf79a58a02fa0cc0d7e0aa3e92f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Aug 18 05:29:10 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:38 2010 +0200"
      },
      "message": "block: pass gfp_mask and flags to sb_issue_discard\n\nWe\u0027ll need to get rid of the BLKDEV_IFL_BARRIER flag, and to facilitate\nthat and to make the interface less confusing pass all flags explicitly.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "5f248c9c251c60af3403902b26e08de43964ea0b",
      "tree": "6d3328e72a7e4015a64017eb30be18095c6a3c64",
      "parents": [
        "f6cec0ae58c17522a7bc4e2f39dae19f199ab534",
        "dca332528bc69e05f67161e1ed59929633d5e63d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -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: (96 commits)\n  no need for list_for_each_entry_safe()/resetting with superblock list\n  Fix sget() race with failing mount\n  vfs: don\u0027t hold s_umount over close_bdev_exclusive() call\n  sysv: do not mark superblock dirty on remount\n  sysv: do not mark superblock dirty on mount\n  btrfs: remove junk sb_dirt change\n  BFS: clean up the superblock usage\n  AFFS: wait for sb synchronization when needed\n  AFFS: clean up dirty flag usage\n  cifs: truncate fallout\n  mbcache: fix shrinker function return value\n  mbcache: Remove unused features\n  add f_flags to struct statfs(64)\n  pass a struct path to vfs_statfs\n  update VFS documentation for method changes.\n  All filesystems that need invalidate_inode_buffers() are doing that explicitly\n  convert remaining -\u003eclear_inode() to -\u003eevict_inode()\n  Make -\u003edrop_inode() just return whether inode needs to be dropped\n  fs/inode.c:clear_inode() is gone\n  fs/inode.c:evict() doesn\u0027t care about delete vs. non-delete paths now\n  ...\n\nFix up trivial conflicts in fs/nilfs2/super.c\n"
    },
    {
      "commit": "2aec7c523291621ebb68ba8e0bd9b52a26bb76ee",
      "tree": "5be94d61cb157c0482c4e4005e438844c0312dd0",
      "parents": [
        "365b18189789bfa1acd9939e6312b8a4b4577b28"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@suse.de",
        "time": "Mon Jul 19 18:19:41 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:45 2010 -0400"
      },
      "message": "mbcache: Remove unused features\n\nThe mbcache code was written to support a variable number of indexes,\nbut all the existing users use exactly one index.  Simplify to code to\nsupport only that case.\n\nThere are also no users of the cache entry free operation, and none of\nthe users keep extra data in cache entries.  Remove those features as\nwell.\n\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0930fcc1ee2f0a810b938bc283a3a262d7adccbb",
      "tree": "5e5d10894f1e31a7aede75110b43d7a41347631d",
      "parents": [
        "7da08fd17a6e42d80f0f3897a5cbd682e77bcdb4"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 07 13:16:22 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:30 2010 -0400"
      },
      "message": "convert ext4 to -\u003eevict_inode()\n\npretty much brute-force...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1025774ce411f2bd4b059ad7b53f0003569b74fa",
      "tree": "2be221c205cb5579652a6063e8ee27d1c72d1bbd",
      "parents": [
        "eef2380c187890816b73b1a4cb89a09203759469"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:30:02 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:37 2010 -0400"
      },
      "message": "remove inode_setattr\n\nReplace inode_setattr with opencoded variants of it in all callers.  This\nmoves the remaining call to vmtruncate into the filesystem methods where it\ncan be replaced with the proper truncate sequence.\n\nIn a few cases it was obvious that we would never end up calling vmtruncate\nso it was left out in the opencoded variant:\n\n spufs: explicitly checks for ATTR_SIZE earlier\n btrfs,hugetlbfs,logfs,dlmfs: explicitly clears ATTR_SIZE earlier\n ufs: contains an opencoded simple_seattr + truncate that sets the filesize just above\n\nIn addition to that ncpfs called inode_setattr with handcrafted iattrs,\nwhich allowed to trim down the opencoded variant.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6e1db88d536adcbbfe562b2d4b7d6425784fff12",
      "tree": "8cfcb5a6190722db6249b2e4978f39247975abcf",
      "parents": [
        "f4e420dc423148fba637af1ab618fa8896dfb2d6"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:29:57 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:32 2010 -0400"
      },
      "message": "introduce __block_write_begin\n\nSplit up the block_write_begin implementation - __block_write_begin is a new\ntrivial wrapper for block_prepare_write that always takes an already\nallocated page and can be either called from block_write_begin or filesystem\ncode that already has a page allocated.  Remove the handling of already\nallocated pages from block_write_begin after switching all callers that\ndo it to __block_write_begin.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "eafdc7d190a944c755a9fe68573c193e6e0217e7",
      "tree": "915c3cc8004706fabf88eae1ab123a3fa0147516",
      "parents": [
        "256249584bda1a9357e2d29987a37f5b2df035f6"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:29:53 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:29 2010 -0400"
      },
      "message": "sort out blockdev_direct_IO variants\n\nMove the call to vmtruncate to get rid of accessive blocks to the callers\nin prepearation of the new truncate calling sequence.  This was only done\nfor DIO_LOCKING filesystems, so the __blockdev_direct_IO_newtrunc variant\nwas not needed anyway.  Get rid of blockdev_direct_IO_no_locking and\nits _newtrunc variant while at it as just opencoding the two additional\nparamters is shorted than the name suffix.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "09dc942c2a767e2d298f1cc9294bc19c7d7208c5",
      "tree": "d310c118467c90c264e953bdc320ae08394c662a",
      "parents": [
        "90e0c225968f0878e090c7ff3f88323973476cee",
        "6c7a120ac6c62316ab1fc78dfc0a7b13f3bfcbff"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 13:03:53 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 13:03:53 2010 -0700"
      },
      "message": "Merge branch \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (40 commits)\n  ext4: Adding error check after calling ext4_mb_regular_allocator()\n  ext4: Fix dirtying of journalled buffers in data\u003djournal mode\n  ext4: re-inline ext4_rec_len_(to|from)_disk functions\n  jbd2: Remove t_handle_lock from start_this_handle()\n  jbd2: Change j_state_lock to be a rwlock_t\n  jbd2: Use atomic variables to avoid taking t_handle_lock in jbd2_journal_stop\n  ext4: Add mount options in superblock\n  ext4: force block allocation on quota_off\n  ext4: fix freeze deadlock under IO\n  ext4: drop inode from orphan list if ext4_delete_inode() fails\n  ext4: check to make make sure bd_dev is set before dereferencing it\n  jbd2: Make barrier messages less scary\n  ext4: don\u0027t print scary messages for allocation failures post-abort\n  ext4: fix EFBIG edge case when writing to large non-extent file\n  ext4: fix ext4_get_blocks references\n  ext4: Always journal quota file modifications\n  ext4: Fix potential memory leak in ext4_fill_super\n  ext4: Don\u0027t error out the fs if the user tries to make a file too big\n  ext4: allocate stripe-multiple IOs on stripe boundaries\n  ext4: move aio completion after unwritten extent conversion\n  ...\n\nFix up conflicts in fs/ext4/inode.c as per Ted.\n\nFix up xfs conflicts as per earlier xfs merge.\n"
    },
    {
      "commit": "6c7a120ac6c62316ab1fc78dfc0a7b13f3bfcbff",
      "tree": "371f7d7050c42fbc8fb03a66233081a594df40b8",
      "parents": [
        "56d35a4cd13e7bc5eca5b2dba5a41794afb17e11"
      ],
      "author": {
        "name": "Aditya Kali",
        "email": "adityakali@google.com",
        "time": "Thu Aug 05 16:22:24 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Aug 05 16:22:24 2010 -0400"
      },
      "message": "ext4: Adding error check after calling ext4_mb_regular_allocator()\n\nIf the bitmap block on disk is bad, ext4_mb_load_buddy() returns an\nerror. This error is returned to the caller,\next4_mb_regular_allocator() and then to ext4_mb_new_blocks().  But\next4_mb_new_blocks() did not check for the return value of\next4_mb_regular_allocator() and would repeatedly try to load the\nbitmap block. The fix simply catches the return value and exits out of\nthe \u0027repeat\u0027 loop after cleanup.\n\nWe also take the opportunity to clean up the error handling in\next4_mb_new_blocks().\n\nGoogle-Bug-Id: 2853530\n\nSigned-off-by: Aditya Kali \u003cadityakali@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "56d35a4cd13e7bc5eca5b2dba5a41794afb17e11",
      "tree": "8173b2de9f0f2b596812a725ac1897efa0ba38fc",
      "parents": [
        "0cfc9255a1efb0467de2162950197750570ecec0"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Aug 05 14:41:42 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Aug 05 14:41:42 2010 -0400"
      },
      "message": "ext4: Fix dirtying of journalled buffers in data\u003djournal mode\n\nIn data\u003djournal mode, we still use block_write_begin() to prepare\npage for writing. This function can occasionally mark buffer dirty\nwhich violates journalling assumptions - when a buffer is part of\na transaction, it should be dirty and a buffer can be already part\nof a forget list of some transaction when block_write_begin()\ngets called. This violation of journalling assumptions then results\nin \"JBD: Spotted dirty metadata buffer...\" warnings.\n\nIn fact, temporary dirtying the buffer while the page is still locked\ndoes not really cause problems to the journalling because we won\u0027t write\nthe buffer until the page gets unlocked. So we just have to make sure\nto clear dirty bits before unlocking the page.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "0cfc9255a1efb0467de2162950197750570ecec0",
      "tree": "3bb2510d8b6d373d7db3a49bcda3cbbebd10330e",
      "parents": [
        "8dd420466c7bfc459fa04680bd5690bfc41a4553"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Thu Aug 05 01:46:37 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Aug 05 01:46:37 2010 -0400"
      },
      "message": "ext4: re-inline ext4_rec_len_(to|from)_disk functions\n\ncommit 3d0518f4, \"ext4: New rec_len encoding for very\nlarge blocksizes\" made several changes to this path, but from\na perf perspective, un-inlining ext4_rec_len_from_disk() seems\nmost significant.  This function is called from ext4_check_dir_entry(),\nwhich on a file-creation workload is called extremely often.\n\nI tested this with bonnie:\n\n# bonnie++ -u root -s 0 -f -x 200 -d /mnt/test -n 32\n\n(this does 200 iterations) and got this for the file creations:\n\next4 stock:   Average \u003d  21206.8 files/s\next4 inlined: Average \u003d  22346.7 files/s  (+5%)\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d790d4d583aeaed9fc6f8a9f4d9f8ce6b1c15c7f",
      "tree": "854ab394486288d40fa8179cbfaf66e8bdc44b0f",
      "parents": [
        "73b2c7165b76b20eb1290e7efebc33cfd21db1ca",
        "3a09b1be53d23df780a0cd0e4087a05e2ca4a00c"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Aug 04 15:14:38 2010 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Aug 04 15:14:38 2010 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n"
    },
    {
      "commit": "73b2c7165b76b20eb1290e7efebc33cfd21db1ca",
      "tree": "e16ac854bede528fde2dcf96903c9720056916ce",
      "parents": [
        "17964e9d086cd4cb15b54a71ccddd8bbacb4c00c"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "u.kleine-koenig@pengutronix.de",
        "time": "Fri Jul 30 21:02:47 2010 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Aug 04 15:08:39 2010 +0200"
      },
      "message": "fix comment typo \"choosed\" -\u003e \"chosen\"\n\nSigned-off-by: Uwe Kleine-König \u003cu.kleine-koenig@pengutronix.de\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "a931da6ac9331a6c80dd91c199105806f2336188",
      "tree": "2d4ea766def9a98d21c2379f41e796b0e57ccd6b",
      "parents": [
        "a51dca9cd3bb4ec5a05bfb6feabf024a5c808a37"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Aug 03 21:35:12 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Aug 03 21:35:12 2010 -0400"
      },
      "message": "jbd2: Change j_state_lock to be a rwlock_t\n\nLockstat reports have shown that j_state_lock is a major source of\nlock contention, especially on systems with more than 4 CPU cores.  So\nchange it to be a read/write spinlock.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8b67f04ab9de5d8f3a71aef72bf02c995a506db5",
      "tree": "dd05968730762f5b18de4c6b0720843669e4e9db",
      "parents": [
        "ca0e05e4b15193aeba72b995e90de990db7f8304"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Aug 01 23:14:20 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Aug 01 23:14:20 2010 -0400"
      },
      "message": "ext4: Add mount options in superblock\n\nAllow mount options to be stored in the superblock.  Also add default\nmount option bits for nobarrier, block_validity, discard, and nodelalloc.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ca0e05e4b15193aeba72b995e90de990db7f8304",
      "tree": "85320333eb1832221225711a4b7bc0f970981c79",
      "parents": [
        "437f88cc031ffe7f37f3e705367f4fe1f4be8b0f"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Sun Aug 01 17:48:36 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Aug 01 17:48:36 2010 -0400"
      },
      "message": "ext4: force block allocation on quota_off\n\nPerform full sync procedure so that any delayed allocation blocks are\nallocated so quota will be consistent.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "437f88cc031ffe7f37f3e705367f4fe1f4be8b0f",
      "tree": "0b3ab55db25c0ac8695b27858013388ff4bcc8a9",
      "parents": [
        "4538821993f4486c76090dfb377c60c0a0e71ba3"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Sun Aug 01 17:33:29 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Aug 01 17:33:29 2010 -0400"
      },
      "message": "ext4: fix freeze deadlock under IO\n\nCommit 6b0310fbf087ad6 caused a regression resulting in deadlocks\nwhen freezing a filesystem which had active IO; the vfs_check_frozen\nlevel (SB_FREEZE_WRITE) did not let the freeze-related IO syncing\nthrough.  Duh.\n\nChanging the test to FREEZE_TRANS should let the normal freeze\nsyncing get through the fs, but still block any transactions from\nstarting once the fs is completely frozen.\n\nI tested this by running fsstress in the background while periodically\nsnapshotting the fs and running fsck on the result.  I ran into\noccasional deadlocks, but different ones.  I think this is a\nfine fix for the problem at hand, and the other deadlocky things\nwill need more investigation.\n\nReported-by: Phillip Susi \u003cpsusi@cfl.rr.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "4538821993f4486c76090dfb377c60c0a0e71ba3",
      "tree": "d196075a963896c25df9ceb983a19ce82f5eab9b",
      "parents": [
        "f613dfcb3345dacb8cf99b7bb359acc1c18a1157"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Jul 29 15:06:10 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Jul 29 15:06:10 2010 -0400"
      },
      "message": "ext4: drop inode from orphan list if ext4_delete_inode() fails\n\nThere were some error paths in ext4_delete_inode() which was not\ndropping the inode from the orphan list.  This could lead to a BUG_ON\non umount when the orphan list is discovered to be non-empty.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "f613dfcb3345dacb8cf99b7bb359acc1c18a1157",
      "tree": "a2e437f59acbd87d0d2a63c7bd20b016a844f5cb",
      "parents": [
        "cc937db74bd5fe75f4cfebbfc4a04c1da10f0695"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:08 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:08 2010 -0400"
      },
      "message": "ext4: check to make make sure bd_dev is set before dereferencing it\n\nThere are some drivers which may not set bdev-\u003ebd_dev.  So make sure\nit is non-NULL before dereferencing it.\n\nGoogle-Bug-Id: 1773557\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e3570639c8b5f2c6a5018a2649c2b7c276af76d7",
      "tree": "07c497204ba370c5e64b5868aa704e269e5893a3",
      "parents": [
        "d889dc8382c4d71b6d538b7b13777bc1ec51df10"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Jul 27 11:56:08 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:08 2010 -0400"
      },
      "message": "ext4: don\u0027t print scary messages for allocation failures post-abort\n\nI often get emails containing the \"This should not happen!!\" message,\nconveniently trimmed to remove things like:\n\nsd 0:0:0:0: [sda] Unhandled error code\nsd 0:0:0:0: [sda] Result: hostbyte\u003dDID_OK driverbyte\u003dDRIVER_TIMEOUT\nsd 0:0:0:0: [sda] CDB: Write(10): 2a 00 03 13 c9 70 00 00 28 00\nend_request: I/O error, dev sda, sector 51628400\nAborting journal on device dm-0-8.\nEXT4-fs error (device dm-0): ext4_journal_start_sb: Detected aborted journal\nEXT4-fs (dm-0): Remounting filesystem read-only\n\nI don\u0027t think there is any value to the verbosity if the reason is\ndue to a filesystem abort; it just obfuscates the root cause.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d889dc8382c4d71b6d538b7b13777bc1ec51df10",
      "tree": "e789637cb83e053a5d9706d4a66d20411cec2261",
      "parents": [
        "79e8303677fc15f508b9877e0fea1925c4add6f3"
      ],
      "author": {
        "name": "Toshiyuki Okajima",
        "email": "toshi.okajima@jp.fujitsu.com",
        "time": "Tue Jul 27 11:56:07 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:07 2010 -0400"
      },
      "message": "ext4: fix EFBIG edge case when writing to large non-extent file\n\nBy running the following reproducer, we can confirm that the write \nsystem call returns with 0 when it should return the error EFBIG.\n\n#!/bin/sh\n\n/bin/dd if\u003d/dev/zero of\u003d./img bs\u003d1k count\u003d1 seek\u003d1024k \u003e /dev/null 2\u003e\u00261\n/sbin/mkfs.ext3 -Fq ./img\n/bin/mount -o loop -t ext4 ./img /mnt\n/bin/touch /mnt/file\nstrace /bin/dd if\u003d/dev/zero of\u003d/mnt/file conv\u003dnotrunc bs\u003d1k count\u003d1 seek\u003d$((2194719883264/1024)) 2\u003e\u00261 | /bin/egrep \"write.* 1024\\) \u003d \"\n/bin/umount /mnt\nexit\n\nSigned-off-by: Toshiyuki Okajima \u003ctoshi.okajima@jp.fujitsu.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Eric Sandeen \u003csandeen@redhat.com\u003e\n"
    },
    {
      "commit": "79e8303677fc15f508b9877e0fea1925c4add6f3",
      "tree": "85891ab05b2a9e5dd47966fd16bc372df6d4bb88",
      "parents": [
        "62d2b5f2dcd3707b070efb16bbfdf6947c38c194"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Jul 27 11:56:07 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:07 2010 -0400"
      },
      "message": "ext4: fix ext4_get_blocks references\n\next4_get_blocks got renamed to ext4_map_blocks, but left stale\ncomments and a prototype littered around.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "62d2b5f2dcd3707b070efb16bbfdf6947c38c194",
      "tree": "4e721db0ab4893f6d619d20d10c1a635da079700",
      "parents": [
        "dcc7dae3cb21184a317f10a12250bd8d6f458077"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Jul 27 11:56:07 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:07 2010 -0400"
      },
      "message": "ext4: Always journal quota file modifications\n\nWhen journaled quota options are not specified, we do writes\nto quota files just in data\u003dordered mode. This actually causes\nwarnings from JBD2 about dirty journaled buffer because ext4_getblk\nunconditionally treats a block allocated by it as metadata. Since\nquota actually is filesystem metadata, the easiest way to get rid\nof the warning is to always treat quota writes as metadata...\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "dcc7dae3cb21184a317f10a12250bd8d6f458077",
      "tree": "1f40c22059a9ccbb0ef3ea6fde0e015290db2765",
      "parents": [
        "0c095c7f113e9fd05913d6e1b2cccbe356be039e"
      ],
      "author": {
        "name": "Cyrill Gorcunov",
        "email": "gorcunov@gmail.com",
        "time": "Tue Jul 27 11:56:07 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:07 2010 -0400"
      },
      "message": "ext4: Fix potential memory leak in ext4_fill_super\n\nUnder heavy memory pressure we may hit out of memory\nsituation and as result kstrdup\u0027ed options will not be\nfreed. Fix it.\n\nSigned-off-by: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0c095c7f113e9fd05913d6e1b2cccbe356be039e",
      "tree": "f23477719c99d5c20b4f1817c0ebe302a74eb870",
      "parents": [
        "506bf2d82165c09b179a5077e01037f6270a4db3"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:06 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:06 2010 -0400"
      },
      "message": "ext4: Don\u0027t error out the fs if the user tries to make a file too big\n\nIf the user attempts to make a non-extent-mapped file to be too large,\nreturn EFBIG, but don\u0027t call ext4_std_err() which will end up marking\nthe file system as containing an error.\n\nThanks to Toshiyuki Okajima-san at Fujitsu for pointing this out.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "506bf2d82165c09b179a5077e01037f6270a4db3",
      "tree": "9e0a92d5da86f8f402032a408148cb8676ade715",
      "parents": [
        "5b3ff237bef43b9e7fb7d1eb858e29b73fd664f9"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Jul 27 11:56:06 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:06 2010 -0400"
      },
      "message": "ext4: allocate stripe-multiple IOs on stripe boundaries\n\nFor some reason, today mballoc only allocates IOs which are exactly\nstripe-sized on a stripe boundary.  If you have a multiple (say, a\n128k IO on a 64k stripe) you may end up unaligned.\n\nIt seems to me that a simple change to align stripe-multiple IOs\non stripe boundaries would be a very good idea, unless this breaks\nsome other mballoc heuristic for some reason...\n\nReported-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5b3ff237bef43b9e7fb7d1eb858e29b73fd664f9",
      "tree": "e3810d974a0e51a8c4b9046abdd36a5a4022abb3",
      "parents": [
        "552ef8024f909d9b3a7442d0ab0d48a22de24e9e"
      ],
      "author": {
        "name": "jiayingz@google.com (Jiaying Zhang)",
        "email": "",
        "time": "Tue Jul 27 11:56:06 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:06 2010 -0400"
      },
      "message": "ext4: move aio completion after unwritten extent conversion\n\nThis patch is to be applied upon Christoph\u0027s \"direct-io: move aio_complete\ninto -\u003eend_io\" patch. It adds iocb and result fields to struct ext4_io_end_t,\nso that we can call aio_complete from  ext4_end_io_nolock() after the extent\nconversion has finished.\n\nI have verified with Christoph\u0027s aio-dio test that used to fail after a few\nruns on an original kernel but now succeeds on the patched kernel.\n\nSee http://thread.gmane.org/gmane.comp.file-systems.ext4/19659 for details.\n\nSigned-off-by: Jiaying Zhang \u003cjiayingz@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "552ef8024f909d9b3a7442d0ab0d48a22de24e9e",
      "tree": "868af331b76e12c8d17b8449094065a069e0d759",
      "parents": [
        "5c521830cf3dfcf7638d409d8e02ed21020c064f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Jul 27 11:56:06 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:06 2010 -0400"
      },
      "message": "direct-io: move aio_complete into -\u003eend_io\n\nFilesystems with unwritten extent support must not complete an AIO request\nuntil the transaction to convert the extent has been commited.  That means\nthe aio_complete calls needs to be moved into the -\u003eend_io callback so\nthat the filesystem can control when to call it exactly.\n\nThis makes a bit of a mess out of dio_complete and the -\u003eend_io callback\nprototype even more complicated. \n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e \nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5c521830cf3dfcf7638d409d8e02ed21020c064f",
      "tree": "e852cf76218a55c8cb1e206f8f2a2fbb971783ea",
      "parents": [
        "47def82672b3ba4e7c5e9a4fe48a556f8684d0d6"
      ],
      "author": {
        "name": "Jiaying Zhang",
        "email": "jiayingz@google.com",
        "time": "Tue Jul 27 11:56:05 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:05 2010 -0400"
      },
      "message": "ext4: Support discard requests when running in no-journal mode\n\nIssue discard request in ext4_free_blocks() when ext4 has no journal and\nis mounted with discard option.\n    \nSigned-off-by: Jiaying Zhang \u003cjiayingz@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "40389687382bf0ae71458e7c0f828137a438a956",
      "tree": "d2a49d494754e7fa28d33c2389f78a5b5da0db4f",
      "parents": [
        "a271fe8527fe9637bdd82c97123b1356940dd84b"
      ],
      "author": {
        "name": "Amir G",
        "email": "amir73il@users.sourceforge.net",
        "time": "Tue Jul 27 11:56:05 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:05 2010 -0400"
      },
      "message": "ext4: Fix block bitmap inconsistencies after a crash when deleting files\n\nWe have experienced bitmap inconsistencies after crash during file\ndelete under heavy load.  The crash is not file system related and I\nthe following patch in ext4_free_branches() fixes the recovery\nproblem.\n\nIf the transaction is restarted and there is a crash before the new\ntransaction is committed, then after recovery, the blocks that this\nindirect block points to have been freed, but the indirect block\nitself has not been freed and may still point to some of the free\nblocks (because of the ext4_forget()).\n\nSo ext4_forget() should be called inside ext4_free_blocks() to avoid\nthis problem.\n\nSigned-off-by: Amir Goldstein \u003camir73il@users.sf.net\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a271fe8527fe9637bdd82c97123b1356940dd84b",
      "tree": "07a950c18ad1c2391d18272d6154d23c83b71a8e",
      "parents": [
        "e5880d76aea443b04e07da19830da0f6f7494eef"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Tue Jul 27 11:56:04 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:04 2010 -0400"
      },
      "message": "ext4: Remove unnecessary casts of private_data\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e5880d76aea443b04e07da19830da0f6f7494eef",
      "tree": "24ad55c300a63170ffcf5a777dc737c67d80e00c",
      "parents": [
        "89eeddf03327e19cfcbb18efa98e5470e2f5c563"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:04 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:04 2010 -0400"
      },
      "message": "ext4: fix potential NULL dereference while tracing\n\nThe allocation_context pointer can be NULL.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "89eeddf03327e19cfcbb18efa98e5470e2f5c563",
      "tree": "2ca9f7ed13b348677a2d4b2fe8bf40e041a72f5f",
      "parents": [
        "66e61a9e9504f61b9a928c9055368c81da613a50"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:04 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:04 2010 -0400"
      },
      "message": "ext4: Define s_jnl_backup_type in superblock\n\nThis has been in use by e2fsprogs for a while; define it to keep the\nsuper block fields in sync.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "66e61a9e9504f61b9a928c9055368c81da613a50",
      "tree": "afcd8147b4e4771103f75f5a03b836950882dece",
      "parents": [
        "1c13d5c0872870cca3e612aa045d492ead9ab004"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:04 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:04 2010 -0400"
      },
      "message": "ext4: Once a day, printk file system error information to dmesg\n\nThis allows us to grab any file system error messages by scraping\n/var/log/messages.  This will make it easy for us to do error analysis\nacross the very large number of machines as we deploy ext4 across the\nfleet.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1c13d5c0872870cca3e612aa045d492ead9ab004",
      "tree": "6e3dd0d3f49ff56dda9fc6cd72c233759bc24e09",
      "parents": [
        "c398eda0e43a791be0fca6f197a1e2bbb9f16070"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:03 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:03 2010 -0400"
      },
      "message": "ext4: Save error information to the superblock for analysis\n\nSave number of file system errors, and the time function name, line\nnumber, block number, and inode number of the first and most recent\nerrors reported on the file system in the superblock.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c398eda0e43a791be0fca6f197a1e2bbb9f16070",
      "tree": "d7b2b95490f96a75e116a3aa13c17767aa630342",
      "parents": [
        "60fd4da34d55a9cc0d857fc76dc12cf8cab4ed02"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:40 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:40 2010 -0400"
      },
      "message": "ext4: Pass line numbers to ext4_error() and friends\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "60fd4da34d55a9cc0d857fc76dc12cf8cab4ed02",
      "tree": "72c6b3d9c7680070a751da56bd9068f71e7b106f",
      "parents": [
        "90c7201b97bb7ac5a4e2605abc0efb5fdfb957f0"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:54:40 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:54:40 2010 -0400"
      },
      "message": "ext4: Cleanup ext4_check_dir_entry so __func__ is now implicit\n    \nAlso start passing the line number to ext4_check_dir since we\u0027re going\nto need it in upcoming patch.\n    \nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "40e2e97316af6e62affab7a392e792494b8d9dde",
      "tree": "981ce3b464467893683d47f52ae5d35fdd32d46a",
      "parents": [
        "696123fca877905696591829c97a2cef11c8d048"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Jul 18 21:17:09 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Jul 26 16:09:02 2010 -0500"
      },
      "message": "direct-io: move aio_complete into -\u003eend_io\n\nFilesystems with unwritten extent support must not complete an AIO request\nuntil the transaction to convert the extent has been commited.  That means\nthe aio_complete calls needs to be moved into the -\u003eend_io callback so\nthat the filesystem can control when to call it exactly.\n\nThis makes a bit of a mess out of dio_complete and the -\u003eend_io callback\nprototype even more complicated.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "90c7201b97bb7ac5a4e2605abc0efb5fdfb957f0",
      "tree": "76eb6c66e45ae325d6c394b0534289da692fd2af",
      "parents": [
        "e29136f80e775b0310273932b4297a62f5574a29"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jun 29 14:53:24 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jun 29 14:53:24 2010 -0400"
      },
      "message": "ext4: Pass line number to ext4_journal_abort_handle()\n\nThis allows the error messages to include the line number\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e29136f80e775b0310273932b4297a62f5574a29",
      "tree": "d10d56b15b7968744ea0becdf61440aae7e609c5",
      "parents": [
        "c67d859e39896e4286249da89c4ca0ef8bd949cb"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jun 29 12:54:28 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jun 29 12:54:28 2010 -0400"
      },
      "message": "ext4: Enhance ext4_grp_locked_error() to take block and function numbers\n\nAlso use a macro definition so that __func__ and __LINE__ is implicit.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "c67d859e39896e4286249da89c4ca0ef8bd949cb",
      "tree": "e483a8e61fe876506d8ed819fbfe29eac6c493a7",
      "parents": [
        "4a9cdec73f79b2858e9ecf0b6cfac7f6b200bf3a"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jun 29 11:07:07 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jun 29 11:07:07 2010 -0400"
      },
      "message": "ext4: clean up ext4_abort() so __func__ is now implicit\n\nUse a macro definition for ext4_abort() to clean up the .c files a wee\nbit.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "4a9cdec73f79b2858e9ecf0b6cfac7f6b200bf3a",
      "tree": "0e06b201e009e5e2a661811e61ef3184138bb8d3",
      "parents": [
        "c6ac12a6159c802ae8b757dd13563564e64333df"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jun 29 11:00:23 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jun 29 11:00:23 2010 -0400"
      },
      "message": "ext4: Add new superblock fields reserved for the Next3 snapshot feature\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    }
  ],
  "next": "f1bbbb6912662b9f6070c5bfc4ca9eb1f06a9d5b"
}
