)]}'
{
  "log": [
    {
      "commit": "2fe17c1075836b66678ed2a305fd09b6773883aa",
      "tree": "eb5287be8138686682eef9622872cfc7657e0664",
      "parents": [
        "64c23e86873ee410554d6d1c76b60da47025e96f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jan 14 13:07:43 2011 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 17 02:25:31 2011 -0500"
      },
      "message": "fallocate should be a file operation\n\nCurrently all filesystems except XFS implement fallocate asynchronously,\nwhile XFS forced a commit.  Both of these are suboptimal - in case of O_SYNC\nI/O we really want our allocation on disk, especially for the !KEEP_SIZE\ncase where we actually grow the file with user-visible zeroes.  On the\nother hand always commiting the transaction is a bad idea for fast-path\nuses of fallocate like for example in recent Samba versions.   Given\nthat block allocation is a data plane operation anyway change it from\nan inode operation to a file operation so that we have the file structure\navailable that lets us check for O_SYNC.\n\nThis also includes moving the code around for a few of the filesystems,\nand remove the already unnedded S_ISDIR checks given that we only wire\nup fallocate for regular files.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "64c23e86873ee410554d6d1c76b60da47025e96f",
      "tree": "b30c5ff8782ebfdec6956d7834f796731fd3a1d4",
      "parents": [
        "eb745dbccce56f1bbe3f80b95ad2a325145171c2"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jan 14 13:07:30 2011 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 17 02:25:30 2011 -0500"
      },
      "message": "make the feature checks in -\u003efallocate future proof\n\nInstead of various home grown checks that might need updates for new\nflags just check for any bit outside the mask of the features supported\nby the filesystem.  This makes the check future proof for any newly\nadded flag.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "275220f0fcff1adf28a717076e00f575edf05fda",
      "tree": "d249bccc80c64443dab211639050c4fb14332648",
      "parents": [
        "fe3c560b8a22cb28e54fe8950abef38e88d75831",
        "81c5e2ae33c4b19e53966b427e33646bf6811830"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "message": "Merge branch \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block: (43 commits)\n  block: ensure that completion error gets properly traced\n  blktrace: add missing probe argument to block_bio_complete\n  block cfq: don\u0027t use atomic_t for cfq_group\n  block cfq: don\u0027t use atomic_t for cfq_queue\n  block: trace event block fix unassigned field\n  block: add internal hd part table references\n  block: fix accounting bug on cross partition merges\n  kref: add kref_test_and_get\n  bio-integrity: mark kintegrityd_wq highpri and CPU intensive\n  block: make kblockd_workqueue smarter\n  Revert \"sd: implement sd_check_events()\"\n  block: Clean up exit_io_context() source code.\n  Fix compile warnings due to missing removal of a \u0027ret\u0027 variable\n  fs/block: type signature of major_to_index(int) to major_to_index(unsigned)\n  block: convert !IS_ERR(p) \u0026\u0026 p to !IS_ERR_NOR_NULL(p)\n  cfq-iosched: don\u0027t check cfqg in choose_service_tree()\n  fs/splice: Pull buf-\u003eops-\u003econfirm() from splice_from_pipe actors\n  cdrom: export cdrom_check_events()\n  sd: implement sd_check_events()\n  sr: implement sr_check_events()\n  ...\n"
    },
    {
      "commit": "b2034d474b7e1e8578bd5c2977024b51693269d9",
      "tree": "e43969bf7c2ba89884c2580f56978826f1014520",
      "parents": [
        "27d189c02ba25851973c8582e419c0bded9f7e5b",
        "924241575a85249b9d410e38f5b2fcad9035e45c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:27:28 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:27:28 2011 -0800"
      },
      "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: (41 commits)\n  fs: add documentation on fallocate hole punching\n  Gfs2: fail if we try to use hole punch\n  Btrfs: fail if we try to use hole punch\n  Ext4: fail if we try to use hole punch\n  Ocfs2: handle hole punching via fallocate properly\n  XFS: handle hole punching via fallocate properly\n  fs: add hole punching to fallocate\n  vfs: pass struct file to do_truncate on O_TRUNC opens (try #2)\n  fix signedness mess in rw_verify_area() on 64bit architectures\n  fs: fix kernel-doc for dcache::prepend_path\n  fs: fix kernel-doc for dcache::d_validate\n  sanitize ecryptfs -\u003emount()\n  switch afs\n  move internal-only parts of ncpfs headers to fs/ncpfs\n  switch ncpfs\n  switch 9p\n  pass default dentry_operations to mount_pseudo()\n  switch hostfs\n  switch affs\n  switch configfs\n  ...\n"
    },
    {
      "commit": "008d23e4852d78bb2618f2035f8b2110b6a6b968",
      "tree": "81c88f744f6f3fc84132527c1ddc0b4da410c5e2",
      "parents": [
        "8f685fbda43deccd130d192c9fcef1444649eaca",
        "bfc672dcf323877228682aff79dff8ecd9f30ff8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:05:56 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:05:56 2011 -0800"
      },
      "message": "Merge branch \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (43 commits)\n  Documentation/trace/events.txt: Remove obsolete sched_signal_send.\n  writeback: fix global_dirty_limits comment runtime -\u003e real-time\n  ppc: fix comment typo singal -\u003e signal\n  drivers: fix comment typo diable -\u003e disable.\n  m68k: fix comment typo diable -\u003e disable.\n  wireless: comment typo fix diable -\u003e disable.\n  media: comment typo fix diable -\u003e disable.\n  remove doc for obsolete dynamic-printk kernel-parameter\n  remove extraneous \u0027is\u0027 from Documentation/iostats.txt\n  Fix spelling milisec -\u003e ms in snd_ps3 module parameter description\n  Fix spelling mistakes in comments\n  Revert conflicting V4L changes\n  i7core_edac: fix typos in comments\n  mm/rmap.c: fix comment\n  sound, ca0106: Fix assignment to \u0027channel\u0027.\n  hrtimer: fix a typo in comment\n  init/Kconfig: fix typo\n  anon_inodes: fix wrong function name in comment\n  fix comment typos concerning \"consistent\"\n  poll: fix a typo in comment\n  ...\n\nFix up trivial conflicts in:\n - drivers/net/wireless/iwlwifi/iwl-core.c (moved to iwl-legacy.c)\n - fs/ext4/ext4.h\n\nAlso fix missed \u0027diabled\u0027 typo in drivers/net/bnx2x/bnx2x.h while at it.\n"
    },
    {
      "commit": "6db26ffc917b609402619e03df5af8d1cd371ce7",
      "tree": "95d58dec4f8a69c57fd632ca61e362654bc351d0",
      "parents": [
        "f878133bf022717b880d0e0995b8f91436fd605c"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed Jan 12 16:59:13 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:05 2011 -0800"
      },
      "message": "fs/ext4/inode.c: use pr_warn_ratelimited()\n\npr_warning_ratelimited() doesn\u0027t exist.\n\nAlso include printk.h, which defines these things.\n\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d6dc8462f471f7bbb49c42c147bf84de0c977099",
      "tree": "64624b26b2c2f551e2b579013d149c51c0716583",
      "parents": [
        "db47fef2cd9aab76ab976e8b45a06a1b3ad0e3e4"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Nov 17 20:46:18 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 12 20:16:44 2011 -0500"
      },
      "message": "Ext4: fail if we try to use hole punch\n\nExt4 doesn\u0027t have the ability to punch holes yet, so make sure we return\nEOPNOTSUPP if we try to use hole punching through fallocate.  This support can\nbe added later.  Thanks,\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e9688f6acad8cb1f2e8d7abb2de06a6a5c9cbcf2",
      "tree": "2f9b89987c57e3395e53d3ca354f9674c0bef369",
      "parents": [
        "40c73abbb37e399eba274fe49e520ffa3dd65bdb",
        "0f0a25bf516843adae479636dc1cf75fd0bd003c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 11 14:37:31 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 11 14:37:31 2011 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (44 commits)\n  ext4: fix trimming starting with block 0 with small blocksize\n  ext4: revert buggy trim overflow patch\n  ext4: don\u0027t pass entire map to check_eofblocks_fl\n  ext4: fix memory leak in ext4_free_branches\n  ext4: remove ext4_mb_return_to_preallocation()\n  ext4: flush the i_completed_io_list during ext4_truncate\n  ext4: add error checking to calls to ext4_handle_dirty_metadata()\n  ext4: fix trimming of a single group\n  ext4: fix uninitialized variable in ext4_register_li_request\n  ext4: dynamically allocate the jbd2_inode in ext4_inode_info as necessary\n  ext4: drop i_state_flags on architectures with 64-bit longs\n  ext4: reorder ext4_inode_info structure elements to remove unneeded padding\n  ext4: drop ec_type from the ext4_ext_cache structure\n  ext4: use ext4_lblk_t instead of sector_t for logical blocks\n  ext4: replace i_delalloc_reserved_flag with EXT4_STATE_DELALLOC_RESERVED\n  ext4: fix 32bit overflow in ext4_ext_find_goal()\n  ext4: add more error checks to ext4_mkdir()\n  ext4: ext4_ext_migrate should use NULL not 0\n  ext4: Use ext4_error_file() to print the pathname to the corrupted inode\n  ext4: use IS_ERR() to check for errors in ext4_error_file\n  ...\n"
    },
    {
      "commit": "0f0a25bf516843adae479636dc1cf75fd0bd003c",
      "tree": "9c33ad74ee35181cb6d1a2e82da8df110919e47c",
      "parents": [
        "0a2179b169089f871e071c74316371ed43e6c8eb"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Jan 11 15:16:31 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 11 15:16:31 2011 -0500"
      },
      "message": "ext4: fix trimming starting with block 0 with small blocksize\n\nWhen s_first_data_block is not zero (which happens e.g. when block size is 1KB)\nand trim ioctl is called to start trimming from block 0, the math in\next4_get_group_no_and_offset() overflows. The overall result is that ioctl\nreturns EINVAL which is kind of unexpected and we probably don\u0027t want\nuserspace tools to bother with internal details of filesystem structure.\nSo just silently increase starting offset (and shorten length) when starting\nblock is below s_first_data_block.\n\nCC: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0a2179b169089f871e071c74316371ed43e6c8eb",
      "tree": "cfddd008d054c0ec6b047130d7f4e11667516770",
      "parents": [
        "d002ebf1d8daa5a317645b1c4a3a0b7ea2abc9ac"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 11 14:42:29 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 11 14:42:29 2011 -0500"
      },
      "message": "ext4: revert buggy trim overflow patch\n\nThis reverts commit 4f531501e44: ext4: fix possible overflow in\next4_trim_fs()\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d002ebf1d8daa5a317645b1c4a3a0b7ea2abc9ac",
      "tree": "d7b51bc1be02cbd08c6740ef73f79892f8653c83",
      "parents": [
        "1c5b9e9065567876c2d4a7a16d78f0fed154a5bf"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Mon Jan 10 13:03:35 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 13:03:35 2011 -0500"
      },
      "message": "ext4: don\u0027t pass entire map to check_eofblocks_fl\n\nSince check_eofblocks_fl() only uses the m_lblk portion of the map\nstructure, we may as well pass that directly, rather than passing the\nentire map, which IMHO obfuscates what parameters check_eofblocks_fl()\ncares about.  Not a big deal, but seems tidier and less confusing, to\nme.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1c5b9e9065567876c2d4a7a16d78f0fed154a5bf",
      "tree": "67b74f12c7336a972de54d004455369eec38bc28",
      "parents": [
        "a5196f8cdfbf6ccb20f093aaf48852d6d23b4e0b"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:51:28 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:51:28 2011 -0500"
      },
      "message": "ext4: fix memory leak in ext4_free_branches\n\nCommit 40389687 moved a call to ext4_forget() out of\next4_free_branches and let ext4_free_blocks() handle calling\nbforget().  But that change unfortunately did not replace the call to\next4_forget() with brelse(), which was needed to drop the in-use count\nof the indirect block\u0027s buffer head, which lead to a memory leak when\ndeleting files that used indirect blocks.  Fix this.\n\nThanks to Hugh Dickins for pointing this out.\n\nCc: stable@kernel.org\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a5196f8cdfbf6ccb20f093aaf48852d6d23b4e0b",
      "tree": "eb2d846eecf6535d2f0cf6cf8e0456f0fca2fe0e",
      "parents": [
        "3889fd57ea3c58209354862523275774fca9db03"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:47:07 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:47:07 2011 -0500"
      },
      "message": "ext4: remove ext4_mb_return_to_preallocation()\n\nThis function was never implemented, except for a BUG_ON which was\ntripping when ext4 is run without a journal.  The problem is that\nalthough the comment asserts that \"truncate (which is the only way to\nfree block) discards all preallocations\", ext4_free_blocks() is also\ncalled in various error recovery paths when blocks have been\nallocated, but for various reasons, we were not able to use those data\nblocks (for example, because we ran out of memory while trying to\nmanipulate the extent tree, or some other similar situation).\n\nIn addition to the fact that this function isn\u0027t implemented except\nfor the incorrect BUG_ON, the single caller of this function,\next4_free_blocks(), doesn\u0027t use it all if the journal is enabled.\n\nSo remove the (stub) function entirely for now.  If we decide it\u0027s\nbetter to add it back, it\u0027s only going to be useful with a relatively\nlarge number of code changes anyway.\n\nGoogle-Bug-Id: 3236408\n\nCc: Jiaying Zhang \u003cjiayingz@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "3889fd57ea3c58209354862523275774fca9db03",
      "tree": "1e68fb9b2691c0b792a36be7d87c987e8508dac6",
      "parents": [
        "b40971426a837e9dc9c66e1b6bbcb3874eafe4e0"
      ],
      "author": {
        "name": "Jiaying Zhang",
        "email": "jiayingz@google.com",
        "time": "Mon Jan 10 12:47:05 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:47:05 2011 -0500"
      },
      "message": "ext4: flush the i_completed_io_list during ext4_truncate\n\nTed first found the bug when running 2.6.36 kernel with dioread_nolock\nmount option that xfstests #13 complained about wrong file size during fsck.\nHowever, the bug exists in the older kernels as well although it is\nsomehow harder to trigger.\n\nThe problem is that ext4_end_io_work() can happen after we have truncated an\ninode to a smaller size. Then when ext4_end_io_work() calls \next4_convert_unwritten_extents(), we may reallocate some blocks that have \nbeen truncated, so the inode size becomes inconsistent with the allocated\nblocks. \n\nThe following patch flushes the i_completed_io_list during truncate to reduce \nthe risk that some pending end_io requests are executed later and convert \nalready truncated blocks to initialized. \n\nNote that although the fix helps reduce the problem a lot there may still \nbe a race window between vmtruncate() and ext4_end_io_work(). The fundamental\nproblem is that if vmtruncate() is called without either i_mutex or i_alloc_sem\nheld, it can race with an ongoing write request so that the io_end request is\nprocessed later when the corresponding blocks have been truncated.\n\nTed and I have discussed the problem offline and we saw a few ways to fix\nthe race completely:\n\na) We guarantee that i_mutex lock and i_alloc_sem write lock are both hold \nwhenever vmtruncate() is called. The i_mutex lock prevents any new write\nrequests from entering writeback and the i_alloc_sem prevents the race\nfrom ext4_page_mkwrite(). Currently we hold both locks if vmtruncate()\nis called from do_truncate(), which is probably the most common case.\nHowever, there are places where we may call vmtruncate() without holding\neither i_mutex or i_alloc_sem. I would like to ask for other people\u0027s\nopinions on what locks are expected to be held before calling vmtruncate().\nThere seems a disagreement among the callers of that function.\n\nb) We change the ext4 write path so that we change the extent tree to contain \nthe newly allocated blocks and update i_size both at the same time --- when \nthe write of the data blocks is completed.\n\nc) We add some additional locking to synchronize vmtruncate() and \next4_end_io_work(). This approach may have performance implications so we\nneed to be careful.\n\nAll of the above proposals may require more substantial changes, so\nwe may consider to take the following patch as a bandaid.\n\nSigned-off-by: Jiaying Zhang \u003cjiayingz@google.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "b40971426a837e9dc9c66e1b6bbcb3874eafe4e0",
      "tree": "34b2a745719ed18bd1f0c81cfad200b9d8b2e309",
      "parents": [
        "ca6e909f9bebe709bc65a3ee605ce32969db0452"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:46:59 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:46:59 2011 -0500"
      },
      "message": "ext4: add error checking to calls to ext4_handle_dirty_metadata()\n\nCall ext4_std_error() in various places when we can\u0027t bail out\ncleanly, so the file system can be marked as in error.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ca6e909f9bebe709bc65a3ee605ce32969db0452",
      "tree": "db7d324b995ff5fe74dcce00c9bf8c4da3adc5e3",
      "parents": [
        "6c5a6cb998854f3c579ecb2bc1423d302bcb1b76"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jan 10 12:30:39 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:30:39 2011 -0500"
      },
      "message": "ext4: fix trimming of a single group\n\nWhen ext4_trim_fs() is called to trim a part of a single group, the\nlogic will wrongly set last block of the interval to \u0027len\u0027 instead\nof \u0027first_block + len\u0027. Thus a shorter interval is possibly trimmed.\nFix it.\n\nCC: Lukas Czerner \u003clczerner@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "6c5a6cb998854f3c579ecb2bc1423d302bcb1b76",
      "tree": "c3c3b895f39a2d555a12ab6307fbad82e5ee63ab",
      "parents": [
        "8aefcd557d26d0023a36f9ec5afbf55e59f8f26b"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Mon Jan 10 12:30:17 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:30:17 2011 -0500"
      },
      "message": "ext4: fix uninitialized variable in ext4_register_li_request\n\nfs/ext4/super.c: In function \u0027ext4_register_li_request\u0027:\nfs/ext4/super.c:2936: warning: \u0027ret\u0027 may be used uninitialized in this function\n\nIt looks buggy to me, too.\n\nCc: Lukas Czerner \u003clczerner@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8aefcd557d26d0023a36f9ec5afbf55e59f8f26b",
      "tree": "e13143306cd64525cddd2cc2513c448275a1d95a",
      "parents": [
        "353eb83c1422c6326eaab30ce044a179c6018169"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:29:43 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:29:43 2011 -0500"
      },
      "message": "ext4: dynamically allocate the jbd2_inode in ext4_inode_info as necessary\n\nReplace the jbd2_inode structure (which is 48 bytes) with a pointer\nand only allocate the jbd2_inode when it is needed --- that is, when\nthe file system has a journal present and the inode has been opened\nfor writing.  This allows us to further slim down the ext4_inode_info\nstructure.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "353eb83c1422c6326eaab30ce044a179c6018169",
      "tree": "fd43e39b344de5ee43d82c90f0affda68a65f2df",
      "parents": [
        "8a2005d3f84457b7d7d8646ab5195341d9e5f06a"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:18:25 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:18:25 2011 -0500"
      },
      "message": "ext4: drop i_state_flags on architectures with 64-bit longs\n\nWe can store the dynamic inode state flags in the high bits of\nEXT4_I(inode)-\u003ei_flags, and eliminate i_state_flags.  This saves 8\nbytes from the size of ext4_inode_info structure, which when\nmultiplied by the number of the number of in the inode cache, can save\na lot of memory.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "8a2005d3f84457b7d7d8646ab5195341d9e5f06a",
      "tree": "4d94161103e806435745e1544fb24e6398b2e06b",
      "parents": [
        "b05e6ae58a13b56e3e11882c1fc71948c9b29760"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:13:42 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:13:42 2011 -0500"
      },
      "message": "ext4: reorder ext4_inode_info structure elements to remove unneeded padding\n\nBy reordering the elements in the ext4_inode_info structure, we can\nreduce the padding needed on an x86_64 system by 16 bytes.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b05e6ae58a13b56e3e11882c1fc71948c9b29760",
      "tree": "452cbadcbc8091b4db95f917f28b0f9de845dabf",
      "parents": [
        "01f49d0b9d0209dc1194255b11601e4b94447b36"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:13:26 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:13:26 2011 -0500"
      },
      "message": "ext4: drop ec_type from the ext4_ext_cache structure\n\nWe can encode the ec_type information by using ee_len \u003d\u003d 0 to denote\nEXT4_EXT_CACHE_NO, ee_start \u003d\u003d 0 to denote EXT4_EXT_CACHE_GAP, and if\nneither is true, then the cache type must be EXT4_EXT_CACHE_EXTENT.\nThis allows us to reduce the size of ext4_ext_inode by another 8\nbytes.  (ec_type is 4 bytes, plus another 4 bytes of padding)\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "01f49d0b9d0209dc1194255b11601e4b94447b36",
      "tree": "c3ec53c7725bf7a9188e844d8c8c09432d2be6ae",
      "parents": [
        "f232109773ff5b0c840a6761d74940b9cf0d66ec"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:13:03 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:13:03 2011 -0500"
      },
      "message": "ext4: use ext4_lblk_t instead of sector_t for logical blocks\n\nThis fixes a number of places where we used sector_t instead of\next4_lblk_t for logical blocks, which for ext4 are still 32-bit data\ntypes.  No point wasting space in the ext4_inode_info structure, and\nrequiring 64-bit arithmetic on 32-bit systems, when it isn\u0027t\nnecessary.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f232109773ff5b0c840a6761d74940b9cf0d66ec",
      "tree": "a32da5ebd1a3e074e9f52107f3bdc23babb6340c",
      "parents": [
        "ad4fb9cafe100a4a9de6e0529015e584d94ac8dc"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:12:36 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:12:36 2011 -0500"
      },
      "message": "ext4: replace i_delalloc_reserved_flag with EXT4_STATE_DELALLOC_RESERVED\n\nRemove the short element i_delalloc_reserved_flag from the\next4_inode_info structure and replace it a new bit in i_state_flags.\nSince we have an ext4_inode_info for every ext4 inode cached in the\ninode cache, any savings we can produce here is a very good thing from\na memory utilization perspective.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ad4fb9cafe100a4a9de6e0529015e584d94ac8dc",
      "tree": "d2cce94e67f81d2407a0119562efde5374c006bb",
      "parents": [
        "dabd991f9d8e3232bb4531c920daddac8d10d313"
      ],
      "author": {
        "name": "Kazuya Mio",
        "email": "k-mio@sx.jp.nec.com",
        "time": "Mon Jan 10 12:12:28 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:12:28 2011 -0500"
      },
      "message": "ext4: fix 32bit overflow in ext4_ext_find_goal()\n\next4_ext_find_goal() returns an ideal physical block number that the block\nallocator tries to allocate first. However, if a required file offset is\nsmaller than the existing extent\u0027s one, ext4_ext_find_goal() returns\na wrong block number because it may overflow at\n\"block - le32_to_cpu(ex-\u003eee_block)\". This patch fixes the problem.\n\next4_ext_find_goal() will also return a wrong block number in case\na file offset of the existing extent is too big. In this case,\nthe ideal physical block number is fixed in ext4_mb_initialize_context(),\nso it\u0027s no problem.\n\nreproduce:\n# dd if\u003d/dev/zero of\u003d/mnt/mp1/tmp bs\u003d127M count\u003d1 oflag\u003dsync\n# dd if\u003d/dev/zero of\u003d/mnt/mp1/file bs\u003d512K count\u003d1 seek\u003d1 oflag\u003dsync\n# filefrag -v /mnt/mp1/file\nFilesystem type is: ef53\nFile size of /mnt/mp1/file is 1048576 (256 blocks, blocksize 4096)\n ext logical physical expected length flags\n   0     128    67456             128 eof\n/mnt/mp1/file: 2 extents found\n# rm -rf /mnt/mp1/tmp\n# echo $((512*4096)) \u003e /sys/fs/ext4/loop0/mb_stream_req\n# dd if\u003d/dev/zero of\u003d/mnt/mp1/file bs\u003d512K count\u003d1 oflag\u003dsync conv\u003dnotrunc\n\nresult (linux-2.6.37-rc2 + ext4 patch queue):\n# filefrag -v /mnt/mp1/file\nFilesystem type is: ef53\nFile size of /mnt/mp1/file is 1048576 (256 blocks, blocksize 4096)\n ext logical physical expected length flags\n   0       0    33280             128 \n   1     128    67456    33407    128 eof\n/mnt/mp1/file: 2 extents found\n\nresult(apply this patch):\n# filefrag -v /mnt/mp1/file\nFilesystem type is: ef53\nFile size of /mnt/mp1/file is 1048576 (256 blocks, blocksize 4096)\n ext logical physical expected length flags\n   0       0    66560             128 \n   1     128    67456    66687    128 eof\n/mnt/mp1/file: 2 extents found\n\nSigned-off-by: Kazuya Mio \u003ck-mio@sx.jp.nec.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "dabd991f9d8e3232bb4531c920daddac8d10d313",
      "tree": "f914ebaba1b4fe686260e4a6479d2050ff2cbdb2",
      "parents": [
        "f1dffc4c5431c6bd8972489636573c5cd09ab672"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Mon Jan 10 12:11:16 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:11:16 2011 -0500"
      },
      "message": "ext4: add more error checks to ext4_mkdir()\n\nCheck return value of ext4_journal_get_write_access,\next4_journal_dirty_metadata and ext4_mark_inode_dirty. Move brelse()\nunder \u0027out_stop\u0027 to release bh properly in case of journal error.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f1dffc4c5431c6bd8972489636573c5cd09ab672",
      "tree": "a23a5ccffc0ecf3862ff7ecc70011efecd22ba39",
      "parents": [
        "f7c21177af0b32a2cd9ee36189637f0c1f0e1e17"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Mon Jan 10 12:11:00 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:11:00 2011 -0500"
      },
      "message": "ext4: ext4_ext_migrate should use NULL not 0\n\next4_ext_migrate() calls ext4_new_inode() and passes 0 instead of a pointer\nto a struct qstr.  This patch uses NULL, to make it obvious to the caller\nthat this was a pointer.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f7c21177af0b32a2cd9ee36189637f0c1f0e1e17",
      "tree": "ba83d4ddcd4b7e15ff575f0b75013ba9ed62f249",
      "parents": [
        "f9a62d090cf47fae2fe6f6bd8eb9f24482573fd8"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:10:55 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:10:55 2011 -0500"
      },
      "message": "ext4: Use ext4_error_file() to print the pathname to the corrupted inode\n\nWhere the file pointer is available, use ext4_error_file() instead of\next4_error_inode().\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f9a62d090cf47fae2fe6f6bd8eb9f24482573fd8",
      "tree": "018b35b669705055963d09c7e2a07c90cc36ade5",
      "parents": [
        "13195184a8bc119dbd2f905db325a453047971cb"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Mon Jan 10 12:10:50 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:10:50 2011 -0500"
      },
      "message": "ext4: use IS_ERR() to check for errors in ext4_error_file\n\nd_path() returns an ERR_PTR and it doesn\u0027t return NULL.  This is in\next4_error_file() and no one actually calls ext4_error_file().\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\n\n"
    },
    {
      "commit": "13195184a8bc119dbd2f905db325a453047971cb",
      "tree": "828ccd332405a8334b18e3fb6b46c9d9bf8671a5",
      "parents": [
        "1f605b302724120777a1c38743cb20e2c8807333"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Mon Jan 10 12:10:44 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:10:44 2011 -0500"
      },
      "message": "ext4: test the correct variable in ext4_init_pageio()\n\nThis is a copy and paste error.  The intent was to check\n\"io_page_cachep\".  We tested \"io_page_cachep\" earlier.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "6e9510b0e0de657ca7c7bfb10ced80b4d237dd58",
      "tree": "a4c427885d3a1c9571681e7bd8d772be7422c07e",
      "parents": [
        "eaeef86718249f5c75b1370f77a9bc11f196a01c"
      ],
      "author": {
        "name": "Wang Sheng-Hui",
        "email": "crosslonelyover@gmail.com",
        "time": "Mon Jan 10 12:10:30 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:10:30 2011 -0500"
      },
      "message": "ext2,ext3,ext4: clarify comment for extN_xattr_set_handle\n\nSigned-off-by: Wang Sheng-Hui \u003ccrosslonelyover@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "eaeef86718249f5c75b1370f77a9bc11f196a01c",
      "tree": "c499488c48742d3eecc68275414dbdf58efbc9d9",
      "parents": [
        "932596366760e3f0dac9998665af1c49afcc4285"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:10:07 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:10:07 2011 -0500"
      },
      "message": "ext4: clean up ext4_xattr_list()\u0027s error code checking and return strategy\n\nAny time you see code that tries to add error codes together, you\nshould want to claw your eyes out...\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "932596366760e3f0dac9998665af1c49afcc4285",
      "tree": "61c75c933abc0f8c9e2f8b712f785d39d46919d3",
      "parents": [
        "4f531501e44206862735e81ddf2b70d0dcf6acf6"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Mon Jan 10 12:09:59 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:09:59 2011 -0500"
      },
      "message": "ext4: remove warning message from ext4_issue_discard helper\n\next4_issue_discard is supposed to be helper for calling discard, however\nin case that underlying device does not support discard it prints out\nthe warning message and clears the DISCARD t_mount_opt flag. Since it\ncan be (and is) used by others, it should not do anything and let the\ncaller to handle the error case.\n\nThis commit removes warning message and flag setting from\next4_issue_discard and use it just in place where it is really needed\n(release_blocks_on_commit). FITRIM ioctl should not set any flags nor it\nshould print out warning messages, so get rid of the warning as well.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\n"
    },
    {
      "commit": "4f531501e44206862735e81ddf2b70d0dcf6acf6",
      "tree": "599648348e58760361dc4903e346a5f3f24175c0",
      "parents": [
        "b72143ab3ed566a12560fa4411a1f02c276dcc39"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Mon Jan 10 12:04:55 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 10 12:04:55 2011 -0500"
      },
      "message": "ext4: fix possible overflow in ext4_trim_fs()\n\nWhen determining last group through ext4_get_group_no_and_offset() the\nresult may be wrong in cases when range-\u003estart and range-len are too\nbig, because it may overflow when summing up those two numbers.\n\nFix that by checking range-\u003elen and limit its value to\next4_blocks_count(). This commit was tested by myself with expected\nresult.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\n"
    },
    {
      "commit": "73598611ade7c85f0c3d52ba5130103f6709c6d3",
      "tree": "51b54051c2b41cb712db0c47b9e595dafc09c8f3",
      "parents": [
        "1e1743ebe35ec7e3c1fa732408358fbc614cbbe5"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:00 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:30 2011 +1100"
      },
      "message": "ext2,3,4: provide simple rcu-walk ACL implementation\n\nThis simple implementation just checks for no ACLs on the inode, and\nif so, then the rcu-walk may proceed, otherwise fail it.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b74c79e99389cd79b31fcc08f82c24e492e63c7e",
      "tree": "763c6b412517306670bc625e90035f2d16bb739f",
      "parents": [
        "34286d6662308d82aed891852d04c7c3a2649b16"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:58 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: provide rcu-walk aware permission i_ops\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9",
      "tree": "203e0f73883e4c26b5597e36042386a1237dab35",
      "parents": [
        "77812a1ef139d84270d27faacc0630c887411013"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:49 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: icache RCU free inodes\n\nRCU free the struct inode. This will allow:\n\n- Subsequent store-free path walking patch. The inode must be consulted for\n  permissions when walking, so an RCU inode reference is a must.\n- sb_inode_list_lock to be moved inside i_lock because sb list walkers who want\n  to take i_lock no longer need to take sb_inode_list_lock to walk the list in\n  the first place. This will simplify and optimize locking.\n- Could remove some nested trylock loops in dcache code\n- Could potentially simplify things a bit in VM land. Do not need to take the\n  page lock to follow page-\u003emapping.\n\nThe downsides of this is the performance cost of using RCU. In a simple\ncreat/unlink microbenchmark, performance drops by about 10% due to inability to\nreuse cache-hot slab objects. As iterations increase and RCU freeing starts\nkicking over, this increases to about 20%.\n\nIn cases where inode lifetimes are longer (ie. many inodes may be allocated\nduring the average life span of a single inode), a lot of this cache reuse is\nnot applicable, so the regression caused by this patch is smaller.\n\nThe cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,\nhowever this adds some complexity to list walking and store-free path walking,\nso I prefer to implement this at a later date, if it is shown to be a win in\nreal situations. I haven\u0027t found a regression in any non-micro benchmark so I\ndoubt it will be a problem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "8a7411a24350bac141271755c66f40c56b0535ae",
      "tree": "ed77dcde1fe4122f291c6fda3def7e776fa8bdf8",
      "parents": [
        "b0c3844d8af6b9f3f18f31e1b0502fbefa2166be"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Dec 20 22:30:36 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Dec 23 15:00:54 2010 -0500"
      },
      "message": "ext4: fix on-line resizing regression\n\nhttps://bugzilla.kernel.org/show_bug.cgi?id\u003d25352\n\nThis regression was caused by commit a31437b85: \"ext4: use\nsb_issue_zeroout in setup_new_group_blocks\", by accidentally dropping\nthe code which reserved the block group descriptor and inode table\nblocks.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "4b7bd364700d9ac8372eff48832062b936d0793b",
      "tree": "0dbf78c95456a0b02d07fcd473281f04a87e266d",
      "parents": [
        "c0d8768af260e2cbb4bf659ae6094a262c86b085",
        "90a8a73c06cc32b609a880d48449d7083327e11a"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Dec 22 18:57:02 2010 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Dec 22 18:57:02 2010 +0100"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n\nConflicts:\n\tMAINTAINERS\n\tarch/arm/mach-omap2/pm24xx.c\n\tdrivers/scsi/bfa/bfa_fcpim.c\n\nNeeded to update to apply fixes for which the old branch was too\noutdated.\n"
    },
    {
      "commit": "b72143ab3ed566a12560fa4411a1f02c276dcc39",
      "tree": "8a4ad3ee044ca2c398fc769973bebfa0b721fca6",
      "parents": [
        "0ff2ea7d84e31176a046a1eabea59d6e4eecd998"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Dec 20 07:26:59 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Dec 20 07:26:59 2010 -0500"
      },
      "message": "ext4: Add error checking to kmem_cache_alloc() call in ext4_free_blocks()\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0ff2ea7d84e31176a046a1eabea59d6e4eecd998",
      "tree": "6aafc9e97bc6fc15923039d0039c8acfd6311722",
      "parents": [
        "94de56ab2062be59d80e2efb7c0dc60ecf616075"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Sun Dec 19 22:43:19 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Dec 19 22:43:19 2010 -0500"
      },
      "message": "ext4: Use printf extension %pV\n\nUsing %pV reduces the number of printk calls and eliminates any\npossible message interleaving from other printk calls.\n\nIn function __ext4_grp_locked_error also added KERN_CONT to some\nprintks.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "94de56ab2062be59d80e2efb7c0dc60ecf616075",
      "tree": "ec2049ff864708b04fd1d109af0b28cd288884c5",
      "parents": [
        "af0b44a1970fed1cda31d2969c99c46ffc515160"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Sun Dec 19 22:21:02 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Dec 19 22:21:02 2010 -0500"
      },
      "message": "ext4: Use vzalloc in ext4_fill_flex_info()\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "af0b44a1970fed1cda31d2969c99c46ffc515160",
      "tree": "b382d80df604c0bbd61836c13ae0b6f3020728e5",
      "parents": [
        "cad3f00763dcf9dfc62cbddf4bd714ab5a71a0eb"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Sun Dec 19 22:10:31 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Dec 19 22:10:31 2010 -0500"
      },
      "message": "ext4: zero out nanosecond timestamps for small inodes\n\nWhen nanosecond timestamp resolution isn\u0027t supported on an ext4\npartition (inode size \u003d 128), stat() appears to be returning\nuninitialized garbage in the nanosecond component of timestamps.\n\nEXT4_INODE_GET_XTIME should zero out tv_nsec when EXT4_FITS_IN_INODE\nevaluates to false.\n\nReported-by: Jordan Russell \u003cjr-list-2010@quo.to\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "cad3f00763dcf9dfc62cbddf4bd714ab5a71a0eb",
      "tree": "02ec7c4959f5506f0b2fe128b1318e257ee6f0e4",
      "parents": [
        "b17b35ec13adfeb0346d4b329110b14adc509327"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Dec 19 22:07:02 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Dec 19 22:07:02 2010 -0500"
      },
      "message": "ext4: optimize ext4_check_dir_entry() with unlikely() annotations\n\nThis function gets called a lot for large directories, and the answer\nis almost always \"no, no, there\u0027s no problem\".  This means using\nunlikely() is a good thing.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b17b35ec13adfeb0346d4b329110b14adc509327",
      "tree": "4780d5dfb23a7c01a438f3680709ac1b849eabb1",
      "parents": [
        "6ca7b13dea385484e2fcc89790b8030697c5014a"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Sun Dec 19 21:41:55 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Dec 19 21:41:55 2010 -0500"
      },
      "message": "ext4: use kmem_cache_zalloc() in ext4_init_io_end()\n\nUse advantage of kmem_cache_zalloc() to remove a memset() call in\next4_init_io_end() and save a few bytes.\n\nBefore:\n [jj@dragon linux-2.6]$ size fs/ext4/page-io.o\n    text    data     bss     dec     hex filename\n    3016       0     624    3640     e38 fs/ext4/page-io.o\nAfter:\n [jj@dragon linux-2.6]$ size fs/ext4/page-io.o\n    text    data     bss     dec     hex filename\n    3000       0     624    3624     e28 fs/ext4/page-io.o\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "6ca7b13dea385484e2fcc89790b8030697c5014a",
      "tree": "5dd8c1e46de01e91459c8a92e01274f598904769",
      "parents": [
        "b7271b0a39947f757d7969f6150dcb16c1976b91"
      ],
      "author": {
        "name": "Tobias Klauser",
        "email": "tklauser@distanz.ch",
        "time": "Sun Dec 19 21:38:46 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Dec 19 21:38:46 2010 -0500"
      },
      "message": "ext4: Remove redundant unlikely()\n\nIS_ERR() already implies unlikely(), so it can be omitted here.\n\nSigned-off-by: Tobias Klauser \u003ctklauser@distanz.ch\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a8901d34872dafcafa23efa0865dcecfd4fddf8c",
      "tree": "e593fa23bd961b693440966f84e421c5d7a2b5f4",
      "parents": [
        "225db7d35c33f076115a583abec238a696f4467e"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Dec 17 10:40:47 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Dec 17 10:40:47 2010 -0500"
      },
      "message": "ext4: Use pr_warning_ratelimited() instead of printk_ratelimit()\n\nprintk_ratelimit() is deprecated since it is a global instead of a\nper-printk ratelimit.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "225db7d35c33f076115a583abec238a696f4467e",
      "tree": "d31fbe96f045d734b0c6cbf4b85afc1ba25d458e",
      "parents": [
        "a2595b8aa67011419dae26b47e474f46df902989"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Dec 16 16:38:26 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Dec 16 16:38:26 2010 -0500"
      },
      "message": "ext4: Fix up comments in inode.c\n\nThis fixes up some broken argument descriptions that Namhyung Kim had\noriginally submitted for ext3.  This fixes the comments that were\nstill applicable in ext4.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a2595b8aa67011419dae26b47e474f46df902989",
      "tree": "d44d79256f92f32b7958a04e89907f7e1a755767",
      "parents": [
        "673c610033a8202c037ecd068c7a235495acda17"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 15 20:30:48 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 15 20:30:48 2010 -0500"
      },
      "message": "ext4: Add second mount options field since the s_mount_opt is full up\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "673c610033a8202c037ecd068c7a235495acda17",
      "tree": "e47ca541bf33f1d43d4ced9b72d6100853896236",
      "parents": [
        "fd8c37eccdda21153298997417144b38b1623196"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 15 20:28:48 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 15 20:28:48 2010 -0500"
      },
      "message": "ext4: Move struct ext4_mount_options from ext4.h to super.c\n\nMove the ext4_mount_options structure definition from ext4.h, since it\nis only used in super.c.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "fd8c37eccdda21153298997417144b38b1623196",
      "tree": "313e022d9d82f890e728dce66ce6e115ea3970b1",
      "parents": [
        "b0c3844d8af6b9f3f18f31e1b0502fbefa2166be"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 15 20:26:48 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 15 20:26:48 2010 -0500"
      },
      "message": "ext4: Simplify the usage of clear_opt() and set_opt() macros\n\nChange clear_opt() and set_opt() to take a superblock pointer instead\nof a pointer to EXT4_SB(sb)-\u003es_mount_opt.  This makes it easier for us\nto support a second mount option field.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "6d5c3aa84b3e431f2d0fc39c73c867d1a4dd8cff",
      "tree": "d03a2ddc636597d96e9333dd79bae22314564e67",
      "parents": [
        "1449032be17abb69116dbc393f67ceb8bd034f92"
      ],
      "author": {
        "name": "Aaro Koskinen",
        "email": "aaro.koskinen@nokia.com",
        "time": "Tue Dec 14 21:45:31 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 14 21:45:31 2010 -0500"
      },
      "message": "ext4: fix typo which broke \u0027..\u0027 detection in ext4_find_entry()\n\nThere should be a check for the NUL character instead of \u00270\u0027.\n\nFortunately the only thing that cares about this is NFS serving, which\nis why we didn\u0027t notice this in the merge window testing.\n\nReported-by: Phil Carmody \u003cext-phil.2.carmody@nokia.com\u003e\nSigned-off-by: Aaro Koskinen \u003caaro.koskinen@nokia.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1449032be17abb69116dbc393f67ceb8bd034f92",
      "tree": "f62757457241c2fdc14105afc12cb2718f7a2e68",
      "parents": [
        "e8a7e48bb248a1196484d3f8afa53bded2b24e71"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 14 15:27:50 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Dec 14 15:27:50 2010 -0500"
      },
      "message": "ext4: Turn off multiple page-io submission by default\n\nJon Nelson has found a test case which causes postgresql to fail with\nthe error:\n\npsql:t.sql:4: ERROR: invalid page header in block 38269 of relation base/16384/16581\n\nUnder memory pressure, it looks like part of a file can end up getting\nreplaced by zero\u0027s.  Until we can figure out the cause, we\u0027ll roll\nback the change and use block_write_full_page() instead of\next4_bio_write_page().  The new, more efficient writing function can\nbe used via the mount option mblk_io_submit, so we can test and fix\nthe new page I/O code.\n\nTo reproduce the problem, install postgres 8.4 or 9.0, and pin enough\nmemory such that the system just at the end of triggering writeback\nbefore running the following sql script:\n\nbegin;\ncreate temporary table foo as select x as a, ARRAY[x] as b FROM\ngenerate_series(1, 10000000 ) AS x;\ncreate index foo_a_idx on foo (a);\ncreate index foo_b_idx on foo USING GIN (b);\nrollback;\n\nIf the temporary table is created on a hard drive partition which is\nencrypted using dm_crypt, then under memory pressure, approximately\n30-40% of the time, pgsql will issue the above failure.\n\nThis patch should fix this problem, and the problem will come back if\nthe file system is mounted with the mblk_io_submit mount option.\n\nReported-by: Jon Nelson \u003cjnelson@jamponi.net\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e681c047e47c0abe67bf95857f23814372793cb0",
      "tree": "b82d1e75d2b7774c05e0c224464286c570d5d624",
      "parents": [
        "93bb41f4f8b89ac8b4d0a734bc59634cb0a29a89"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Fri Nov 19 21:47:07 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Nov 19 21:47:07 2010 -0500"
      },
      "message": "ext4: Add EXT4_IOC_TRIM ioctl to handle batched discard\n\nFilesystem independent ioctl was rejected as not common enough to be in\ncore vfs ioctl. Since we still need to access to this functionality this\ncommit adds ext4 specific ioctl EXT4_IOC_TRIM to dispatch\next4_trim_fs().\n\nIt takes fstrim_range structure as an argument. fstrim_range is definec in\nthe include/linux/fs.h and its definition is as follows.\n\nstruct fstrim_range {\n\t__u64 start;\n\t__u64 len;\n\t__u64 minlen;\n}\n\nstart\t- first Byte to trim\nlen\t- number of Bytes to trim from start\nminlen\t- minimum extent length to trim, free extents shorter than this\n  number of Bytes will be ignored. This will be rounded up to fs\n  block size.\n\nAfter the FITRIM is done, the number of actually discarded Bytes is stored\nin fstrim_range.len to give the user better insight on how much storage\nspace has been really released for wear-leveling.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "93bb41f4f8b89ac8b4d0a734bc59634cb0a29a89",
      "tree": "16ed3163dbbdb5b46ed0f3a12d059b4c2c467e95",
      "parents": [
        "5a9ae68a349aa076bc8557ee2fcf865574459282"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Fri Nov 19 21:18:35 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Nov 19 21:18:35 2010 -0500"
      },
      "message": "fs: Do not dispatch FITRIM through separate super_operation\n\nThere was concern that FITRIM ioctl is not common enough to be included\nin core vfs ioctl, as Christoph Hellwig pointed out there\u0027s no real point\nin dispatching this out to a separate vector instead of just through\n-\u003eioctl.\n\nSo this commit removes ioctl_fstrim() from vfs ioctl and trim_fs\nfrom super_operation structure.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5a9ae68a349aa076bc8557ee2fcf865574459282",
      "tree": "484c26f74f13a0c5962ac634c90462d98dea8e1a",
      "parents": [
        "0587aa3d11f9769a301b21bff2c3ed8365606b8d"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Fri Nov 19 09:56:44 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Nov 19 09:56:44 2010 -0500"
      },
      "message": "ext4: ext4_fill_super shouldn\u0027t return 0 on corruption\n\nAt the start of ext4_fill_super, ret is set to -EINVAL, and any failure path\nout of that function returns ret.  However, the generic_check_addressable\nclause sets ret \u003d 0 (if it passes), which means that a subsequent failure (e.g.\na group checksum error) returns 0 even though the mount should fail.  This\ncauses vfs_kern_mount in turn to think that the mount succeeded, leading to an\noops.\n\nA simple fix is to avoid using ret for the generic_check_addressable check,\nwhich was last changed in commit 30ca22c70e3ef0a96ff84de69cd7e8561b416cb2.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f4c8cc652d9f70680dd91be60a7a455040d0a282",
      "tree": "15464ab1cfa63b2e7b7c83006aa09e605aa7099a",
      "parents": [
        "08da1193d2c8c7a25d0cef7f85d0b9f1ad7c583a"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Wed Nov 17 21:46:25 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Nov 17 21:46:25 2010 -0500"
      },
      "message": "ext4: missing unlock in ext4_clear_request_list()\n\nIf the the li_request_list was empty then it returned with the lock\nheld.  Instead of adding a \"goto unlock\" I just removed that special\ncase and let it go past the empty list_for_each_safe().\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "08da1193d2c8c7a25d0cef7f85d0b9f1ad7c583a",
      "tree": "5a288945b73bc0ea79ca26e556f8061b51a85c1d",
      "parents": [
        "e53beacd23d9cb47590da6a7a7f6d417b941a994"
      ],
      "author": {
        "name": "Markus Trippelsdorf",
        "email": "markus@trippelsdorf.de",
        "time": "Wed Nov 17 21:46:06 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Nov 17 21:46:06 2010 -0500"
      },
      "message": "ext4: fix setting random pages PageUptodate\n\next4_end_bio calls put_page and kmem_cache_free before calling\nSetPageUpdate(). This can result in setting the PageUptodate bit on\nrandom pages and causes the following BUG:\n\n BUG: Bad page state in process rm  pfn:52e54\n page:ffffea0001222260 count:0 mapcount:0 mapping:          (null) index:0x0\n arch kernel: page flags: 0x4000000000000008(uptodate)\n\nFix the problem by moving put_io_page() after the SetPageUpdate() call.\n\nThanks to Hugh Dickins for analyzing this problem.\n\nReported-by: Markus Trippelsdorf \u003cmarkus@trippelsdorf.de\u003e\nTested-by: Markus Trippelsdorf \u003cmarkus@trippelsdorf.de\u003e\nSigned-off-by: Markus Trippelsdorf \u003cmarkus@trippelsdorf.de\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "380cf090f4f531545b558b04a3dd90d09df52ee9",
      "tree": "3ae833651a2c6f20b4a033ebcf66fce32a735bfe",
      "parents": [
        "149d730fac715e077a8bcceb4b27f3523b314558"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Thu Nov 11 19:23:29 2010 +0800"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Nov 15 14:14:52 2010 +0100"
      },
      "message": "ext4: fix redirty_page_for_writepage() typo in comment\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "d4d77629953eabd3c14f6fa5746f6b28babfc55f",
      "tree": "38cce0d4764ecb34a9f7f49332959780e28bb786",
      "parents": [
        "75f1dc0d076d1c1168f2115f1941ea627d38bd5a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:18 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:18 2010 +0100"
      },
      "message": "block: clean up blkdev_get() wrappers and their users\n\nAfter recent blkdev_get() modifications, open_by_devnum() and\nopen_bdev_exclusive() are simple wrappers around blkdev_get().\nReplace them with blkdev_get_by_dev() and blkdev_get_by_path().\n\nblkdev_get_by_dev() is identical to open_by_devnum().\nblkdev_get_by_path() is slightly different in that it doesn\u0027t\nautomatically add %FMODE_EXCL to @mode.\n\nAll users are converted.  Most conversions are mechanical and don\u0027t\nintroduce any behavior difference.  There are several exceptions.\n\n* btrfs now sets FMODE_EXCL in btrfs_device-\u003emode, so there\u0027s no\n  reason to OR it explicitly on blkdev_put().\n\n* gfs2, nilfs2 and the generic mount_bdev() now set FMODE_EXCL in\n  sb-\u003es_mode.\n\n* With the above changes, sb-\u003es_mode now always should contain\n  FMODE_EXCL.  WARN_ON_ONCE() added to kill_block_super() to detect\n  errors.\n\nThe new blkdev_get_*() functions are with proper docbook comments.\nWhile at it, add function description to blkdev_get() too.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: Joern Engel \u003cjoern@lazybastard.org\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: KONISHI Ryusuke \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: reiserfs-devel@vger.kernel.org\nCc: xfs-masters@oss.sgi.com\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e525fd89d380c4a94c0d63913a1dd1a593ed25e7",
      "tree": "d226ef40d3f99e42fcf272ad432585cbd641ebec",
      "parents": [
        "e09b457bdb7e8d23fc54dcef0930ac697d8de895"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "message": "block: make blkdev_get/put() handle exclusive access\n\nOver time, block layer has accumulated a set of APIs dealing with bdev\nopen, close, claim and release.\n\n* blkdev_get/put() are the primary open and close functions.\n\n* bd_claim/release() deal with exclusive open.\n\n* open/close_bdev_exclusive() are combination of open and claim and\n  the other way around, respectively.\n\n* bd_link/unlink_disk_holder() to create and remove holder/slave\n  symlinks.\n\n* open_by_devnum() wraps bdget() + blkdev_get().\n\nThe interface is a bit confusing and the decoupling of open and claim\nmakes it impossible to properly guarantee exclusive access as\nin-kernel open + claim sequence can disturb the existing exclusive\nopen even before the block layer knows the current open if for another\nexclusive access.  Reorganize the interface such that,\n\n* blkdev_get() is extended to include exclusive access management.\n  @holder argument is added and, if is @FMODE_EXCL specified, it will\n  gain exclusive access atomically w.r.t. other exclusive accesses.\n\n* blkdev_put() is similarly extended.  It now takes @mode argument and\n  if @FMODE_EXCL is set, it releases an exclusive access.  Also, when\n  the last exclusive claim is released, the holder/slave symlinks are\n  removed automatically.\n\n* bd_claim/release() and close_bdev_exclusive() are no longer\n  necessary and either made static or removed.\n\n* bd_link_disk_holder() remains the same but bd_unlink_disk_holder()\n  is no longer necessary and removed.\n\n* open_bdev_exclusive() becomes a simple wrapper around lookup_bdev()\n  and blkdev_get().  It also has an unexpected extra bdev_read_only()\n  test which probably should be moved into blkdev_get().\n\n* open_by_devnum() is modified to take @holder argument and pass it to\n  blkdev_get().\n\nMost of bdev open/close operations are unified into blkdev_get/put()\nand most exclusive accesses are tested atomically at the open time (as\nit should).  This cleans up code and removes some, both valid and\ninvalid, but unnecessary all the same, corner cases.\n\nopen_bdev_exclusive() and open_by_devnum() can use further cleanup -\nrename to blkdev_get_by_path() and blkdev_get_by_devt() and drop\nspecial features.  Well, let\u0027s leave them for another day.\n\nMost conversions are straight-forward.  drbd conversion is a bit more\ninvolved as there was some reordering, but the logic should stay the\nsame.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nCc: Peter Osterlund \u003cpetero2@telia.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Andreas Dilger \u003cadilger.kernel@dilger.ca\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: dm-devel@redhat.com\nCc: drbd-dev@lists.linbit.com\nCc: Leo Chen \u003cleochen@broadcom.com\u003e\nCc: Scott Branden \u003csbranden@broadcom.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nCc: Joern Engel \u003cjoern@logfs.org\u003e\nCc: reiserfs-devel@vger.kernel.org\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a7bcf21e60c73cb7f7c13fad928967d7e47c3cac",
      "tree": "e24ae9d2c35508f68016b8cde848b7608e737b32",
      "parents": [
        "5398a64c63a69a0ac33dbae458ea4aab0dc23f14",
        "7ff9c073dd4d7200399076554f7ab9b876f196f6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 08 11:54:53 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 08 11:54:53 2010 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:\n  ext4: Add new ext4 inode tracepoints\n  ext4: Don\u0027t call sb_issue_discard() in ext4_free_blocks()\n  ext4: do not try to grab the s_umount semaphore in ext4_quota_off\n  ext4: fix potential race when freeing ext4_io_page structures\n  ext4: handle writeback of inodes which are being freed\n  ext4: initialize the percpu counters before replaying the journal\n  ext4: \"ret\" may be used uninitialized in ext4_lazyinit_thread()\n  ext4: fix lazyinit hang after removing request\n"
    },
    {
      "commit": "7ff9c073dd4d7200399076554f7ab9b876f196f6",
      "tree": "6ca4eb4ca9b2f6f7b11e8197bd8a9417d7307b00",
      "parents": [
        "b56ff9d397cecdaad6c98c9d57cc6fea475e1f50"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 08 13:51:33 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 08 13:51:33 2010 -0500"
      },
      "message": "ext4: Add new ext4 inode tracepoints\n\nAdd ext4_evict_inode, ext4_drop_inode, ext4_mark_inode_dirty, and\next4_begin_ordered_truncate()\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b56ff9d397cecdaad6c98c9d57cc6fea475e1f50",
      "tree": "659c007ed6a4d4e389b164d0b63f8f4ba8be0b08",
      "parents": [
        "87009d86dc045d228e21242467a67a5f99347553"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 08 13:49:33 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 08 13:49:33 2010 -0500"
      },
      "message": "ext4: Don\u0027t call sb_issue_discard() in ext4_free_blocks()\n\nCommit 5c521830cf (ext4: Support discard requests when running in\nno-journal mode) attempts to add sb_issue_discard() for data blocks\n(in data\u003dwriteback mode) and in no-journal mode.  Unfortunately, this\nno longer works, because in commit dd3932eddf (block: remove\nBLKDEV_IFL_WAIT), sb_issue_discard() only presents a synchronous\ninterface, and there are times when we call ext4_free_blocks() when we\nare are holding a spinlock, or are otherwise in an atomic context.\n\nFor now, I\u0027ve removed the call to sb_issue_discard() to prevent a\ndeadlock or (if spinlock debugging is enabled) failures like this:\n\nBUG: scheduling while atomic: rc.sysinit/1376/0x00000002\nPid: 1376, comm: rc.sysinit Not tainted 2.6.36-ARCH #1\nCall Trace:\n[\u003cffffffff810397ce\u003e] __schedule_bug+0x5e/0x70\n[\u003cffffffff81403110\u003e] schedule+0x950/0xa70\n[\u003cffffffff81060bad\u003e] ? insert_work+0x7d/0x90\n[\u003cffffffff81060fbd\u003e] ? queue_work_on+0x1d/0x30\n[\u003cffffffff81061127\u003e] ? queue_work+0x37/0x60\n[\u003cffffffff8140377d\u003e] schedule_timeout+0x21d/0x360\n[\u003cffffffff812031c3\u003e] ? generic_make_request+0x2c3/0x540\n[\u003cffffffff81402680\u003e] wait_for_common+0xc0/0x150\n[\u003cffffffff81041490\u003e] ? default_wake_function+0x0/0x10\n[\u003cffffffff812034bc\u003e] ? submit_bio+0x7c/0x100\n[\u003cffffffff810680a0\u003e] ? wake_bit_function+0x0/0x40\n[\u003cffffffff814027b8\u003e] wait_for_completion+0x18/0x20\n[\u003cffffffff8120a969\u003e] blkdev_issue_discard+0x1b9/0x210\n[\u003cffffffff811ba03e\u003e] ext4_free_blocks+0x68e/0xb60\n[\u003cffffffff811b1650\u003e] ? __ext4_handle_dirty_metadata+0x110/0x120\n[\u003cffffffff811b098c\u003e] ext4_ext_truncate+0x8cc/0xa70\n[\u003cffffffff810d713e\u003e] ? pagevec_lookup+0x1e/0x30\n[\u003cffffffff81191618\u003e] ext4_truncate+0x178/0x5d0\n[\u003cffffffff810eacbb\u003e] ? unmap_mapping_range+0xab/0x280\n[\u003cffffffff810d8976\u003e] vmtruncate+0x56/0x70\n[\u003cffffffff811925cb\u003e] ext4_setattr+0x14b/0x460\n[\u003cffffffff811319e4\u003e] notify_change+0x194/0x380\n[\u003cffffffff81117f80\u003e] do_truncate+0x60/0x90\n[\u003cffffffff811e08fa\u003e] ? security_inode_permission+0x1a/0x20\n[\u003cffffffff811eaec1\u003e] ? tomoyo_path_truncate+0x11/0x20\n[\u003cffffffff81127539\u003e] do_last+0x5d9/0x770\n[\u003cffffffff811278bd\u003e] do_filp_open+0x1ed/0x680\n[\u003cffffffff8140644f\u003e] ? page_fault+0x1f/0x30\n[\u003cffffffff81132bfc\u003e] ? alloc_fd+0xec/0x140\n[\u003cffffffff81118db1\u003e] do_sys_open+0x61/0x120\n[\u003cffffffff81118e8b\u003e] sys_open+0x1b/0x20\n[\u003cffffffff81002e6b\u003e] system_call_fastpath+0x16/0x1b\n\nhttps://bugzilla.kernel.org/show_bug.cgi?id\u003d22302\n\nReported-by: Mathias Burén \u003cmathias.buren@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: jiayingz@google.com\n"
    },
    {
      "commit": "87009d86dc045d228e21242467a67a5f99347553",
      "tree": "2c24052844da18e7a736680b5af9ea97581cebd0",
      "parents": [
        "83668e7141c7a0aa4035bde94344b81f9cf966ab"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Mon Nov 08 13:47:33 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 08 13:47:33 2010 -0500"
      },
      "message": "ext4: do not try to grab the s_umount semaphore in ext4_quota_off\n\nIt\u0027s not needed to sync the filesystem, and it fixes a lock_dep complaint.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\n\n"
    },
    {
      "commit": "83668e7141c7a0aa4035bde94344b81f9cf966ab",
      "tree": "34d9fd52470b475d6e9d88ece8ca1ba80bf85a42",
      "parents": [
        "f7ad6d2e9201a6e1c9ee6530a291452eb695feb8"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 08 13:45:33 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 08 13:45:33 2010 -0500"
      },
      "message": "ext4: fix potential race when freeing ext4_io_page structures\n\nUse an atomic_t and make sure we don\u0027t free the structure while we\nmight still be submitting I/O for that page.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f7ad6d2e9201a6e1c9ee6530a291452eb695feb8",
      "tree": "006cdcfd487404fb61986e3030d96cb33866755d",
      "parents": [
        "ce7e010aef63dc6b37a2354f7c9f5f4aedb37978"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 08 13:43:33 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Nov 08 13:43:33 2010 -0500"
      },
      "message": "ext4: handle writeback of inodes which are being freed\n\nThe following BUG can occur when an inode which is getting freed when\nit still has dirty pages outstanding, and it gets deleted (in this\nbecause it was the target of a rename).  In ordered mode, we need to\nmake sure the data pages are written just in case we crash before the\nrename (or unlink) is committed.  If the inode is being freed then\nwhen we try to igrab the inode, we end up tripping the BUG_ON at\nfs/ext4/page-io.c:146.\n\nTo solve this problem, we need to keep track of the number of io\ncallbacks which are pending, and avoid destroying the inode until they\nhave all been completed.  That way we don\u0027t have to bump the inode\ncount to keep the inode from being destroyed; an approach which\ndoesn\u0027t work because the count could have already been dropped down to\nzero before the inode writeback has started (at which point we\u0027re not\nallowed to bump the count back up to 1, since it\u0027s already started\ngetting freed).\n\nThanks to Dave Chinner for suggesting this approach, which is also\nused by XFS.\n\n  kernel BUG at /scratch_space/linux-2.6/fs/ext4/page-io.c:146!\n  Call Trace:\n   [\u003cffffffff811075b1\u003e] ext4_bio_write_page+0x172/0x307\n   [\u003cffffffff811033a7\u003e] mpage_da_submit_io+0x2f9/0x37b\n   [\u003cffffffff811068d7\u003e] mpage_da_map_and_submit+0x2cc/0x2e2\n   [\u003cffffffff811069b3\u003e] mpage_add_bh_to_extent+0xc6/0xd5\n   [\u003cffffffff81106c66\u003e] write_cache_pages_da+0x2a4/0x3ac\n   [\u003cffffffff81107044\u003e] ext4_da_writepages+0x2d6/0x44d\n   [\u003cffffffff81087910\u003e] do_writepages+0x1c/0x25\n   [\u003cffffffff810810a4\u003e] __filemap_fdatawrite_range+0x4b/0x4d\n   [\u003cffffffff810815f5\u003e] filemap_fdatawrite_range+0xe/0x10\n   [\u003cffffffff81122a2e\u003e] jbd2_journal_begin_ordered_truncate+0x7b/0xa2\n   [\u003cffffffff8110615d\u003e] ext4_evict_inode+0x57/0x24c\n   [\u003cffffffff810c14a3\u003e] evict+0x22/0x92\n   [\u003cffffffff810c1a3d\u003e] iput+0x212/0x249\n   [\u003cffffffff810bdf16\u003e] dentry_iput+0xa1/0xb9\n   [\u003cffffffff810bdf6b\u003e] d_kill+0x3d/0x5d\n   [\u003cffffffff810be613\u003e] dput+0x13a/0x147\n   [\u003cffffffff810b990d\u003e] sys_renameat+0x1b5/0x258\n   [\u003cffffffff81145f71\u003e] ? _atomic_dec_and_lock+0x2d/0x4c\n   [\u003cffffffff810b2950\u003e] ? cp_new_stat+0xde/0xea\n   [\u003cffffffff810b29c1\u003e] ? sys_newlstat+0x2d/0x38\n   [\u003cffffffff810b99c6\u003e] sys_rename+0x16/0x18\n   [\u003cffffffff81002a2b\u003e] system_call_fastpath+0x16/0x1b\n\nReported-by: Nick Bowler \u003cnbowler@elliptictech.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nTested-by: Nick Bowler \u003cnbowler@elliptictech.com\u003e\n"
    },
    {
      "commit": "ce7e010aef63dc6b37a2354f7c9f5f4aedb37978",
      "tree": "458ee0c4887e989522e62701350edf9571dfce48",
      "parents": [
        "b2c78cd09b6ef78c8f20190f0b3e6df1d3651b70"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Nov 03 12:03:21 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Nov 03 12:03:21 2010 -0400"
      },
      "message": "ext4: initialize the percpu counters before replaying the journal\n\nWe now initialize the percpu counters before replaying the journal,\nbut after the journal, we recalculate the global counters, to deal\nwith the possibility of the per-blockgroup counts getting updated by\nthe journal replay.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b2c78cd09b6ef78c8f20190f0b3e6df1d3651b70",
      "tree": "d137e42bb765f5ea2b9bf9692ab7f965422447ec",
      "parents": [
        "f4245bd4ebf903541ba758ad06c118626d8c6f18"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 02 14:19:30 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 02 14:19:30 2010 -0400"
      },
      "message": "ext4: \"ret\" may be used uninitialized in ext4_lazyinit_thread()\n\nNewer GCC\u0027s reported the following build warning:\n\n   fs/ext4/super.c: In function \u0027ext4_lazyinit_thread\u0027:\n   fs/ext4/super.c:2702: warning: \u0027ret\u0027 may be used uninitialized in this function\n\nFix it by removing the need for the ret variable in the first place.\n\nSigned-off-by: \"Lukas Czerner\" \u003clczerner@redhat.com\u003e\nReported-by: \"Stefan Richter\" \u003cstefanr@s5r6.in-berlin.de\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f4245bd4ebf903541ba758ad06c118626d8c6f18",
      "tree": "a599839d8d3ed672d147036b885d4fec548adf65",
      "parents": [
        "c8ddb2713c624f432fa5fe3c7ecffcdda46ea0d4"
      ],
      "author": {
        "name": "Lukas Czerner",
        "email": "lczerner@redhat.com",
        "time": "Tue Nov 02 14:07:17 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 02 14:07:17 2010 -0400"
      },
      "message": "ext4: fix lazyinit hang after removing request\n\nWhen the request has been removed from the list and no other request\nhas been issued, we will end up with next wakeup scheduled to\nMAX_JIFFY_OFFSET which is bad. So check for that.\n\nSigned-off-by: Lukas Czerner \u003clczerner@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "eb8abb927ae2fd1730e24ea94cd9527f3c086292",
      "tree": "e0ae72934040e8d840db503c311ac070d9850bc8",
      "parents": [
        "7fe19da4ca38fc20cdbc7020fcf2eca8fc756410"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 02 09:34:50 2010 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Nov 02 10:38:30 2010 -0400"
      },
      "message": "ext4: Remove useless spinlock in ext4_getattr()\n\nLinus noted, and complained to me, that doing while lots of \"git diff\"\u0027s\nof kernel sources, these spinlocks were responsible for 27% of the\nspinlock cost on his two-processor system as reported by perf.\n\nGit was doing lots of parallel stats, and this was putting a lot of\npressure on ext4_getattr().  A spinlock to protect a single\nmemory-to-memory copy is pointless, so remove it.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b595076a180a56d1bb170e6eceda6eb9d76f4cd3",
      "tree": "bc01ec7283808013e0b8ce7713fd6fc40f810429",
      "parents": [
        "6aaccece1c483f189f76f1282b3984ff4c7ecb0a"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "u.kleine-koenig@pengutronix.de",
        "time": "Mon Nov 01 15:38:34 2010 -0400"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Nov 01 15:38:34 2010 -0400"
      },
      "message": "tree-wide: fix comment/printk typos\n\n\"gadget\", \"through\", \"command\", \"maintain\", \"maintain\", \"controller\", \"address\",\n\"between\", \"initiali[zs]e\", \"instead\", \"function\", \"select\", \"already\",\n\"equal\", \"access\", \"management\", \"hierarchy\", \"registration\", \"interest\",\n\"relative\", \"memory\", \"offset\", \"already\",\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": "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"
    }
  ],
  "next": "7845c0497536c566bfef08db1a38ae1ad2c25464"
}
