)]}'
{
  "log": [
    {
      "commit": "6d0bf00512b3b1b5d09d9a44919983eec1cc6fd0",
      "tree": "4aef98bb3b212cc04f1dbb011548d83f9ab77c3e",
      "parents": [
        "45d7f32c7a43cbb9592886d38190e379e2eb2226"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 09 17:28:38 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 09 17:28:38 2010 -0400"
      },
      "message": "ext4: clean up compiler warning in start_this_handle()\n\nFix the compiler warning:\n\n  fs/jbd2/transaction.c: In function ‘start_this_handle’:\n  fs/jbd2/transaction.c:98: warning: unused variable ‘ts’\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "09dc942c2a767e2d298f1cc9294bc19c7d7208c5",
      "tree": "d310c118467c90c264e953bdc320ae08394c662a",
      "parents": [
        "90e0c225968f0878e090c7ff3f88323973476cee",
        "6c7a120ac6c62316ab1fc78dfc0a7b13f3bfcbff"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 13:03:53 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 13:03:53 2010 -0700"
      },
      "message": "Merge branch \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (40 commits)\n  ext4: Adding error check after calling ext4_mb_regular_allocator()\n  ext4: Fix dirtying of journalled buffers in data\u003djournal mode\n  ext4: re-inline ext4_rec_len_(to|from)_disk functions\n  jbd2: Remove t_handle_lock from start_this_handle()\n  jbd2: Change j_state_lock to be a rwlock_t\n  jbd2: Use atomic variables to avoid taking t_handle_lock in jbd2_journal_stop\n  ext4: Add mount options in superblock\n  ext4: force block allocation on quota_off\n  ext4: fix freeze deadlock under IO\n  ext4: drop inode from orphan list if ext4_delete_inode() fails\n  ext4: check to make make sure bd_dev is set before dereferencing it\n  jbd2: Make barrier messages less scary\n  ext4: don\u0027t print scary messages for allocation failures post-abort\n  ext4: fix EFBIG edge case when writing to large non-extent file\n  ext4: fix ext4_get_blocks references\n  ext4: Always journal quota file modifications\n  ext4: Fix potential memory leak in ext4_fill_super\n  ext4: Don\u0027t error out the fs if the user tries to make a file too big\n  ext4: allocate stripe-multiple IOs on stripe boundaries\n  ext4: move aio completion after unwritten extent conversion\n  ...\n\nFix up conflicts in fs/ext4/inode.c as per Ted.\n\nFix up xfs conflicts as per earlier xfs merge.\n"
    },
    {
      "commit": "8dd420466c7bfc459fa04680bd5690bfc41a4553",
      "tree": "6004eaaa7266979397a9d87e30066fc91d3650c3",
      "parents": [
        "a931da6ac9331a6c80dd91c199105806f2336188"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Aug 03 21:38:29 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Aug 03 21:38:29 2010 -0400"
      },
      "message": "jbd2: Remove t_handle_lock from start_this_handle()\n\nThis should remove the last exclusive lock from start_this_handle(),\nso that we should now be able to start multiple transactions at the\nsame time on large SMP systems.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a931da6ac9331a6c80dd91c199105806f2336188",
      "tree": "2d4ea766def9a98d21c2379f41e796b0e57ccd6b",
      "parents": [
        "a51dca9cd3bb4ec5a05bfb6feabf024a5c808a37"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Aug 03 21:35:12 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Aug 03 21:35:12 2010 -0400"
      },
      "message": "jbd2: Change j_state_lock to be a rwlock_t\n\nLockstat reports have shown that j_state_lock is a major source of\nlock contention, especially on systems with more than 4 CPU cores.  So\nchange it to be a read/write spinlock.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "a51dca9cd3bb4ec5a05bfb6feabf024a5c808a37",
      "tree": "31256b4fa3ec1d0e1e27196607499877c662ee86",
      "parents": [
        "8b67f04ab9de5d8f3a71aef72bf02c995a506db5"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 02 08:43:25 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 02 08:43:25 2010 -0400"
      },
      "message": "jbd2: Use atomic variables to avoid taking t_handle_lock in jbd2_journal_stop\n\nBy using an atomic_t for t_updates and t_outstanding credits, this\nshould allow us to not need to take transaction t_handle_lock in\njbd2_journal_stop().\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "47def82672b3ba4e7c5e9a4fe48a556f8684d0d6",
      "tree": "a0cfdaca8be99980c09d2b38ff676834c85ab2c4",
      "parents": [
        "40389687382bf0ae71458e7c0f828137a438a956"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:05 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jul 27 11:56:05 2010 -0400"
      },
      "message": "jbd2: Remove __GFP_NOFAIL from jbd2 layer\n\n__GFP_NOFAIL is going away, so add our own retry loop.  Also add\njbd2__journal_start() and jbd2__journal_restart() which take a gfp\nmask, so that file systems can optionally (re)start transaction\nhandles using GFP_KERNEL.  If they do this, then they need to be\nprepared to handle receiving an PTR_ERR(-ENOMEM) error, and be ready\nto reflect that error up to userspace.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "13ceef099edd2b70c5a6f3a9ef5d6d97cda2e096",
      "tree": "5d65c397e9e85abe11a6fb0ebf3a69e8a4e91e0d",
      "parents": [
        "a39953dd95ff10e311083d94f4f95c348cb22464"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Jul 14 07:56:33 2010 +0200"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Jul 15 15:17:47 2010 -0700"
      },
      "message": "jbd2/ocfs2: Fix block checksumming when a buffer is used in several transactions\n\nOCFS2 uses t_commit trigger to compute and store checksum of the just\ncommitted blocks. When a buffer has b_frozen_data, checksum is computed\nfor it instead of b_data but this can result in an old checksum being\nwritten to the filesystem in the following scenario:\n\n1) transaction1 is opened\n2) handle1 is opened\n3) journal_access(handle1, bh)\n    - This sets jh-\u003eb_transaction to transaction1\n4) modify(bh)\n5) journal_dirty(handle1, bh)\n6) handle1 is closed\n7) start committing transaction1, opening transaction2\n8) handle2 is opened\n9) journal_access(handle2, bh)\n    - This copies off b_frozen_data to make it safe for transaction1 to commit.\n      jh-\u003eb_next_transaction is set to transaction2.\n10) jbd2_journal_write_metadata() checksums b_frozen_data\n11) the journal correctly writes b_frozen_data to the disk journal\n12) handle2 is closed\n    - There was no dirty call for the bh on handle2, so it is never queued for\n      any more journal operation\n13) Checkpointing finally happens, and it just spools the bh via normal buffer\nwriteback.  This will write b_data, which was never triggered on and thus\ncontains a wrong (old) checksum.\n\nThis patch fixes the problem by calling the trigger at the moment data is\nfrozen for journal commit - i.e., either when b_frozen_data is created by\ndo_get_write_access or just before we write a buffer to the log if\nb_frozen_data does not exist. We also rename the trigger to t_frozen as\nthat better describes when it is called.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "c35a56a090eacefca07afeb994029b57d8dd8025",
      "tree": "2a42c07c270b07725d9798bc89bc9aa0aaf2c184",
      "parents": [
        "c445e3e0a5c2804524dec6e55f66d63f6bc5bc3e"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 16 05:00:00 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun May 16 05:00:00 2010 -0400"
      },
      "message": "jbd2: Improve scalability by not taking j_state_lock in jbd2_journal_stop()\n\nOne of the most contended locks in the jbd2 layer is j_state_lock when\nrunning dbench.  This is especially true if using the real-time kernel\nwith its \"sleeping spinlocks\" patch that replaces spinlocks with\npriority inheriting mutexes --- but it also shows up on large SMP\nbenchmarks.\n\nThanks to John Stultz for pointing this out.\n\nReviewed by Mingming Cao and Jan Kara.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "ba869023eac8354b17acdcff82b851ea8e7b1809",
      "tree": "c461ae44ed5f9fc45573c14c74548f3f50109547",
      "parents": [
        "aca92ff6f57c000d1b4523e383c8bd6b8269b8b1"
      ],
      "author": {
        "name": "dingdinghua",
        "email": "dingdinghua@nrchpc.ac.cn",
        "time": "Mon Feb 15 16:35:42 2010 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Feb 15 16:35:42 2010 -0500"
      },
      "message": "jbd2: delay discarding buffers in journal_unmap_buffer\n\nDelay discarding buffers in journal_unmap_buffer until\nwe know that \"add to orphan\" operation has definitely been\ncommitted, otherwise the log space of committing transation\nmay be freed and reused before truncate get committed, updates\nmay get lost if crash happens.\n\nSigned-off-by: dingdinghua \u003cdingdinghua@nrchpc.ac.cn\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "9599b0e597d810be9b8f759ea6e9619c4f983c5e",
      "tree": "101bb8b6987cc9c8dddaaac9e7e94e19bbc97f25",
      "parents": [
        "553f9008939638335836eec834f4dea310c17eae"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Aug 17 21:23:17 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 17 21:23:17 2009 -0400"
      },
      "message": "jbd2: Annotate transaction start also for jbd2_journal_restart()\n\nlockdep annotation for a transaction start has been at the end of\njbd2_journal_start(). But a transaction is also started from\njbd2_journal_restart(). Move the lockdep annotation to start_this_handle()\nwhich covers both cases.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "b1f485f20eb9b02cc7d2009556287f3939d480cc",
      "tree": "08406f7f1ea6ec37fce67e5e592c657a00084f3c",
      "parents": [
        "c333e073b7bf76dc819a6b4ce6bef88ee5fa5e50"
      ],
      "author": {
        "name": "Andreas Dilger",
        "email": "adilger@sun.com",
        "time": "Mon Aug 10 22:51:53 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 10 22:51:53 2009 -0400"
      },
      "message": "jbd2: round commit timer up to avoid uncommitted transaction\n\nfix jiffie rounding in jbd commit timer setup code.  Rounding down\ncould cause the timer to be fired before the corresponding transaction\nhas expired.  That transaction can stay not committed forever if no\nnew transaction is created or expicit sync/umount happens.\n\nSigned-off-by: Alex Zhuravlev (Tomas) \u003calex.zhuravlev@sun.com\u003e\nSigned-off-by: Andreas Dilger \u003cadilger@sun.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "f91d1d04171026e56c7e343ee3cdcc801dd85cfb",
      "tree": "282341868e06cb09ecd6c0838ea027feec514c2c",
      "parents": [
        "3e03f9ca6a2599db1823bb0ea24e0845219a0e69"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jul 13 16:16:20 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jul 13 16:16:20 2009 -0400"
      },
      "message": "jbd2: Fix a race between checkpointing code and journal_get_write_access()\n\nThe following race can happen:\n\n CPU1                          CPU2\n                               checkpointing code checks the buffer, adds\n                                 it to an array for writeback\n do_get_write_access()\n ...\n lock_buffer()\n unlock_buffer()\n                               flush_batch() submits the buffer for IO\n __jbd2_journal_file_buffer()\n\nSo a buffer under writeout is returned from\ndo_get_write_access(). Since the filesystem code relies on the fact\nthat journaled buffers cannot be written out, it does not take the\nbuffer lock and so it can modify buffer while it is under\nwriteout. That can lead to a filesystem corruption if we crash at the\nright moment.\n\nWe fix the problem by clearing the buffer dirty bit under buffer_lock\neven if the buffer is on BJ_None list. Actually, we clear the dirty\nbit regardless the list the buffer is in and warn about the fact if\nthe buffer is already journalled.\n\nThanks for spotting the problem goes to dingdinghua \u003cdingdinghua85@gmail.com\u003e.\n\nReported-by: dingdinghua \u003cdingdinghua85@gmail.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "536fc240e7147858255bdb08e7a999a3351a9fb4",
      "tree": "16bf7a9e1bf506c1944d1e2e13a18a2b3c9bab8f",
      "parents": [
        "4159175058987cb68aefd0e9eec2598b795363b4"
      ],
      "author": {
        "name": "Hisashi Hifumi",
        "email": "hifumi.hisashi@oss.ntt.co.jp",
        "time": "Wed Jun 17 20:08:51 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jun 17 20:08:51 2009 -0400"
      },
      "message": "jbd2: clean up jbd2_journal_try_to_free_buffers()\n\nThis patch reverts 3f31fddf, which is no longer needed because if a\nrace between freeing buffer and committing transaction functionality\noccurs and dio gets error, currently dio falls back to buffered IO due\nto the commit 6ccfa806.\n\nSigned-off-by: Hisashi Hifumi \u003chifumi.hisashi@oss.ntt.co.jp\u003e\nCc: Mingming Cao \u003ccmm@us.ibm.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7058548cd50e5bda8db086bb2e5c1d82f746d047",
      "tree": "acd095e9f13fcb10deab00e5da5c22d35fda646d",
      "parents": [
        "afd4672dc7610b7feef5190168aa917cc2e417e4"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 25 23:35:46 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Mar 25 23:35:46 2009 -0400"
      },
      "message": "ext4: Use WRITE_SYNC for commits which are caused by fsync()\n\nIf a commit is triggered by fsync(), set a flag indicating the journal\nblocks associated with the transaction should be flushed out using\nWRITE_SYNC.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "7f5aa215088b817add9c71914b83650bdd49f8a9",
      "tree": "9b811d1f0b41a2738fc68654ae605bf5d8cf2a72",
      "parents": [
        "9eddacf9e9c03578ef2c07c9534423e823d677f8"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Feb 10 11:15:34 2009 -0500"
      },
      "committer": {
        "name": "Theodore Tso",
        "email": "tytso@mit.edu",
        "time": "Tue Feb 10 11:15:34 2009 -0500"
      },
      "message": "jbd2: Avoid possible NULL dereference in jbd2_journal_begin_ordered_truncate()\n\nIf we race with commit code setting i_transaction to NULL, we could\npossibly dereference it.  Proper locking requires the journal pointer\n(to access journal-\u003ej_list_lock), which we don\u0027t have.  So we have to\nchange the prototype of the function so that filesystem passes us the\njournal pointer.  Also add a more detailed comment about why the\nfunction jbd2_journal_begin_ordered_truncate() does what it does and\nhow it should be used.\n\nThanks to Dan Carpenter \u003cerror27@gmail.com\u003e for pointing to the\nsuspitious code.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nAcked-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCC: linux-ext4@vger.kernel.org\nCC: ocfs2-devel@oss.oracle.com\nCC: mfasheh@suse.de\nCC: Dan Carpenter \u003cerror27@gmail.com\u003e\n"
    },
    {
      "commit": "2150edc6c5cf00f7adb54538b9ea2a3e9cedca3f",
      "tree": "f72a0d85e66f500b4cead348a231e3d3b9f357bc",
      "parents": [
        "cd764695b67386a81964f68e9c66efd9f13f4d29",
        "4b905671d2ea09fd48fed72c581df17e40823f39"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 17:14:59 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 17:14:59 2009 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (57 commits)\n  jbd2: Fix oops in jbd2_journal_init_inode() on corrupted fs\n  ext4: Remove \"extents\" mount option\n  block: Add Kconfig help which notes that ext4 needs CONFIG_LBD\n  ext4: Make printk\u0027s consistently prefixed with \"EXT4-fs: \"\n  ext4: Add sanity checks for the superblock before mounting the filesystem\n  ext4: Add mount option to set kjournald\u0027s I/O priority\n  jbd2: Submit writes to the journal using WRITE_SYNC\n  jbd2: Add pid and journal device name to the \"kjournald2 starting\" message\n  ext4: Add markers for better debuggability\n  ext4: Remove code to create the journal inode\n  ext4: provide function to release metadata pages under memory pressure\n  ext3: provide function to release metadata pages under memory pressure\n  add releasepage hooks to block devices which can be used by file systems\n  ext4: Fix s_dirty_blocks_counter if block allocation failed with nodelalloc\n  ext4: Init the complete page while building buddy cache\n  ext4: Don\u0027t allow new groups to be added during block allocation\n  ext4: mark the blocks/inode bitmap beyond end of group as used\n  ext4: Use new buffer_head flag to check uninit group bitmaps initialization\n  ext4: Fix the race between read_inode_bitmap() and ext4_new_inode()\n  ext4: code cleanup\n  ...\n"
    },
    {
      "commit": "e06c8227fd94ec181849ba206bf032be31c4295c",
      "tree": "67261cd94aa86dc6112d7de74304c2a1af5b64fb",
      "parents": [
        "754938c142ae0c28360426c43f965ddc5164b21e"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Thu Sep 11 15:35:47 2008 -0700"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:30 2009 -0800"
      },
      "message": "jbd2: Add buffer triggers\n\nFilesystems often to do compute intensive operation on some\nmetadata.  If this operation is repeated many times, it can be very\nexpensive.  It would be much nicer if the operation could be performed\nonce before a buffer goes to disk.\n\nThis adds triggers to jbd2 buffer heads.  Just before writing a metadata\nbuffer to the journal, jbd2 will optionally call a commit trigger associated\nwith the buffer.  If the journal is aborted, an abort trigger will be\ncalled on any dirty buffers as they are dropped from pending\ntransactions.\n\nocfs2 will use this feature.\n\nInitially I tried to come up with a more generic trigger that could be\nused for non-buffer-related events like transaction completion.  It\ndoesn\u0027t tie nicely, because the information a buffer trigger needs\n(specific to a journal_head) isn\u0027t the same as what a transaction\ntrigger needs (specific to a tranaction_t or perhaps journal_t).  So I\nimplemented a buffer set, with the understanding that\njournal/transaction wide triggers should be implemented separately.\n\nThere is only one trigger set allowed per buffer.  I can\u0027t think of any\nreason to attach more than one set.  Contrast this with a journal or\ntransaction in which multiple places may want to watch the entire\ntransaction separately.\n\nThe trigger sets are considered static allocation from the jbd2\nperspective.  ocfs2 will just have one trigger set per block type,\nsetting the same set on every bh of the same type.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "30773840c19cea60dcef39545960d541b1ac1cf8",
      "tree": "f220a2dce451a40dc7264e8fd70c77c5a3908873",
      "parents": [
        "d7cfa4684d82f58e5d7cb73b8a3c88c169937f25"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jan 03 20:27:38 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sat Jan 03 20:27:38 2009 -0500"
      },
      "message": "ext4: add fsync batch tuning knobs\n\nAdd new mount options, min_batch_time and max_batch_time, which\ncontrols how long the jbd2 layer should wait for additional filesystem\noperations to get batched with a synchronous write transaction.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e07f7183a486cf9783d1f8c9d2997b5b39eeb2d4",
      "tree": "74ed3a563add5fa57e80af03f3f712f2910ac39f",
      "parents": [
        "032115fcef837a00336ddf7bda584e89789ea498"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Wed Nov 26 01:14:26 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Nov 26 01:14:26 2008 -0500"
      },
      "message": "jbd2: improve jbd2 fsync batching\n\nThis patch removes the static sleep time in favor of a more self\noptimizing approach where we measure the average amount of time it\ntakes to commit a transaction to disk and the ammount of time a\ntransaction has been running.  If somebody does a sync write or an\nfsync() traditionally we would sleep for 1 jiffies, which depending on\nthe value of HZ could be a significant amount of time compared to how\nlong it takes to commit a transaction to the underlying storage.  With\nthis patch instead of sleeping for a jiffie, we check to see if the\namount of time this transaction has been running is less than the\naverage commit time, and if it is we sleep for the delta using\nschedule_hrtimeout to give us a higher precision sleep time.  This\ngreatly benefits high end storage where you could end up sleeping for\nlonger than it takes to commit the transaction and therefore sitting\nidle instead of allowing the transaction to be committed by keeping\nthe sleep time to a minimum so you are sure to always be doing\nsomething.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "3e624fc72fba09b6f999a9fbb87b64efccd38036",
      "tree": "f0a1feac377788b27ea704519a33f367a6d415f9",
      "parents": [
        "22359f5745eb26bd3205a1ede7968c8944398220"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Oct 16 20:00:24 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Oct 16 20:00:24 2008 -0400"
      },
      "message": "ext4: Replace hackish ext4_mb_poll_new_transaction with commit callback\n\nThe multiblock allocator needs to be able to release blocks (and issue\na blkdev discard request) when the transaction which freed those\nblocks is committed.  Previously this was done via a polling mechanism\nwhen blocks are allocated or freed.  A much better way of doing things\nis to create a jbd2 callback function and attaching the list of blocks\nto be freed directly to the transaction structure.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "3295f0ef9ff048a4619ede597ad9ec9cab725654",
      "tree": "f39a8ecf1958130a0b86c554399d23a65b1c3991",
      "parents": [
        "8bfe0298f7a04952d19f4a2cf510d7a6311eeed0"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 10:30:30 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 10:30:30 2008 +0200"
      },
      "message": "lockdep: rename map_[acquire|release]() \u003d\u003e lock_map_[acquire|release]()\n\nthe names were too generic:\n\n drivers/uio/uio.c:87: error: expected identifier or \u0027(\u0027 before \u0027do\u0027\n drivers/uio/uio.c:87: error: expected identifier or \u0027(\u0027 before \u0027while\u0027\n drivers/uio/uio.c:113: error: \u0027map_release\u0027 undeclared here (not in a function)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4f3e7524b2e703d9f8b02ac338153a53dd7ede66",
      "tree": "0033ade94f230d6044ad318e3791c55ad611069e",
      "parents": [
        "f82b217e3513fe3af342c0f3ee1494e86250c21c"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Aug 11 09:30:23 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 09:30:23 2008 +0200"
      },
      "message": "lockdep: map_acquire\n\nMost the free-standing lock_acquire() usages look remarkably similar, sweep\nthem into a new helper.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "87c89c232c8f7b3820c33c3b9bc803e9358027da",
      "tree": "9a714242513ec3e5e1c28fad1bfff852efd033d5",
      "parents": [
        "678aaf481496b01473b778685eca231d6784098b"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "message": "jbd2: Remove data\u003dordered mode support using jbd buffer heads\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "c851ed540173736e60d48b53b91a16ea5c903896",
      "tree": "828fe0d71b7f18dc170090dbb2fb5ac9deae4ee0",
      "parents": [
        "f4c0a0fdfae708f7aa438c27a380ed4071294e11"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jul 11 19:27:31 2008 -0400"
      },
      "message": "jbd2: Implement data\u003dordered mode handling via inodes\n\nThis patch adds necessary framework into JBD2 to be able to track inodes\nwith each transaction and write-out their dirty data during transaction\ncommit time.\n\nThis new ordered mode brings all sorts of advantages such as possibility \nto get rid of journal heads and buffer heads for data buffers in ordered \nmode, better ordering of writes on transaction commit, simplification of\n some JBD code, no more anonymous pages when truncate of data being \ncommitted happens.  Also with this new ordered mode, delayed allocation \non ordered mode is much simpler.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "530576bbf379fc45cfb34f246257d8526db44567",
      "tree": "d4a89bf6f2736816e1b43abfdafcf2d61bbd19ef",
      "parents": [
        "772cb7c83ba256a11c7bf99a11bef3858d23767c"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Sun Jul 13 21:06:39 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 13 21:06:39 2008 -0400"
      },
      "message": "jbd2: fix race between jbd2_journal_try_to_free_buffers() and jbd2 commit transaction\n\njournal_try_to_free_buffers() could race with jbd commit transaction\nwhen the later is holding the buffer reference while waiting for the\ndata buffer to flush to disk. If the caller of\njournal_try_to_free_buffers() request tries hard to release the buffers,\nit will treat the failure as error and return back to the caller. We\nhave seen the directo IO failed due to this race.  Some of the caller of\nreleasepage() also expecting the buffer to be dropped when passed with\nGFP_KERNEL mask to the releasepage()-\u003ejournal_try_to_free_buffers().\n\nWith this patch, if the caller is passing the GFP_KERNEL to indicating\nthis call could wait, in case of try_to_free_buffers() failed, let\u0027s\nwaiting for journal_commit_transaction() to finish commit the current\ncommitting transaction , then try to free those buffers again with\njournal locked.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nReviewed-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e \nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "329d291f50d53f77d15769051f3eb494a9fd54b7",
      "tree": "a6ba58859d4fa13e39d4b193c41147daaa750d4d",
      "parents": [
        "46e665e9d297525d286989640cf4247cbe941df6"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Thu Apr 17 10:38:59 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Apr 17 10:38:59 2008 -0400"
      },
      "message": "jdb2: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5648ba5b2dc0d07a8108fabc7b9100962e9e1d88",
      "tree": "d6965923102789d645d93deef6e90d6fffd03b99",
      "parents": [
        "8a9362eb405e380432e6883cb83830df3b6cdf78"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Thu Apr 17 10:38:59 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Apr 17 10:38:59 2008 -0400"
      },
      "message": "jbd2: fix kernel-doc notation\n\nFix kernel-doc notation in jbd2.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1dfc3220d963385a317264b11154c462a83596ed",
      "tree": "8c35f3233c3d10110b3b48d8f476ddf9404d7192",
      "parents": [
        "9fc7c63a1d6e9920038ced782390a54888ed70a6"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Thu Apr 17 10:38:59 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Apr 17 10:38:59 2008 -0400"
      },
      "message": "jbd2: fix possible journal overflow issues\n\nThere are several cases where the running transaction can get buffers\nadded to its BJ_Metadata list which it never dirtied, which makes its\nt_nr_buffers counter end up larger than its t_outstanding_credits\ncounter.\n\nThis will cause issues when starting new transactions as while we are\nlogging buffers we decrement t_outstanding_buffers, so when\nt_outstanding_buffers goes negative, we will report that we need less\nspace in the journal than we actually need, so transactions will be\nstarted even though there may not be enough room for them.  In the worst\ncase scenario (which admittedly is almost impossible to reproduce) this\nwill result in the journal running out of space.\n\nThe fix is to only refile buffers from the committing transaction to the\nrunning transactions BJ_Modified list when b_modified is set on that\njournal, which is the only way to be sure if the running transaction has\nmodified that buffer.\n\nThis patch also fixes an accounting error in journal_forget, it is\npossible that we can call journal_forget on a buffer without having\nmodified it, only gotten write access to it, so instead of freeing a\ncredit, we only do so if the buffer was modified.  The assert will help\ncatch if this problem occurs.  Without these two patches I could hit\nthis assert within minutes of running postmark, with them this issue no\nlonger arises.\n\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "9fc7c63a1d6e9920038ced782390a54888ed70a6",
      "tree": "d378eb9089fe1618e180a4bfe38f3fc6d4d1a6c5",
      "parents": [
        "33ae0cdd3eaba219e7c2f0647b6db4be540e2130"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Thu Apr 17 10:38:59 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Apr 17 10:38:59 2008 -0400"
      },
      "message": "jbd2: fix the way the b_modified flag is cleared\n\nCurrently at the start of a journal commit we loop through all of the buffers\non the committing transaction and clear the b_modified flag (the flag that is\nset when a transaction modifies the buffer) under the j_list_lock.\n\nThe problem is that everywhere else this flag is modified only under the jbd2\nlock buffer flag, so it will race with a running transaction who could\npotentially set it, and have it unset by the committing transaction.\n\nThis is also a big waste, you can have several thousands of buffers that you\nare clearing the modified flag on when you may not need to.  This patch\nremoves this code and instead clears the b_modified flag upon entering\ndo_get_write_access/journal_get_create_access, so if that transaction does\nindeed use the buffer then it will be accounted for properly, and if it does\nnot then we know we didn\u0027t use it.\n\nThat will be important for the next patch in this series.  Tested thoroughly\nby myself using postmark/iozone/bonnie++.\n\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "4019191be7316ed4a39e1c1c2b623baa7dc6c843",
      "tree": "60e86b4c004a4f5206369f099302c38ad621e86a",
      "parents": [
        "db857da3369cd4eb6a28be1cce89d33162caa4a0"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "message": "jbd2: sparse pointer use of zero as null\n\nGet rid of sparse related warnings from places that use integer as NULL\npointer.  (Ported from upstream ext3/jbd changes.)\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "db857da3369cd4eb6a28be1cce89d33162caa4a0",
      "tree": "08dcac7ef1db552a771df1a9dd12c13ca70224b0",
      "parents": [
        "77160957e29e9413f7420e85fca37a47d4ffac7f"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "message": "jbd2: Use round-jiffies() function for the \"5 second\" ext4/jbd2 wakeup\n\nWhile \"every 5 seconds\" doesn\u0027t sound as a problem, there can be many\nof these (and these timers do add up over all the kernel).  The \"5\nsecond\" wakeup isn\u0027t really timing sensitive; in addition even with\nrounding it\u0027ll still happen every 5 seconds (with the exception of the\nvery first time, which is likely to be rounded up to somewhere closer\nto 6 seconds)\n\n(Ported from similar JBD patch made by Arjan van de Ven to\nfs/jbd/transaction.c)\n\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nCc: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "7b7510662f4d05ddcc45d435769860e73e6aa20e",
      "tree": "adf0fe32c57c53099b6604bcf40d914398a5504c",
      "parents": [
        "b939e3766ec19eb556cb784c2faace253c6e1560"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "message": "jbd2: add lockdep support\n\nPorted from similar patch for the jbd layer.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "8e85fb3f305b24b79c6d9cb7a56d22b062335ad3",
      "tree": "9b037c1b1649bce1338911fd8ca3980229c1548a",
      "parents": [
        "4df3d265bf8f3762e1d77f554ee279c39dedb020"
      ],
      "author": {
        "name": "Johann Lombardi",
        "email": "johann.lombardi@bull.net",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jan 28 23:58:27 2008 -0500"
      },
      "message": "jbd2: jbd2 stats through procfs\n\nThe patch below updates the jbd stats patch to 2.6.20/jbd2.\nThe initial patch was posted by Alex Tomas in December 2005\n(http://marc.info/?l\u003dlinux-ext4\u0026m\u003d113538565128617\u0026w\u003d2).\nIt provides statistics via procfs such as transaction lifetime and size.\n\nSometimes, investigating performance problems, i find useful to have\nstats from jbd about transaction\u0027s lifetime, size, etc. here is a\npatch for review and inclusion probably.\n\nfor example, stats after creation of 3M files in htree directory:\n\n[root@bob ~]# cat /proc/fs/jbd/sda/history\nR/C  tid   wait  run   lock  flush log   hndls  block inlog ctime write drop  close\nR    261   8260  2720  0     0     750   9892   8170  8187\nC    259                                                    750   0     4885  1\nR    262   20    2200  10    0     770   9836   8170  8187\nR    263   30    2200  10    0     3070  9812   8170  8187\nR    264   0     5000  10    0     1340  0      0     0\nC    261                                                    8240  3212  4957  0\nR    265   8260  1470  0     0     4640  9854   8170  8187\nR    266   0     5000  10    0     1460  0      0     0\nC    262                                                    8210  2989  4868  0\nR    267   8230  1490  10    0     4440  9875   8171  8188\nR    268   0     5000  10    0     1260  0      0     0\nC    263                                                    7710  2937  4908  0\nR    269   7730  1470  10    0     3330  9841   8170  8187\nR    270   0     5000  10    0     830   0      0     0\nC    265                                                    8140  3234  4898  0\nC    267                                                    720   0     4849  1\nR    271   8630  2740  20    0     740   9819   8170  8187\nC    269                                                    800   0     4214  1\nR    272   40    2170  10    0     830   9716   8170  8187\nR    273   40    2280  0     0     3530  9799   8170  8187\nR    274   0     5000  10    0     990   0      0     0\n\n\nwhere,\n\nR     - line for transaction\u0027s life from T_RUNNING to T_FINISHED\nC     - line for transaction\u0027s checkpointing\ntid   - transaction\u0027s id\nwait  - for how long we were waiting for new transaction to start\n         (the longest period journal_start() took in this transaction)\nrun   - real transaction\u0027s lifetime (from T_RUNNING to T_LOCKED\nlock  - how long we were waiting for all handles to close\n         (time the transaction was in T_LOCKED)\nflush - how long it took to flush all data (data\u003dordered)\nlog   - how long it took to write the transaction to the log\nhndls - how many handles got to the transaction\nblock - how many blocks got to the transaction\ninlog - how many blocks are written to the log (block + descriptors)\nctime - how long it took to checkpoint the transaction\nwrite - how many blocks have been written during checkpointing\ndrop  - how many blocks have been dropped during checkpointing\nclose - how many running transactions have been closed to checkpoint this one\n\nall times are in msec.\n\n\n[root@bob ~]# cat /proc/fs/jbd/sda/info\n280 transaction, each upto 8192 blocks\naverage:\n  1633ms waiting for transaction\n  3616ms running transaction\n  5ms transaction was being locked\n  1ms flushing data (in ordered mode)\n  1799ms logging transaction\n  11781 handles per transaction\n  5629 blocks per transaction\n  5641 logged blocks per transaction\n\nSigned-off-by: Johann Lombardi \u003cjohann.lombardi@bull.net\u003e\nSigned-off-by: Mariusz Kozlowski \u003cm.kozlowski@tuxland.pl\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\n"
    },
    {
      "commit": "d802ffa8850f2a80d141457d7221809182ed8c9f",
      "tree": "e5a3e9974f0242658ae41391990a28178cc42495",
      "parents": [
        "2d917969bc8dbde45900f5cbc2558e2cf1f8ec32"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Tue Oct 16 18:38:25 2007 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 17 18:49:57 2007 -0400"
      },
      "message": "JBD2/Ext4: Convert kmalloc to kzalloc in jbd2/ext4\n\nConvert kmalloc to kzalloc() and get rid of the memset().\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\n"
    },
    {
      "commit": "2d917969bc8dbde45900f5cbc2558e2cf1f8ec32",
      "tree": "4478fb3bcaa3d5fcae71cde791f15b7cae0991d8",
      "parents": [
        "a5005da204289ce01ca37be59e902100ef247a4d"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Tue Oct 16 18:38:25 2007 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 17 18:49:57 2007 -0400"
      },
      "message": "JBD2: replace jbd_kmalloc with kmalloc directly.\n\nThis patch cleans up jbd_kmalloc and replace it with kmalloc directly\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\n"
    },
    {
      "commit": "af1e76d6b3f37cb89d9192eaf83588adaf4728eb",
      "tree": "8b30dd421361a61c3f2e9c96bd574986b4e78c9e",
      "parents": [
        "c089d490dfbf53bc0893dc9ef57cf3ee6448314d"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Tue Oct 16 18:38:25 2007 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 17 18:49:56 2007 -0400"
      },
      "message": "JBD2: jbd2 slab allocation cleanups\n\nJBD2: Replace slab allocations with page allocations\n\nJBD2 allocate memory for committed_data and frozen_data from slab. However\nJBD2 should not pass slab pages down to the block layer. Use page allocator\npages instead. This will also prepare JBD for the large blocksize patchset.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\n"
    },
    {
      "commit": "5886269962f94fa9185c32db3ec936c612503235",
      "tree": "2f24dabcf5791319ebb1fbdfb5dbc58284714275",
      "parents": [
        "01afd80626e98c2347bc25be92ee4a3faf314514"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "ukleinek@informatik.uni-freiburg.de",
        "time": "Wed May 09 07:51:49 2007 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Wed May 09 08:58:16 2007 +0200"
      },
      "message": "fix file specification in comments\n\nMany files include the filename at the beginning, serveral used a wrong one.\n\nSigned-off-by: Uwe Kleine-König \u003cukleinek@informatik.uni-freiburg.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "e63340ae6b6205fef26b40a75673d1c9c0c8bb90",
      "tree": "8d3212705515edec73c3936bb9e23c71d34a7b41",
      "parents": [
        "04c9167f91e309c9c4ea982992aa08e83b2eb42e"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue May 08 00:28:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:07 2007 -0700"
      },
      "message": "header cleaning: don\u0027t include smp_lock.h when not used\n\nRemove includes of \u003clinux/smp_lock.h\u003e where it is not used/needed.\nSuggested by Al Viro.\n\nBuilds cleanly on x86_64, i386, alpha, ia64, powerpc, sparc,\nsparc64, and arm (all 59 defconfigs).\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7ddae86095794cce4364740edd8463c77654a265",
      "tree": "162617865d65cdd374aba12c11c25bf22ac0faaa",
      "parents": [
        "d394e122bc1adba0f3eb1ebec1cedb8a8c524741"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Wed Dec 06 20:38:27 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:40 2006 -0800"
      },
      "message": "[PATCH] make fs/jbd2/transaction.c:__kbd2_journal_temp_unlink_buffer() static\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9b57988db9b2c81794546cb792133f0cfd064ea8",
      "tree": "87ff86100cc08971958a6bd8796eceb755273707",
      "parents": [
        "f58a74dca88d48b0669609b4957f3dd757bdc898"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Sat Oct 28 10:38:28 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 28 11:30:51 2006 -0700"
      },
      "message": "[PATCH] jbd2: journal_dirty_data re-check for unmapped buffers\n\nWhen running several fsx\u0027s and other filesystem stress tests, we found\ncases where an unmapped buffer was still being sent to submit_bh by the\next3 dirty data journaling code.\n\nI saw this happen in two ways, both related to another thread doing a\ntruncate which would unmap the buffer in question.\n\nEither we would get into journal_dirty_data with a bh which was already\nunmapped (although journal_dirty_data_fn had checked for this earlier, the\nstate was not locked at that point), or it would get unmapped in the middle\nof journal_dirty_data when we dropped locks to call sync_dirty_buffer.\n\nBy re-checking for mapped state after we\u0027ve acquired the bh state lock, we\nshould avoid these races.  If we find a buffer which is no longer mapped,\nwe essentially ignore it, because journal_unmap_buffer has already decided\nthat this buffer can go away.\n\nI\u0027ve also added tracepoints in these two cases, and made a couple other\ntracepoint changes that I found useful in debugging this.\n\nSigned-off-by: Eric Sandeen \u003cesandeen@redhat.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3e2a532b26b491706bd8b5c7cfc8d767b43b8f36",
      "tree": "641db5da4c1adbeee04ce6594746cec51f581ff0",
      "parents": [
        "82591e6ea234762eeaa8b2337fe060ed438c18dc"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Thu Oct 19 23:29:11 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 20 10:26:44 2006 -0700"
      },
      "message": "[PATCH] ext3/4: fix J_ASSERT(transaction-\u003et_updates \u003e 0) in journal_stop()\n\nA disk generated some I/O error, after it, I hitted\nJ_ASSERT(transaction-\u003et_updates \u003e 0) in journal_stop().\n\nIt seems to happened on ext3_truncate() path from stack trace. Then,\nmaybe the following case may trigger J_ASSERT(transaction-\u003et_updates \u003e 0).\n\next3_truncate()\n    -\u003e ext3_free_branches()\n        -\u003e ext3_journal_test_restart()\n\t    -\u003e ext3_journal_restart()\n                -\u003e journal_restart()\n                transaction-\u003et_updates--;\n                /* another process aborted journal */\n                    -\u003e start_this_handle()\n\t\t    returns -EROFS without transaction-\u003et_updates++;\n\n    -\u003e ext3_journal_stop()\n        -\u003e journal_stop()\n\tJ_ASSERT(transaction-\u003et_updates \u003e 0)\n\nIf journal was aborted in middle of journal_restart(), ext3_truncate()\nmay trigger J_ASSERT().\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f7f4bccb729844a0fa873e224e3a6f7eeed095bb",
      "tree": "b5b8ce65b5c17b4a7d45e43a3530f2cc977fb894",
      "parents": [
        "470decc613ab2048b619a01028072d932d9086ee"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Wed Oct 11 01:20:59 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 11 11:14:15 2006 -0700"
      },
      "message": "[PATCH] jbd2: rename jbd2 symbols to avoid duplication of jbd symbols\n\nMingming Cao originally did this work, and Shaggy reproduced it using some\nscripts from her.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "470decc613ab2048b619a01028072d932d9086ee",
      "tree": "5268576f5099040db94b8e984983c0bb28b2a9a7",
      "parents": [
        "02ea2104c55b625cf5b5d9ba8586a4fc17920f5c"
      ],
      "author": {
        "name": "Dave Kleikamp",
        "email": "shaggy@austin.ibm.com",
        "time": "Wed Oct 11 01:20:57 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 11 11:14:15 2006 -0700"
      },
      "message": "[PATCH] jbd2: initial copy of files from jbd\n\nThis is a simple copy of the files in fs/jbd to fs/jbd2 and\n/usr/incude/linux/[ext4_]jbd.h to /usr/include/[ext4_]jbd2.h\n\nSigned-off-by: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ]
}
