)]}'
{
  "log": [
    {
      "commit": "041e0e3b1970c508dc9a95b7dd9dc86271a7d7ac",
      "tree": "41ff880a87412cf55eb12425e916fda57955ee5c",
      "parents": [
        "373016e9e1353f2af871993d27d00768f08cc883"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Sat Sep 10 00:27:23 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Sep 10 10:06:36 2005 -0700"
      },
      "message": "[PATCH] fs: fix-up schedule_timeout() usage\n\nUse schedule_timeout_{,un}interruptible() instead of\nset_current_state()/schedule_timeout() to reduce kernel size.  Also use helper\nfunctions to convert between human time units and jiffies rather than constant\nHZ division to avoid rounding errors.\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4407c2b6b297339e296facf62e020cf66e55053d",
      "tree": "485d60b1cb5c6013d09a0327355e216b202bd8ed",
      "parents": [
        "e39f07c83bac96850265b87a69dfc5c90ed4f1f5"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Sep 06 15:19:17 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:57 2005 -0700"
      },
      "message": "[PATCH] Fix race in do_get_write_access()\n\n  attached patch should fix the following race:\n     Proc 1                               Proc 2\n\n     __flush_batch()\n       ll_rw_block()\n                                        do_get_write_access()\n\t\t\t\t\t   lock_buffer\n                                             jh is only waiting for checkpoint\n\t\t\t\t\t     -\u003e b_transaction \u003d\u003d NULL -\u003e\n\t\t\t\t\t     do nothing\n                                           unlock_buffer\n    test_set_buffer_locked()\n    test_clear_buffer_dirty()\n                                           __journal_file_buffer()\n                                        change the data\n    submit_bh()\n\nand we have sent wrong data to disk...  We now clean the dirty buffer flag\nunder buffer lock in all cases and hence we know that whenever a buffer is\nstarting to be journaled we either finish the pending write-out before\nattaching a buffer to a transaction or we won\u0027t write the buffer until the\ntransaction is going to be committed.\n\nThe test in jbd_unexpected_dirty_buffer() is redundant - remove it.\nFurthermore we have to clear the buffer dirty bit under the buffer lock to\nprevent races with buffer write-out (and hence prevent returning a buffer with\nIO happening).\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "26707699b5337ea471ba1774447e8a1170c99e52",
      "tree": "13ea647feb0f0eb026a4a00fd0e1d522d71876ca",
      "parents": [
        "a7662236253374012d364106b6dc9161bd929e2e"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Sep 06 15:19:12 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:55 2005 -0700"
      },
      "message": "[PATCH] Change ll_rw_block() calls in JBD\n\nWe must be sure that the current data in buffer are sent to disk.  Hence we\nhave to call ll_rw_block() with SWRITE.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e6c9f5c1888097c936334bf9740024520ca47b8e",
      "tree": "6fcf2cccb7e4d155dd663f10001efdb2a9d7daae",
      "parents": [
        "cbf0d27a131639f4f3e4faa94373c5c6f89f8f07"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Sep 06 15:19:09 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:54 2005 -0700"
      },
      "message": "[PATCH] Fix JBD race in t_forget list handling\n\nFix race between journal_commit_transaction() and other places as\njournal_unmap_buffer() that are adding buffers to transaction\u0027s t_forget list.\n We have to protect against such places by holding j_list_lock even when\ntraversing the t_forget list.  The fact that other places can only add buffers\nto the list makes the locking easier.  OTOH the lock ranking complicates the\nstuff...\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "cbf0d27a131639f4f3e4faa94373c5c6f89f8f07",
      "tree": "327deb90d3e77bf65189ff41c6121e2e865537ea",
      "parents": [
        "3870ee8c63d5e55aea990654dfeb231264e13134"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Sep 06 15:19:08 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:54 2005 -0700"
      },
      "message": "[PATCH] kjournald: missing JFS_UNMOUNT check\n\nIt seems that kjournald() may be missing a check of the JFS_UNMOUNT flag\nbefore calling schedule().  This showed up in testing of OCFS2 recovery\nwhere our recovery thread would hang in journal_kill_thread() called from\njournal_destroy() because kjournald never got a chance to read the flag to\nshut down before the schedule().\n\nZach pointed out the missing check which led me to hack up this trivial\npatch.  It\u0027s been tested many times now and I have yet to reproduce the\nhang, which was happening very regularly before.\n\n\u003cmild rant\u003e\nI\u0027m guessing that we could really use some wait_event() calls with helper\nfunctions in, well, most of jbd these days which would make a ton of the\nwait code there vastly cleaner.\n\u003c/mild rant\u003e\n\nAs for why this doesn\u0027t happen in ext3 (or OCFS2 during normal\nmount/unmount of the local nodes journal), I think it may that the specific\ntiming of events in the ocfs2 recovery thread exposes a race there.\nBecause ocfs2_replay_journal() is only interested in playing back the\njournal, initialization and shutdown happen very quicky with no other\nmetadata put into that specific journal.\n\nAcked-by: \"Stephen C. Tweedie\" \u003csct@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "022a4a7bbdefdedc2706a13c81c832d8c3173c6d",
      "tree": "e7bf4f08f02c35b39769a5c2aeeea020c055de99",
      "parents": [
        "202e5979af4d91c7ca05892641131dee22653259"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Tue Sep 06 15:16:41 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:19 2005 -0700"
      },
      "message": "[PATCH] fs/jbd/: cleanups\n\nThis patch contains the following cleanups:\n- make needlessly global functions static\n- journal.c: remove the unused global function __journal_internal_check\n             and move the check to journal_init\n- remove the following write-only global variable:\n  - journal.c: current_journal\n- remove the following unneeded EXPORT_SYMBOL:\n  - journal.c: journal_recover\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nAcked-by: Andreas Dilger \u003cadilger@clusterfs.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3e1d1d28d99dabe63c64f7f40f1ca1d646de1f73",
      "tree": "d1e7c1e2e8902072042aefc3a7976b271cf76021",
      "parents": [
        "b3e112bcc19abd8e9657dca34a87316786e096f3"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "christoph@lameter.com",
        "time": "Fri Jun 24 23:13:50 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Jun 25 17:10:13 2005 -0700"
      },
      "message": "[PATCH] Cleanup patch for process freezing\n\n1. Establish a simple API for process freezing defined in linux/include/sched.h:\n\n   frozen(process)\t\tCheck for frozen process\n   freezing(process)\t\tCheck if a process is being frozen\n   freeze(process)\t\tTell a process to freeze (go to refrigerator)\n   thaw_process(process)\tRestart process\n   frozen_process(process)\tProcess is frozen now\n\n2. Remove all references to PF_FREEZE and PF_FROZEN from all\n   kernel sources except sched.h\n\n3. Fix numerous locations where try_to_freeze is manually done by a driver\n\n4. Remove the argument that is no longer necessary from two function calls.\n\n5. Some whitespace cleanup\n\n6. Clear potential race in refrigerator (provides an open window of PF_FREEZE\n   cleared before setting PF_FROZEN, recalc_sigpending does not check\n   PF_FROZEN).\n\nThis patch does not address the problem of freeze_processes() violating the rule\nthat a task may only modify its own flags by setting PF_FREEZE. This is not clean\nin an SMP environment. freeze(process) is therefore not SMP safe!\n\nSigned-off-by: Christoph Lameter \u003cchristoph@lameter.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7e3b11a9be6ac94bf4af81757b6a10e7e65b846f",
      "tree": "6159b542abf0515e5980822546ca0f84380cd3d3",
      "parents": [
        "00ea81459c279f14a7b344320a71c94f60f88929"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Jun 02 14:02:01 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 02 15:12:29 2005 -0700"
      },
      "message": "[PATCH] ext3: fix list scanning in __cleanup_transaction\n\nFix a bug in list scanning that can cause us to skip the last buffer on the\ncheckpoint list (and hence fail to do any progress under some rather\nunfavorable conditions).\n\nThe problem is we first do jh\u003dnext_jh and then test\n\n\t} while (jh!\u003dlast_jh);\n\nHence we skip the last buffer on the list (if it was not the only buffer on\nthe list).  As we already do jh\u003dnext_jh; in the beginning of the loop we\nare safe to just remove the assignment in the end.  It can happen that \u0027jh\u0027\nwill be freed at the point we test jh !\u003d last_jh but that does not matter\nas we never *dereference* the pointer.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "00ea81459c279f14a7b344320a71c94f60f88929",
      "tree": "b68c067a416e7c303823a1f7477daa9f05b37819",
      "parents": [
        "1e86d1c648508fd50e6c9960576b87906a7906ad"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Jun 02 14:02:00 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 02 15:12:29 2005 -0700"
      },
      "message": "[PATCH] ext3: fix log_do_checkpoint() assertion failure\n\nFix possible false assertion failure in log_do_checkpoint().  We might fail\nto detect that we actually made a progress when cleaning up the checkpoint\nlists if we don\u0027t retry after writing something to disk.  The patch was\nconfirmed to fix observed assertion failures for several users.\n\nWhen we flushed some buffers we need to retry scanning the list.\nOtherwise we can fail to detect our progress.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d13df84ff7f3f3e26a9643c1d3cbf94cef9b5b59",
      "tree": "9531a56973381aa48a10fbc7073d1109f380d550",
      "parents": [
        "19272d4385126c2ac369c9f6137a27a08aee50d1"
      ],
      "author": {
        "name": "akpm@osdl.org",
        "email": "akpm@osdl.org",
        "time": "Sat Apr 16 15:26:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:26:36 2005 -0700"
      },
      "message": "[PATCH] jbd dirty buffer leak fix\n\nThis fixes the lots-of-fsx-linux-instances-cause-a-slow-leak bug.\n\nIt\u0027s been there since 2.6.6, caused by:\n\nftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.5/2.6.5-mm4/broken-out/jbd-move-locked-buffers.patch\n\nThat patch moves under-writeout ordered-data buffers onto a separate journal\nlist during commit.  It took out the old code which was based on a single\nlist.\n\nThe old code (necessarily) had logic which would restart I/O against buffers\nwhich had been redirtied while they were on the committing transaction\u0027s\nt_sync_datalist list.  The new code only writes buffers once, ignoring\nredirtyings by a later transaction, which is good.\n\nBut over on the truncate side of things, in journal_unmap_buffer(), we\u0027re\ntreating buffers on the t_locked_list as inviolable things which belong to the\ncommitting transaction, and we just leave them alone during concurrent\ntruncate-vs-commit.\n\nThe net effect is that when truncate tries to invalidate a page whose buffers\nare on t_locked_list and have been redirtied, journal_unmap_buffer() just\nleaves those buffers alone.  truncate will remove the page from its mapping\nand we end up with an anonymous clean page with dirty buffers, which is an\nillegal state for a page.  The JBD commit will not clean those buffers as they\nare removed from t_locked_list.  The VM (try_to_free_buffers) cannot reclaim\nthese pages.\n\nThe patch teaches journal_unmap_buffer() about buffers which are on the\ncommitting transaction\u0027s t_locked_list.  These buffers have been written and\nI/O has completed.  We can take them off the transaction and undirty them\nwithin the context of journal_invalidatepage()-\u003ejournal_unmap_buffer().\n\nAcked-by: \"Stephen C. Tweedie\" \u003csct@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
