)]}'
{
  "log": [
    {
      "commit": "1ba37268cd19e5a2a80924bfe8618bf1ba3e8249",
      "tree": "f4227aaf3963e6c948b01e57c98697e6ab2157d6",
      "parents": [
        "5872ddaaf05bf25e3ab90580295ebc946405928c"
      ],
      "author": {
        "name": "Yongqiang Yang",
        "email": "xiaoqiangnk@gmail.com",
        "time": "Wed Dec 28 17:46:46 2011 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 28 17:46:46 2011 -0500"
      },
      "message": "jbd2: clear revoked flag on buffers before a new transaction started\n\nCurrently, we clear revoked flag only when a block is reused.  However,\nthis can tigger a false journal error.  Consider a situation when a block\nis used as a meta block and is deleted(revoked) in ordered mode, then the\nblock is allocated as a data block to a file.  At this moment, user changes\nthe file\u0027s journal mode from ordered to journaled and truncates the file.\nThe block will be considered re-revoked by journal because it has revoked\nflag still pending from the last transaction and an assertion triggers.\n\nWe fix the problem by keeping the revoked status more uptodate - we clear\nrevoked flag when switching revoke tables to reflect there is no revoked\nbuffers in current transaction any more.\n\nSigned-off-by: Yongqiang Yang \u003cxiaoqiangnk@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "446066724c3629664e29942a00b0aee0d6b1663a",
      "tree": "277cae3f42649cdd32b4841949e74c5cf9212f1f",
      "parents": [
        "44705754610dbc63503bc7679ff9d9f84978a76f"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Thu Oct 27 04:38:18 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Oct 27 04:38:18 2011 -0400"
      },
      "message": "jdb/jbd2: factor out common functions from the jbd[2] header files\n\nThe state bits and the lock functions of jbd and jbd2 are\nidentical.  Share them.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "d2159fb7b8bac12684aabdf41d84b56da9f5c062",
      "tree": "32c061d113405936a3dc37ad47018b88393c1e66",
      "parents": [
        "9ea7a0df63630ad8197716cd313ea66e28906fc0"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Sun Sep 04 10:20:14 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Sep 04 10:20:14 2011 -0400"
      },
      "message": "jbd2: use gfp_t instead of int\n\nThis silences some Sparse warnings:\nfs/jbd2/transaction.c:135:69: warning: incorrect type in argument 2 (different base types)\nfs/jbd2/transaction.c:135:69:    expected restricted gfp_t [usertype] flags\nfs/jbd2/transaction.c:135:69:    got int [signed] gfp_mask\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "4862fd6047ed02e2726667c54d35f538eecc56aa",
      "tree": "fc97f075946120157c63f48e283a5d753d22763a",
      "parents": [
        "575a1d4bdfa2ea9fc10733013136145b497e1be0"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 10 22:05:08 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Jul 10 22:05:08 2011 -0400"
      },
      "message": "jbd2: remove jbd2_dev_to_name() from jbd2 tracepoints\n\nUsing function calls in TP_printk causes perf heartburn, so print the\nMAJOR/MINOR device numbers instead.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "de1b794130b130e77ffa975bb58cb843744f9ae5",
      "tree": "8c4b37582128dc36c2b7385294fba58d017ce3e8",
      "parents": [
        "1fb74cda1b5e9c6207225fda5ef7504e815ce0e0"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jun 13 15:38:22 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Jun 13 15:38:22 2011 -0400"
      },
      "message": "jbd2: Fix oops in jbd2_journal_remove_journal_head()\n\njbd2_journal_remove_journal_head() can oops when trying to access\njournal_head returned by bh2jh(). This is caused for example by the\nfollowing race:\n\n\tTASK1\t\t\t\t\tTASK2\n  jbd2_journal_commit_transaction()\n    ...\n    processing t_forget list\n      __jbd2_journal_refile_buffer(jh);\n      if (!jh-\u003eb_transaction) {\n        jbd_unlock_bh_state(bh);\n\t\t\t\t\tjbd2_journal_try_to_free_buffers()\n\t\t\t\t\t  jbd2_journal_grab_journal_head(bh)\n\t\t\t\t\t  jbd_lock_bh_state(bh)\n\t\t\t\t\t  __journal_try_to_free_buffer()\n\t\t\t\t\t  jbd2_journal_put_journal_head(jh)\n        jbd2_journal_remove_journal_head(bh);\n\njbd2_journal_put_journal_head() in TASK2 sees that b_jcount \u003d\u003d 0 and\nbuffer is not part of any transaction and thus frees journal_head\nbefore TASK1 gets to doing so. Note that even buffer_head can be\nreleased by try_to_free_buffers() after\njbd2_journal_put_journal_head() which adds even larger opportunity for\noops (but I didn\u0027t see this happen in reality).\n\nFix the problem by making transactions hold their own journal_head\nreference (in b_jcount). That way we don\u0027t have to remove journal_head\nexplicitely via jbd2_journal_remove_journal_head() and instead just\nremove journal_head when b_jcount drops to zero. The result of this is\nthat [__]jbd2_journal_refile_buffer(),\n[__]jbd2_journal_unfile_buffer(), and\n__jdb2_journal_remove_checkpoint() can free journal_head which needs\nmodification of a few callers. Also we have to be careful because once\njournal_head is removed, buffer_head might be freed as well. So we\nhave to get our own buffer_head reference where it matters.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "bbd2be36910728f485ac78ea36e0f4f5a38e691e",
      "tree": "6a45da5a6ef8bafe9614de5fac68cce1fe4e13ec",
      "parents": [
        "81be12c8179c1c397d3f179cdd9b3f7146cf47f1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue May 24 11:59:18 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 24 11:59:18 2011 -0400"
      },
      "message": "jbd2: Add function jbd2_trans_will_send_data_barrier()\n\nProvide a function which returns whether a transaction with given tid\nwill send a flush to the filesystem device.  The function will be used\nby ext4 to detect whether fsync needs to send a separate flush or not.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "81be12c8179c1c397d3f179cdd9b3f7146cf47f1",
      "tree": "b535687e88af17fc6b25329decf28563ed519395",
      "parents": [
        "b221349fa8b45d13c3650089f0514df7d1eb36c3"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue May 24 11:52:40 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue May 24 11:52:40 2011 -0400"
      },
      "message": "jbd2: fix sending of data flush on journal commit\n\n\nIn data\u003dordered mode, it\u0027s theoretically possible (however rare) that\nan inode is filed to transaction\u0027s t_inode_list and a flusher thread\nwrites all the data and inode is reclaimed before the transaction\nstarts to commit.  In such a case, we could erroneously omit sending a\nflush to file system device when it is different from the journal\ndevice (because data can still be in disk cache only).\n\nFix the problem by setting a flag in a transaction when some inode is added\nto it and then send disk flush in the commit code when the flag is set.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "93737456d68ddcb86232f669b83da673dd12e351",
      "tree": "564feaa33d36c5e06ad200c5225382ff0afd5249",
      "parents": [
        "c2cc7028e41c76e44b6e247c4b495c7523b23c87"
      ],
      "author": {
        "name": "Amir Goldstein",
        "email": "amir73il@gmail.com",
        "time": "Sun Mar 20 21:13:43 2011 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Sun Mar 20 21:13:43 2011 -0400"
      },
      "message": "jbd2: add COW fields to struct jbd2_journal_handle\n\nAdd fields needed for the copy-on-write ext4 development work.\n\nThe h_cowing flag is used by ext4 snapshots code to mark the task in\nCOWING state.\n\nThe h_XXX_credits fields are used to track buffer credits usage\n(accounted by COW and non-COW operations).\n\nThe h_cow_XXX fields are used as per task debugging counters.\n\nMerging this commit into mainline will allow users to test ext4\nsnapshots as a standalone module, without the need to patch and\ninstall a development kernel.\n\nSigned-off-by: Amir Goldstein \u003camir73il@users.sf.net\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": "39e3ac2599a5f9aba499b5f8af809108e70a6163",
      "tree": "16c9d790029c36f217b1689b42869c8739e8ac5e",
      "parents": [
        "58590b06d79f7ce5ab64ff3b6d537180fa50dc84"
      ],
      "author": {
        "name": "Brian King",
        "email": "brking@linux.vnet.ibm.com",
        "time": "Wed Oct 27 21:25:12 2010 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Oct 27 21:25:12 2010 -0400"
      },
      "message": "jbd2: Fix I/O hang in jbd2_journal_release_jbd_inode\n\nThis fixes a hang seen in jbd2_journal_release_jbd_inode\non a lot of Power 6 systems running with ext4. When we get\nin the hung state, all I/O to the disk in question gets blocked\nwhere we stay indefinitely. Looking at the task list, I can see\nwe are stuck in jbd2_journal_release_jbd_inode waiting on a\nwake up. I added some debug code to detect this scenario and\ndump additional data if we were stuck in jbd2_journal_release_jbd_inode\nfor longer than 30 minutes. When it hit, I was able to see that\ni_flags was 0, suggesting we missed the wake up.\n\nThis patch changes i_flags to be an unsigned long, uses bit operators\nto access it, and adds barriers around the accesses. Prior to applying\nthis patch, we were regularly hitting this hang on numerous systems\nin our test environment. After applying the patch, the hangs no longer\noccur.\n\nSigned-off-by: Brian King \u003cbrking@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "09dc942c2a767e2d298f1cc9294bc19c7d7208c5",
      "tree": "d310c118467c90c264e953bdc320ae08394c662a",
      "parents": [
        "90e0c225968f0878e090c7ff3f88323973476cee",
        "6c7a120ac6c62316ab1fc78dfc0a7b13f3bfcbff"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 13:03:53 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 13:03:53 2010 -0700"
      },
      "message": "Merge branch \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (40 commits)\n  ext4: Adding error check after calling ext4_mb_regular_allocator()\n  ext4: Fix dirtying of journalled buffers in data\u003djournal mode\n  ext4: re-inline ext4_rec_len_(to|from)_disk functions\n  jbd2: Remove t_handle_lock from start_this_handle()\n  jbd2: Change j_state_lock to be a rwlock_t\n  jbd2: Use atomic variables to avoid taking t_handle_lock in jbd2_journal_stop\n  ext4: Add mount options in superblock\n  ext4: force block allocation on quota_off\n  ext4: fix freeze deadlock under IO\n  ext4: drop inode from orphan list if ext4_delete_inode() fails\n  ext4: check to make make sure bd_dev is set before dereferencing it\n  jbd2: Make barrier messages less scary\n  ext4: don\u0027t print scary messages for allocation failures post-abort\n  ext4: fix EFBIG edge case when writing to large non-extent file\n  ext4: fix ext4_get_blocks references\n  ext4: Always journal quota file modifications\n  ext4: Fix potential memory leak in ext4_fill_super\n  ext4: Don\u0027t error out the fs if the user tries to make a file too big\n  ext4: allocate stripe-multiple IOs on stripe boundaries\n  ext4: move aio completion after unwritten extent conversion\n  ...\n\nFix up conflicts in fs/ext4/inode.c as per Ted.\n\nFix up xfs conflicts as per earlier xfs merge.\n"
    },
    {
      "commit": "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": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "e213e26ab3988c516c06eba4dcd030ac052f6dc9",
      "tree": "6e26fbdbb842b387697d73daf6e70cf718269a77",
      "parents": [
        "c812a51d11bbe983f4c24e32b59b265705ddd3c2",
        "efd8f0e6f6c1faa041f228d7113bd3a9db802d49"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 05 13:20:53 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 05 13:20:53 2010 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6: (33 commits)\n  quota: stop using QUOTA_OK / NO_QUOTA\n  dquot: cleanup dquot initialize routine\n  dquot: move dquot initialization responsibility into the filesystem\n  dquot: cleanup dquot drop routine\n  dquot: move dquot drop responsibility into the filesystem\n  dquot: cleanup dquot transfer routine\n  dquot: move dquot transfer responsibility into the filesystem\n  dquot: cleanup inode allocation / freeing routines\n  dquot: cleanup space allocation / freeing routines\n  ext3: add writepage sanity checks\n  ext3: Truncate allocated blocks if direct IO write fails to update i_size\n  quota: Properly invalidate caches even for filesystems with blocksize \u003c pagesize\n  quota: generalize quota transfer interface\n  quota: sb_quota state flags cleanup\n  jbd: Delay discarding buffers in journal_unmap_buffer\n  ext3: quota_write cross block boundary behaviour\n  quota: drop permission checks from xfs_fs_set_xstate/xfs_fs_set_xquota\n  quota: split out compat_sys_quotactl support from quota.c\n  quota: split out netlink notification support from quota.c\n  quota: remove invalid optimization from quota_sync_all\n  ...\n\nFixed trivial conflicts in fs/namei.c and fs/ufs/inode.c\n"
    },
    {
      "commit": "c7e8d4d6dceeb6fd236991f590d3fa6f97c59874",
      "tree": "79404097d7e2a94bf642ba427252dd662937f0f9",
      "parents": [
        "e1f5c67a1994312300ebc41195e6f5bea2f6c065"
      ],
      "author": {
        "name": "Christoph Egger",
        "email": "siccegge@stud.informatik.uni-erlangen.de",
        "time": "Fri Feb 05 14:13:33 2010 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:20 2010 +0100"
      },
      "message": "jbd[2]: remove references to BUFFER_DEBUG\n\nCONFIG_BUFFER_DEBUG seems to have been removed from the documentation\nsomewhere around 2.4.15 and seemingly hasn\u0027t been available even\nlonger. It is, however, still referenced at one place from the jbd\ncode (one is a copy of the other header). Time to clean it up\n\nSigned-off-by: Christoph Egger \u003csiccegge@stud.informatik.uni-erlangen.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "cc3e1bea5d87635c519da657303690f5538bb4eb",
      "tree": "727b348d0389a2fe6618fb224fe1d81d207668c4",
      "parents": [
        "034fb4c95fc0fed4ec4a50778127b92c6f2aec01"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 23 06:52:08 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Dec 23 06:52:08 2009 -0500"
      },
      "message": "ext4, jbd2: Add barriers for file systems with exernal journals\n\nThis is a bit complicated because we are trying to optimize when we\nsend barriers to the fs data disk.  We could just throw in an extra\nbarrier to the data disk whenever we send a barrier to the journal\ndisk, but that\u0027s not always strictly necessary.\n\nWe only need to send a barrier during a commit when there are data\nblocks which are must be written out due to an inode written in\nordered mode, or if fsync() depends on the commit to force data blocks\nto disk.  Finally, before we drop transactions from the beginning of\nthe journal during a checkpoint operation, we need to guarantee that\nany blocks that were flushed out to the data disk are firmly on the\nrust platter before we drop the transaction from the journal.\n\nThanks to Oleg Drokin for pointing out this flaw in ext3/ext4.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "d2eecb03936878ec574ade5532fa83df7d75dde7",
      "tree": "f7ef8bd29096ba6c073308cd3b674857be1545d4",
      "parents": [
        "f8ec9d6837241865cf99bed97bb99f4399fd5a03"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Dec 07 10:36:20 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Dec 07 10:36:20 2009 -0500"
      },
      "message": "ext4: Use slab allocator for sub-page sized allocations\n\nNow that the SLUB seems to be fixed so that it respects the requested\nalignment, use kmem_cache_alloc() to allocator if the block size of\nthe buffer heads to be allocated is less than the page size.\nPreviously, we were using 16k page on a Power system for each buffer,\neven when the file system was using 1k or 4k block size.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n\n"
    },
    {
      "commit": "bf6993276f74d46776f35c45ddef29b981b1d1c6",
      "tree": "5c9cb128fed29a83add1932b12443edaa6fd06cc",
      "parents": [
        "296c355cd6443d89fa251885a8d78778fe111dc4"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 30 00:32:06 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Sep 30 00:32:06 2009 -0400"
      },
      "message": "jbd2: Use tracepoints for history file\n\nThe /proc/fs/jbd2/\u003cdev\u003e/history was maintained manually; by using\ntracepoints, we can get all of the existing functionality of the /proc\nfile plus extra capabilities thanks to the ftrace infrastructure.  We\nsave memory as a bonus.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "0ccff1a49def92d6b838a6da166c89004b3a4d0c",
      "tree": "cea3750b2b725b16a15b3d1c7d3534beb2e68f05",
      "parents": [
        "487caeef9fc08c0565e082c40a8aaf58dad92bbb"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Mon Aug 17 22:38:04 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Mon Aug 17 22:38:04 2009 -0400"
      },
      "message": "jbd2: bitfields should be unsigned\n\nThis fixes sparse noise:\n  error: dubious one-bit signed bitfield\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\n"
    },
    {
      "commit": "879c5e6b7cb4c689d08ca9b2e353d8ab3dc425d5",
      "tree": "8b58103d6773a47d6fc29b47024e8b4092487c88",
      "parents": [
        "65795efbd380a832ae508b04dba8f8e53f0b84d9"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jun 17 11:47:48 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jun 17 11:47:48 2009 -0400"
      },
      "message": "jbd2: convert instrumentation from markers to tracepoints\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "67c457a8c378a006a34d92f9bd3078a80a92f250",
      "tree": "63028e792b62fa42724507b86acded4da356c185",
      "parents": [
        "6b82f3cb2d480b7714eb0ff61aee99c22160389e"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Apr 14 07:50:56 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Apr 14 07:50:56 2009 -0400"
      },
      "message": "jbd2: use SWRITE_SYNC_PLUG when writing synchronous revoke records\n\nThe revoke records must be written using the same way as the rest of\nthe blocks during the commit process; that is, either marked as\nsynchronous writes or as asynchornous writes.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\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": "08ec8c3878cea0bf91f2ba3c0badf44b383752d0",
      "tree": "560d9d0c02270f4d21bc7d7bc18d1b97994bc746",
      "parents": [
        "a21102b55c4f8dfd3adb4a15a34cd62237b46039"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jan 16 11:57:00 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jan 16 11:57:00 2009 -0500"
      },
      "message": "jbd2: On a __journal_expect() assertion failure printk \"JBD2\", not \"EXT3-fs\"\n\nOtherwise it can be very confusing to find a \"EXT3-fs: \" failure in\nthe middle of EXT4-fs failures, and it makes it harder to track the\nsource of the failure.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\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": "e97fcd95a4778a8caf1980c6c72fdf68185a0838",
      "tree": "795c007ed03c091c860df8b03986fbe444f51530",
      "parents": [
        "19ece546a418997226bd91552fbc41abcb05cea6"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Nov 18 17:15:24 2008 -0800"
      },
      "committer": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Mon Jan 05 08:40:24 2009 -0800"
      },
      "message": "jbd2: Add BH_JBDPrivateStart\n\nAdd this so that file systems using JBD2 can safely allocate unused b_state\nbits.\n\nIn this case, we add it so that Ocfs2 can define a single bit for tracking\nthe validation state of a buffer.\n\nAcked-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\n"
    },
    {
      "commit": "c31910672376dfb8d020e32afa7249763bcd924a",
      "tree": "3f2b95a1d4a4da76d85d5bf32534fa3d15a82eac",
      "parents": [
        "c39a7f84d7845aa95d1c7c168f38215aedcc13c2"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 06 11:14:25 2009 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Jan 06 11:14:25 2009 -0500"
      },
      "message": "ext4: Remove code to create the journal inode\n\nThis code has been obsolete in quite some time, since the supported\nmethod for adding a journal inode is to use tune2fs (or to creating\nnew filesystem with a journal via mke2fs or mkfs.ext4).\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "fb68407b0d9efba962c03f55009c797e22f024bc",
      "tree": "b3f33f513969d6f77c5b6a6f71b662057d3440a5",
      "parents": [
        "c3a326a657562dab81acf05aee106dc1fe345eb4"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Thu Nov 06 17:50:21 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Nov 06 17:50:21 2008 -0500"
      },
      "message": "jbd2: Call journal commit callback without holding j_list_lock\n\nAvoid freeing the transaction in __jbd2_journal_drop_transaction() so\nthe journal commit callback can run without holding j_list_lock, to\navoid lock contention on this spinlock.\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "1a0d3786dd57dbd74f340322054c3d618b999dcf",
      "tree": "b10b3ed6cb60ee34a4e8140e60da2ecc34b52f32",
      "parents": [
        "498e5f24158da7bf8fa48074a70e370e22844492"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Nov 05 00:09:22 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Nov 05 00:09:22 2008 -0500"
      },
      "message": "jbd2: Remove a large array of bh\u0027s from the stack of the checkpoint routine\n\njbd2_log_do_checkpoint()n is one of the kernel\u0027s largest stack users.\nMove the array of buffer head\u0027s from the stack of jbd2_log_do_checkpoint()\nto the in-core journal structure.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\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": "171bbfbeab7730031eec8025341401fabe540bd5",
      "tree": "9738aa87ea0ddabfed38efde2b72b4ac75ae742b",
      "parents": [
        "25f1ee3aba17584ba4810da892175acab7fff9c8"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mfasheh@suse.com",
        "time": "Tue Nov 25 17:42:31 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Nov 25 17:42:31 2008 -0500"
      },
      "message": "jbd2: Add BH_JBDPrivateStart\n\nAdd this so that file systems using JBD2 can safely allocate unused b_state\nbits.\n\nIn this case, we add it so that Ocfs2 can define a single bit for tracking\nthe validation state of a buffer.\n\nSigned-off-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\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": "d5c003b4d1690e666dbab02bc8e705947baa848c",
      "tree": "868edee78b635698429173a95ac4215b932f0155",
      "parents": [
        "8e9c7716c138fa82d919bfe1115ec8c938e90918"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Wed Oct 15 22:01:24 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 11:21:30 2008 -0700"
      },
      "message": "include: replace __FUNCTION__ with __func__\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5bf5683a33f3584da6eced480967c4f7e11515a8",
      "tree": "4986ba3932d9f259fa1bc674deff3e35f689b243",
      "parents": [
        "7ad7445f60fe4d46c4c9d2a9463db180d2a3b270"
      ],
      "author": {
        "name": "Hidehiro Kawai",
        "email": "hidehiro.kawai.ez@hitachi.com",
        "time": "Fri Oct 10 22:12:43 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Oct 10 22:12:43 2008 -0400"
      },
      "message": "ext4: add an option to control error handling on file data\n\nIf the journal doesn\u0027t abort when it gets an IO error in file data\nblocks, the file data corruption will spread silently.  Because\nmost of applications and commands do buffered writes without fsync(),\nthey don\u0027t notice the IO error.  It\u0027s scary for mission critical\nsystems.  On the other hand, if the journal aborts whenever it gets\nan IO error in file data blocks, the system will easily become\ninoperable.  So this patch introduces a filesystem option to\ndetermine whether it aborts the journal or just call printk() when\nit gets an IO error in file data.\n\nIf you mount an ext4 fs with data_err\u003dabort option, it aborts on file\ndata write error.  If you mount it with data_err\u003dignore, it doesn\u0027t\nabort, just call printk().  data_err\u003dignore is the default.\n\nHere is the corresponding patch of the ext3 version:\nhttp://kerneltrap.org/mailarchive/linux-kernel/2008/9/9/3239374\n\nSigned-off-by: Hidehiro Kawai \u003chidehiro.kawai.ez@hitachi.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "44519faf22ad6ce924ad0352d3dc200d9e0b66e8",
      "tree": "332dd28cf16439fc4c78ad198e04c12ff7c16e66",
      "parents": [
        "77e841de8abac4755cc83ca224fdf71418d65380"
      ],
      "author": {
        "name": "Hidehiro Kawai",
        "email": "hidehiro.kawai.ez@hitachi.com",
        "time": "Fri Oct 10 20:29:13 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Oct 10 20:29:13 2008 -0400"
      },
      "message": "jbd2: fix error handling for checkpoint io\n\nWhen a checkpointing IO fails, current JBD2 code doesn\u0027t check the\nerror and continue journaling.  This means latest metadata can be\nlost from both the journal and filesystem.\n\nThis patch leaves the failed metadata blocks in the journal space\nand aborts journaling in the case of jbd2_log_do_checkpoint().\nTo achieve this, we need to do:\n\n1. don\u0027t remove the failed buffer from the checkpoint list where in\n   the case of __try_to_free_cp_buf() because it may be released or\n   overwritten by a later transaction\n2. jbd2_log_do_checkpoint() is the last chance, remove the failed\n   buffer from the checkpoint list and abort the journal\n3. when checkpointing fails, don\u0027t update the journal super block to\n   prevent the journaled contents from being cleaned.  For safety,\n   don\u0027t update j_tail and j_tail_sequence either\n4. when checkpointing fails, notify this error to the ext4 layer so\n   that ext4 don\u0027t clear the needs_recovery flag, otherwise the\n   journaled contents are ignored and cleaned in the recovery phase\n5. if the recovery fails, keep the needs_recovery flag\n6. prevent jbd2_cleanup_journal_tail() from being called between\n   __jbd2_journal_drop_transaction() and jbd2_journal_abort()\n   (a possible race issue between jbd2_log_do_checkpoint()s called by\n   jbd2_journal_flush() and __jbd2_log_wait_for_space())\n\nSigned-off-by: Hidehiro Kawai \u003chidehiro.kawai.ez@hitachi.com\u003e\nSigned-off-by: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "05496769e5da83ce22ed97345afd9c7b71d6bd24",
      "tree": "545c4d66296fe69ab24d34fd2f0298fb8ee66e4f",
      "parents": [
        "899fc1a4cf404747de2666534d508804597ee22f"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 16 14:36:17 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Sep 16 14:36:17 2008 -0400"
      },
      "message": "jbd2: clean up how the journal device name is printed\n\nCalculate the journal device name once and stash it away in the\njournal_s structure.  This avoids needing to call bdevname()\neverywhere and reduces stack usage by not needing to allocate an\non-stack buffer.  In addition, we eliminate the \u0027/\u0027 that can appear in\ndevice names (e.g. \"cciss/c0d0p9\" --- see kernel bugzilla #11321) that\ncan cause problems when creating proc directory names, and include the\ninode number to support ocfs2 which creates multiple journals with\ndifferent inode numbers.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\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": "736603ab297506f4396cb5af592004499950fcfd",
      "tree": "80d1f84702e1bfaca5d60482540b8294acd30bd3",
      "parents": [
        "4db9c54a53135b7c1c1f403f1aeaf9fc0d7738b8"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "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: Add commit time into the commit block\n\nCarlo Wood has demonstrated that it\u0027s possible to recover deleted\nfiles from the journal.  Something that will make this easier is if we\ncan put the time of the commit into commit block.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "624080eded68738daee041ad64672a9d2614754f",
      "tree": "c1350c70233c1f7536a1927bacabe4084770d3c7",
      "parents": [
        "8ea76900be3b4522396e2021260d2818a27b3a5b"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jun 06 17:50:40 2008 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Jun 06 17:50:40 2008 -0400"
      },
      "message": "jbd2: If a journal checksum error is detected, propagate the error to ext4\n\nIf a journal checksum error is detected, the ext4 filesystem will call\next4_error(), and the mount will either continue, become a read-only\nmount, or cause a kernel panic based on the superblock flags\nindicating the user\u0027s preference of what to do in case of filesystem\ncorruption being detected.\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "5a6483feb0c5193519625d0ea8c4254364d423cc",
      "tree": "2235220e522882ac5872937fa43d3d1b188c1f4e",
      "parents": [
        "cb688371e27880d86c42323826846d1cd7caad8f"
      ],
      "author": {
        "name": "Matthew Wilcox",
        "email": "matthew@wil.cx",
        "time": "Tue Feb 26 10:00:17 2008 -0500"
      },
      "committer": {
        "name": "Matthew Wilcox",
        "email": "willy@linux.intel.com",
        "time": "Fri Apr 18 22:16:54 2008 -0400"
      },
      "message": "include: Remove unnecessary inclusions of asm/semaphore.h\n\nNone of these files use any of the functionality promised by\nasm/semaphore.h.  It\u0027s possible that they (or some user of them) rely\non it dragging in some unrelated header file, but I can\u0027t build all\nthese files, so we\u0027ll have to fix any build failures as they come up.\n\nSigned-off-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\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": "818d276ceb83aa9fdebb5e0a53188290312de987",
      "tree": "de3fb4ffadd72caea2876c5232ce76cd14b3646e",
      "parents": [
        "8e85fb3f305b24b79c6d9cb7a56d22b062335ad3"
      ],
      "author": {
        "name": "Girish Shilamkar",
        "email": "girish@clusterfs.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": "ext4: Add the journal checksum feature\n\nThe journal checksum feature adds two new flags i.e\nJBD2_FEATURE_INCOMPAT_ASYNC_COMMIT and JBD2_FEATURE_COMPAT_CHECKSUM.\n\nJBD2_FEATURE_CHECKSUM flag indicates that the commit block contains the\nchecksum for the blocks described by the descriptor blocks.\nDue to checksums, writing of the commit record no longer needs to be\nsynchronous. Now commit record can be sent to disk without waiting for\ndescriptor blocks to be written to disk. This behavior is controlled\nusing JBD2_FEATURE_ASYNC_COMMIT flag. Older kernels/e2fsck should not be\nable to recover the journal with _ASYNC_COMMIT hence it is made\nincompat.\nThe commit header has been extended to hold the checksum along with the\ntype of the checksum.\n\nFor recovery in pass scan checksums are verified to ensure the sanity\nand completeness(in case of _ASYNC_COMMIT) of every transaction.\n\nSigned-off-by: Andreas Dilger \u003cadilger@clusterfs.com\u003e\nSigned-off-by: Girish Shilamkar \u003cgirish@clusterfs.com\u003e\nSigned-off-by: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\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": "f5a7a6b0d9b6af7d46124ed3f6b3995225cb62d0",
      "tree": "cbb2bc79a488461bf3bec9b60d15e21717dc8360",
      "parents": [
        "36df53f4a3e445175fc1e9d7f433599482ec6d7f"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "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: Fix assertion failure in fs/jbd2/checkpoint.c\n\nBefore we start committing a transaction, we call\n__journal_clean_checkpoint_list() to cleanup transaction\u0027s written-back\nbuffers.\n\nIf this call happens to remove all of them (and there were already some\nbuffers), __journal_remove_checkpoint() will decide to free the transaction\nbecause it isn\u0027t (yet) a committing transaction and soon we fail some\nassertion - the transaction really isn\u0027t ready to be freed :).\n\nWe change the check in __journal_remove_checkpoint() to free only a\ntransaction in T_FINISHED state.  The locking there is subtle though (as\neverywhere in JBD ;().  We use j_list_lock to protect the check and a\nsubsequent call to __journal_drop_transaction() and do the same in the end\nof journal_commit_transaction() which is the only place where a transaction\ncan get to T_FINISHED state.\n\nProbably I\u0027m too paranoid here and such locking is not really necessary -\ncheckpoint lists are processed only from log_do_checkpoint() where a\ntransaction must be already committed to be processed or from\n__journal_clean_checkpoint_list() where kjournald itself calls it and thus\ntransaction cannot change state either.  Better be safe if something\nchanges in future...\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "36df53f4a3e445175fc1e9d7f433599482ec6d7f",
      "tree": "1910220814219b51d0a049269758e07ec46938df",
      "parents": [
        "abcb2947c91130426539f209f7a473a67a1f6663"
      ],
      "author": {
        "name": "Chris Snook",
        "email": "csnook@redhat.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: Remove printk from J_ASSERT to preserve registers during BUG\n\nSigned-off-by: Chris Snook \u003ccsnook@redhat.com\u003e\nCc: \"Stephen C. Tweedie\" \u003csct@redhat.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "cd02ff0b14b7e27cbdfd7ff2814b08199a2b7168",
      "tree": "fd9158bb92d086838a1b81b549243f3cdc23a7b8",
      "parents": [
        "d802ffa8850f2a80d141457d7221809182ed8c9f"
      ],
      "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:58 2007 -0400"
      },
      "message": "jbd2: JBD_XXX to JBD2_XXX naming cleanup\n\nchange JBD_XXX macros to JBD2_XXX in JBD2/Ext4\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\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": "0f49d5d019afa4e94253bfc92f0daca3badb990b",
      "tree": "9a8266d3a7292a0632df0f970f6377a8b8b98658",
      "parents": [
        "e23291b9120c11aafb2ee76fb71a062eb3c1056c"
      ],
      "author": {
        "name": "Jose R. Santos",
        "email": "jrs@us.ibm.com",
        "time": "Wed Jul 18 08:50:18 2007 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jul 18 08:50:18 2007 -0400"
      },
      "message": "jbd2: Move jbd2-debug file to debugfs\n\nThe jbd2-debug file used to be located in /proc/sys/fs/jbd2-debug, but it\nincorrectly used create_proc_entry() instead of the sysctl routines, and\nno proc entry was ever created.\n\nInstead of fixing this we might as well move the jbd2-debug file to\ndebugfs which would be the preferred location for this kind of tunable.\nThe new location is now /sys/kernel/debug/jbd2/jbd2-debug.\n\nSigned-off-by: Jose R. Santos \u003cjrs@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n"
    },
    {
      "commit": "e23291b9120c11aafb2ee76fb71a062eb3c1056c",
      "tree": "1a0f458c5c2803eb9a959e79622974cd5db4f985",
      "parents": [
        "eb40a09c679d7f9709f7087add57f2e1c7122bb3"
      ],
      "author": {
        "name": "Jose R. Santos",
        "email": "jrs@us.ibm.com",
        "time": "Wed Jul 18 08:57:06 2007 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Wed Jul 18 08:57:06 2007 -0400"
      },
      "message": "jbd2: Fix CONFIG_JBD_DEBUG ifdef to be CONFIG_JBD2_DEBUG\n\nWhen the JBD code was forked to create the new JBD2 code base, the\nreferences to CONFIG_JBD_DEBUG where never changed to\nCONFIG_JBD2_DEBUG.  This patch fixes that.\n\nSigned-off-by: Jose R. Santos \u003cjrs@us.ibm.com\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\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": "e18b890bb0881bbab6f4f1a6cd20d9c60d66b003",
      "tree": "4828be07e1c24781c264b42c5a75bcd968223c3f",
      "parents": [
        "441e143e95f5aa1e04026cb0aa71c801ba53982f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] slab: remove kmem_cache_t\n\nReplace all uses of kmem_cache_t with struct kmem_cache.\n\nThe patch was generated using the following script:\n\n\t#!/bin/sh\n\t#\n\t# Replace one string by another in all the kernel sources.\n\t#\n\n\tset -e\n\n\tfor file in `find * -name \"*.c\" -o -name \"*.h\"|xargs grep -l $1`; do\n\t\tquilt add $file\n\t\tsed -e \"1,\\$s/$1/$2/g\" $file \u003e/tmp/$$\n\t\tmv /tmp/$$ $file\n\t\tquilt refresh\n\tdone\n\nThe script was run like this\n\n\tsh replace kmem_cache_t \"struct kmem_cache\"\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "18eba7aae080d4a5c0d850ea810e83d11f0a8d77",
      "tree": "58277e871787fad73c588b3ba81899f9c8b98553",
      "parents": [
        "9b8f1f0106ab39ad58765d4e7c57189835f51127"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Wed Oct 11 01:21:13 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 11 11:14:18 2006 -0700"
      },
      "message": "[PATCH] jbd2: switch blks_type from sector_t to ull\n\nSimilar to ext4, change blocks in JBD2 from sector_t to unsigned long long.\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": "299717696d48531d70aeb4614c3939e4a28456c1",
      "tree": "d63c05b0192e480917c48126b2ac7c0f74d08018",
      "parents": [
        "b517bea1c74e4773482b3f41b3f493522a8c8e30"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Wed Oct 11 01:21:09 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 11 11:14:17 2006 -0700"
      },
      "message": "[PATCH] jbd2: sector_t conversion\n\nJBD layer in-kernel block varibles type fixes to support \u003e32 bit block number\nand convert to sector_t type.\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": "b517bea1c74e4773482b3f41b3f493522a8c8e30",
      "tree": "1e98110151f1a35cde84ce1a2cb6f0cb871e9551",
      "parents": [
        "d0d856e8bd6e697cb44b2b4dd038f3bec576a70e"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Wed Oct 11 01:21:08 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 11 11:14:16 2006 -0700"
      },
      "message": "[PATCH] 64-bit jbd2 core\n\nHere is the patch to JBD to handle 64 bit block numbers, originally from Zach\nBrown.  This patch is useful only after adding support for 64-bit block\nnumbers in the filesystem.\n\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nSigned-off-by: Zach Brown \u003czach.brown@oracle.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": "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"
    }
  ]
}
