)]}'
{
  "log": [
    {
      "commit": "5277970878a32e437b27296e34c592e5d351f11d",
      "tree": "64f41152b95e670935192ee6061653d922b642f3",
      "parents": [
        "03f4d804a1b4748885dc4613a4afe10089a731c8"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 15 22:24:26 2010 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri May 21 19:30:41 2010 +0200"
      },
      "message": "ext3: Fix waiting on transaction during fsync\n\nlog_start_commit() returns 1 only when it started a transaction\ncommit. Thus in case transaction commit is already running, we\nfail to wait for the commit to finish. Fix the issue by always\nwaiting for the commit regardless of the log_start_commit return\nvalue.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "03f4d804a1b4748885dc4613a4afe10089a731c8",
      "tree": "f2d7be9a0205496f14d61e6a8fe62277e653fab8",
      "parents": [
        "311b9549ed2bb0f2c2257781c3e88cb00505e80e"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 15 22:16:24 2010 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri May 21 19:30:40 2010 +0200"
      },
      "message": "jbd: Provide function to check whether transaction will issue data barrier\n\nProvide a function which returns whether a transaction with given tid\nwill send a barrier to the filesystem device. The function will be used\nby ext3 to detect whether fsync needs to send a separate barrier or not.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\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": "318ae2edc3b29216abd8a2510f3f80b764f06858",
      "tree": "ce595adde342f57f379d277b25e4dd206988a052",
      "parents": [
        "25cf84cf377c0aae5dbcf937ea89bc7893db5176",
        "3e58974027b04e84f68b964ef368a6cd758e2f84"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Mar 08 16:55:37 2010 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Mar 08 16:55:37 2010 +0100"
      },
      "message": "Merge branch \u0027for-next\u0027 into for-linus\n\nConflicts:\n\tDocumentation/filesystems/proc.txt\n\tarch/arm/mach-u300/include/mach/debug-macro.S\n\tdrivers/net/qlge/qlge_ethtool.c\n\tdrivers/net/qlge/qlge_main.c\n\tdrivers/net/typhoon.c\n"
    },
    {
      "commit": "86963918965eb8fe0c8ae009e7c1b4c630f533d5",
      "tree": "333371098928c834b0bda0c2fe5bfd591a3806ef",
      "parents": [
        "e5472147e1c0712d95d973acfdbd862957c77add"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Feb 16 20:37:12 2010 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:26 2010 +0100"
      },
      "message": "jbd: Delay discarding buffers in journal_unmap_buffer\n\nDelay discarding buffers in journal_unmap_buffer until\nwe know that \"add to orphan\" operation has definitely been\ncommitted, otherwise the log space of committing transation\nmay be freed and reused before truncate get committed, updates\nmay get lost if crash happens.\n\nThis patch is a backport of JBD2 fix by dingdinghua \u003cdingdinghua@nrchpc.ac.cn\u003e.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "3ad2f3fbb961429d2aa627465ae4829758bc7e07",
      "tree": "f365c513e8f5b477a61336a600ff54f32b7ad6e1",
      "parents": [
        "1537a3638cbf741d3826c1002026cce487a6bee0"
      ],
      "author": {
        "name": "Daniel Mack",
        "email": "daniel@caiaq.de",
        "time": "Wed Feb 03 08:01:28 2010 +0800"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Tue Feb 09 11:13:56 2010 +0100"
      },
      "message": "tree-wide: Assorted spelling fixes\n\nIn particular, several occurances of funny versions of \u0027success\u0027,\n\u0027unknown\u0027, \u0027therefore\u0027, \u0027acknowledge\u0027, \u0027argument\u0027, \u0027achieve\u0027, \u0027address\u0027,\n\u0027beginning\u0027, \u0027desirable\u0027, \u0027separate\u0027 and \u0027necessary\u0027 are fixed.\n\nSigned-off-by: Daniel Mack \u003cdaniel@caiaq.de\u003e\nCc: Joe Perches \u003cjoe@perches.com\u003e\nCc: Junio C Hamano \u003cgitster@pobox.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "765f8361902d015c864d5e62019b2f139452d7ef",
      "tree": "f872385ae91fc926b036038e583a7f72ab5f3459",
      "parents": [
        "39bc680a8160bb9d6743f7873b535d553ff61058"
      ],
      "author": {
        "name": "Yin Kangkai",
        "email": "kangkai.yin@intel.com",
        "time": "Tue Dec 15 14:48:25 2009 -0800"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Dec 23 13:44:13 2009 +0100"
      },
      "message": "jbd: jbd-debug and jbd2-debug should be writable\n\njbd-debug and jbd2-debug is currently read-only (S_IRUGO), which is not\ncorrect. Make it writable so that we can start debuging.\n\nSigned-off-by: Yin Kangkai \u003ckangkai.yin@intel.com\u003e\nReviewed-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "b6e3224fb20954f155e41ec5709b2ab70b50ae2d",
      "tree": "96302d1b564c879779b9cc5d7aae7c3c4471ed14",
      "parents": [
        "a2770d86b33024f71df269fde2de096df89d6a48"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 17 13:23:24 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 17 13:23:24 2009 -0800"
      },
      "message": "Revert \"task_struct: make journal_info conditional\"\n\nThis reverts commit e4c570c4cb7a95dbfafa3d016d2739bf3fdfe319, as\nrequested by Alexey:\n\n \"I think I gave a good enough arguments to not merge it.\n  To iterate:\n   * patch makes impossible to start using ext3 on EXT3_FS\u003dn kernels\n     without reboot.\n   * this is done only for one pointer on task_struct\"\n\n  None of config options which define task_struct are tristate directly\n  or effectively.\"\n\nRequested-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e4c570c4cb7a95dbfafa3d016d2739bf3fdfe319",
      "tree": "ce2be0a79fa2e8d8271426f0fc27b25e83c050b4",
      "parents": [
        "8420e7efa1cf155765c6d77c91d3e3547c7aa557"
      ],
      "author": {
        "name": "Hiroshi Shimamoto",
        "email": "h-shimamoto@ct.jp.nec.com",
        "time": "Mon Dec 14 18:00:26 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:27 2009 -0800"
      },
      "message": "task_struct: make journal_info conditional\n\njournal_info in task_struct is used in journaling file system only.  So\nintroduce CONFIG_FS_JOURNAL_INFO and make it conditional.\n\nSigned-off-by: Hiroshi Shimamoto \u003ch-shimamoto@ct.jp.nec.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: KONISHI Ryusuke \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ff5e4b51a397568c6a2901903c35a4bfaaf752a4",
      "tree": "ce0561bb54b4bd433cd8797e31817d25235a7c13",
      "parents": [
        "aa021baa3295fa6e3f367d80f8955dd5176656eb"
      ],
      "author": {
        "name": "Stefan Schmidt",
        "email": "stefan@datenfreihafen.org",
        "time": "Thu Nov 12 09:53:50 2009 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Nov 12 10:24:12 2009 +0100"
      },
      "message": "fs/jbd: Export log_start_commit to fix ext3 build.\n\nThis fixes:\nERROR: \"log_start_commit\" [fs/ext3/ext3.ko] undefined!\n\nSigned-off-by: Stefan Schmidt \u003cstefan@datenfreihafen.org\u003e\n"
    },
    {
      "commit": "7b02bec07efe1d6c7d48c786e0c1a38d28fe7245",
      "tree": "cb93e26c107052be83ba52a74652c44c3ba199da",
      "parents": [
        "fe8bc91c4c30122b357d197117705cfd4fabaf28"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Tue Nov 10 17:13:22 2009 +0800"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Nov 11 15:24:14 2009 +0100"
      },
      "message": "JBD/JBD2: free j_wbuf if journal init fails.\n\nIf journal init fails, we need to free j_wbuf.\n\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "3adae9da0b35d2ca908039f42a1e90395c335181",
      "tree": "bc7d971ffb673dab926a4c3d02411a2b78b58f6a",
      "parents": [
        "9c28cbccec66a5ca292c6659bf5a0fe0c8459fa7"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Aug 11 17:27:21 2009 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Sep 16 17:44:10 2009 +0200"
      },
      "message": "jbd: Annotate transaction start also for journal_restart()\n\nlockdep annotation for a transaction start has been at the end of\njournal_start(). But a transaction is also started from journal_restart(). Move\nthe lockdep annotation to start_this_handle() which covers both cases.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "9c28cbccec66a5ca292c6659bf5a0fe0c8459fa7",
      "tree": "d43540ca30413ac8b3717e29f15ccbbe789a76c5",
      "parents": [
        "19003c18e9b41f5c3aeb81c92356f90958e1f22f"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Aug 03 19:21:00 2009 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Sep 16 17:44:10 2009 +0200"
      },
      "message": "jbd: Journal block numbers can ever be only 32-bit use unsigned int for them\n\nIt does not make sense to store block number for journal as unsigned long\nsince they can be only 32-bit (because of on-disk format limitation). So\nchange in-memory structures and variables to use unsigned int instead.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "b449fc6fcc07a392c69f3c1db9a4ad4dda8cbcba",
      "tree": "cc748936233e62cb8ae3325505e84805fb08b5ad",
      "parents": [
        "ab86e5765d41a5eb4239a1c04d613db87bea5ed8"
      ],
      "author": {
        "name": "Andreas Dilger",
        "email": "adilger@sun.com",
        "time": "Thu Jul 30 20:09:46 2009 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Sep 16 17:44:10 2009 +0200"
      },
      "message": "JBD: round commit timer up to avoid uncommitted transaction\n\nFix jiffie rounding in jbd commit timer setup code.  Rounding down could cause\nthe timer to be fired before the corresponding transaction has expired.  That\ntransaction can stay not committed forever if no new transaction is created or\nexplicit sync/umount happens.\n\nSigned-off-by: Andreas Dilger \u003cadilger@sun.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "f1015c447781729060c415f5133164c638561f25",
      "tree": "3fb03db8dc97bf9037cbdf91b71e28a2bbb8eed3",
      "parents": [
        "43237b5490e8f2f4679decd660064ff35ce490cc"
      ],
      "author": {
        "name": "dingdinghua",
        "email": "dingdinghua85@gmail.com",
        "time": "Wed Jul 15 21:42:05 2009 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Jul 21 11:54:42 2009 +0200"
      },
      "message": "jbd: fix race between write_metadata_buffer and get_write_access\n\nThe function journal_write_metadata_buffer() calls jbd_unlock_bh_state(bh_in)\ntoo early; this could potentially allow another thread to call get_write_access\non the buffer head, modify the data, and dirty it, and allowing the wrong data\nto be written into the journal.  Fortunately, if we lose this race, the only\ntime this will actually cause filesystem corruption is if there is a system\ncrash or other unclean shutdown of the system before the next commit can take\nplace.\n\nSigned-off-by: dingdinghua \u003cdingdinghua85@gmail.com\u003e\nAcked-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "1e9fd53b783ea646de3ee09a4574afeb6778d504",
      "tree": "0b87e9ca83c612a1c3c5b91a359f8604cde48c45",
      "parents": [
        "9eaaa2d5759837402ec5eee13b2a97921808c3eb"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Jun 24 17:31:40 2009 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Jul 15 21:30:07 2009 +0200"
      },
      "message": "jbd: Fix a race between checkpointing code and journal_get_write_access()\n\nThe following race can happen:\n\n  CPU1                          CPU2\n                                checkpointing code checks the buffer, adds\n                                  it to an array for writeback\ndo_get_write_access()\n  ...\n  lock_buffer()\n  unlock_buffer()\n                                  flush_batch() submits the buffer for IO\n  __jbd_journal_file_buffer()\n\n  So a buffer under writeout is returned from do_get_write_access(). Since\nthe filesystem code relies on the fact that journaled buffers cannot be\nwritten out, it does not take the buffer lock and so it can modify buffer\nwhile it is under writeout. That can lead to a filesystem corruption\nif we crash at the right moment. The similar problem can happen with\nthe journal_get_create_access() path.\n  We fix the problem by clearing the buffer dirty bit under buffer_lock\neven if the buffer is on BJ_None list. Actually, we clear the dirty bit\nregardless the list the buffer is in and warn about the fact if\nthe buffer is already journalled.\n\nThanks for spotting the problem goes to dingdinghua \u003cdingdinghua85@gmail.com\u003e.\n\nReported-by: dingdinghua \u003cdingdinghua85@gmail.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "7447a668a3860b66b3c9db86fdea91e355ba59ac",
      "tree": "f27e2c1df19e6558bce053e8ffa12bd121a30947",
      "parents": [
        "e9e961c9a818a2f24711af493b907a8e40a69efc"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Jul 15 20:36:08 2009 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Jul 15 21:26:23 2009 +0200"
      },
      "message": "jbd: Fail to load a journal if it is too short\n\nDue to on disk corruption, it can happen that journal is too short. Fail\nto load it in such case so that we don\u0027t oops somewhere later.\n\nReported-by: Nageswara R Sastry \u003crnsastry@linux.vnet.ibm.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "6f3f1cb21f08fbf757bbbbb0709ee515a7a7c6ad",
      "tree": "c6874d850ab2347dfeb58ea95a05422880fc0892",
      "parents": [
        "e8ef7aaea79a899be4d7f50e829900c0ce15e52f"
      ],
      "author": {
        "name": "Hisashi Hifumi",
        "email": "hifumi.hisashi@oss.ntt.co.jp",
        "time": "Wed Jun 17 16:26:23 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:45 2009 -0700"
      },
      "message": "jbd: clean up journal_try_to_free_buffers()\n\nI delete the following patch\n\"commit 3f31fddfa26b7594b44ff2b34f9a04ba409e0f91\nAuthor: Mingming Cao \u003ccmm@us.ibm.com\u003e\nDate:   Fri Jul 25 01:46:22 2008 -0700\n\n    jbd: fix race between free buffer and commit transaction\n\nThis patch is no longer needed because if race between freeing buffer and\ncommitting transaction functionality occurs and dio gets error, currently\ndio falls back to buffered IO by the following patch.\n\n\tcommit 6ccfa806a9cfbbf1cd43d5b6aa47ef2c0eb518fd\n\tAuthor: Hisashi Hifumi \u003chifumi.hisashi@oss.ntt.co.jp\u003e\n\tDate:   Tue Sep 2 14:35:40 2008 -0700\n\n   \tVFS: fix dio write returning EIO when try_to_release_page fails\n\nSigned-off-by: Hisashi Hifumi \u003chifumi.hisashi@oss.ntt.co.jp\u003e\nCc: Theodore Tso \u003ctytso@mit.edu\u003e\nCc: Mingming Cao \u003ccmm@us.ibm.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a61d90d75d0f9e86432c45b496b4b0fbf0fd03dc",
      "tree": "85d557e9d67cbad0347c6f12f7a60c474e485f7c",
      "parents": [
        "463aea1a1c49f1a7d4b50656dfd6c8bb33358b1b"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Jun 09 16:26:26 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 09 16:59:03 2009 -0700"
      },
      "message": "jbd: fix race in buffer processing in commit code\n\nIn commit code, we scan buffers attached to a transaction.  During this\nscan, we sometimes have to drop j_list_lock and then we recheck whether\nthe journal buffer head didn\u0027t get freed by journal_try_to_free_buffers().\n But checking for buffer_jbd(bh) isn\u0027t enough because a new journal head\ncould get attached to our buffer head.  So add a check whether the journal\nhead remained the same and whether it\u0027s still at the same transaction and\nlist.\n\nThis is a nasty bug and can cause problems like memory corruption (use after\nfree) or trigger various assertions in JBD code (observed).\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003cstable@kernel.org\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a4277bf122e907e4fec509fc0bd9bf5fde30b14e",
      "tree": "b359e8b0f7895acda1d6331332e69ea5b14d5f0d",
      "parents": [
        "6ae85d6db4871d8dbcb5cc0e9056f97f1ca07061",
        "b5451f7b2694b04d9f912f6cf09db1729f291996"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 24 08:37:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 24 08:37:40 2009 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:\n  ext4: Fix potential inode allocation soft lockup in Orlov allocator\n  ext4: Make the extent validity check more paranoid\n  jbd: use SWRITE_SYNC_PLUG when writing synchronous revoke records\n  jbd2: use SWRITE_SYNC_PLUG when writing synchronous revoke records\n  ext4: really print the find_group_flex fallback warning only once\n"
    },
    {
      "commit": "38d726d153cfe5efe5fe22d28d36ab382dda3a5c",
      "tree": "f5403a0abb0ac7e8bbdd12403a70d4151559e778",
      "parents": [
        "67c457a8c378a006a34d92f9bd3078a80a92f250"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Apr 14 10:10:47 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Tue Apr 14 10:10:47 2009 -0400"
      },
      "message": "jbd: 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"
    },
    {
      "commit": "32433879480d13bc019d5a067ce884064a93dd63",
      "tree": "652230bb84c0d93d06b8ed17049e9a8229283907",
      "parents": [
        "9de100d001564f58c3fb2ec1bd03e540ac0aa357"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Apr 13 14:40:06 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 13 15:04:32 2009 -0700"
      },
      "message": "jbd: update locking coments\n\nUpdate information about locking in JBD revoke code.\n\nReported-by: Lin Tan \u003ctammy000@gmail.com\u003e.\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6c4bac6b3351fd278dc3537dae42f88f733ff12e",
      "tree": "682fd65d652851a3a67a8994036dfb70be7b93c3",
      "parents": [
        "9cf6b720f84d6999ff9a514d0a939dd183846aaf"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Apr 06 14:48:04 2009 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 08:04:53 2009 -0700"
      },
      "message": "jbd: use WRITE_SYNC_PLUG instead of WRITE_SYNC\n\nWhen you are going to be submitting several sync writes, we want to\ngive the IO scheduler a chance to merge some of them. Instead of\nusing the implicitly unplugging WRITE_SYNC variant, use WRITE_SYNC_PLUG\nand rely on sync_buffer() doing the unplug when someone does a\nwait_on_buffer()/lock_buffer().\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "20bec8ab1458c24bed0d5492ee15d87807fc415a",
      "tree": "e5f910947dbe314b96a591e41e2cfb2d3322caad",
      "parents": [
        "18b34b9546dc192d978dda940673f40928d2e36e",
        "e7c8f5079ed9ec9e6eb1abe3defc5fb4ebfdf1cb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 11:10:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 11:10:33 2009 -0700"
      },
      "message": "Merge branch \u0027ext3-latency-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027ext3-latency-fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:\n  ext3: Add replace-on-rename hueristics for data\u003dwriteback mode\n  ext3: Add replace-on-truncate hueristics for data\u003dwriteback mode\n  ext3: Use WRITE_SYNC for commits which are caused by fsync()\n  block_write_full_page: Use synchronous writes for WBC_SYNC_ALL writebacks\n"
    },
    {
      "commit": "ecca9af0a98fdacfcdc73979d08481d7b27ff986",
      "tree": "41aa40eedd27799b2fa021138173c1adcabe89a5",
      "parents": [
        "039fd8ce6258e01ec29f1637f9bf1868dd877c55"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 16:57:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:52 2009 -0700"
      },
      "message": "jbd: fix oops in jbd_journal_init_inode() on corrupted fs\n\nOn 32-bit system with CONFIG_LBD getblk can fail because provided block\nnumber is too big. Make JBD gracefully handle that.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003cdmaciejak@fortinet.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "512a004382f2c60d5c4f855476ba965adc00250c",
      "tree": "e0ecfce01aab892a415b95d6d4c8c5a8bd033a49",
      "parents": [
        "a64c8610bd3b753c6aff58f51c04cdf0ae478c18"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Mar 27 22:14:27 2009 -0400"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Mar 27 22:14:27 2009 -0400"
      },
      "message": "ext3: 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\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "8fe4cd0dc5ea43760c59eb256404188272cc95dd",
      "tree": "f02892b7393c60b98b51202d868fa12b0a2339e2",
      "parents": [
        "fc3501d411d34823fb9be248a95a0c44f945866f"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Feb 11 13:04:25 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 11 14:25:35 2009 -0800"
      },
      "message": "jbd: fix return value of journal_start_commit()\n\njournal_start_commit() returns 1 if either a transaction is committing or\nthe function has queued a transaction commit.  But it returns 0 if we\nraced with somebody queueing the transaction commit as well.  This\nresulted in ext3_sync_fs() not functioning correctly (description from\nArthur Jones): In the case of a data\u003dordered umount with pending long\nsymlinks which are delayed due to a long list of other I/O on the backing\nblock device, this causes the buffer associated with the long symlinks to\nnot be moved to the inode dirty list in the second phase of fsync_super.\nThen, before they can be dirtied again, kjournald exits, seeing the UMOUNT\nflag and the dirty pages are never written to the backing block device,\ncausing long symlink corruption and exposing new or previously freed block\ndata to userspace.\n\nThis can be reproduced with a script created by Eric Sandeen\n\u003csandeen@redhat.com\u003e:\n\n        #!/bin/bash\n\n        umount /mnt/test2\n        mount /dev/sdb4 /mnt/test2\n        rm -f /mnt/test2/*\n        dd if\u003d/dev/zero of\u003d/mnt/test2/bigfile bs\u003d1M count\u003d512\n        touch /mnt/test2/thisisveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryverylongfilename\n        ln -s /mnt/test2/thisisveryveryveryveryveryveryveryveryveryveryveryveryveryveryveryverylongfilename\n        /mnt/test2/link\n        umount /mnt/test2\n        mount /dev/sdb4 /mnt/test2\n        ls /mnt/test2/\n\nThis patch fixes journal_start_commit() to always return 1 when there\u0027s\na transaction committing or queued for commit.\n\nCc: Eric Sandeen \u003csandeen@redhat.com\u003e\nCc: Mike Snitzer \u003csnitzer@gmail.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1579c3a15c06055713b42b077b805f818638302c",
      "tree": "8898416461b4451f095ea0a426dd8a9d91dfd95d",
      "parents": [
        "04143e2fb9d512c21e1dcfb561dbb0445dcfdc8c"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Jan 07 18:07:27 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:01 2009 -0800"
      },
      "message": "jbd: remove excess kernel-doc notation\n\nRemove excess kernel-doc from fs/jbd/transaction.c:\n\nWarning(linux-2.6.28-git5//fs/jbd/transaction.c:764): Excess function parameter \u0027credits\u0027 description in \u0027journal_get_write_access\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f420d4dc4272fd223986762df2ad06056ddebada",
      "tree": "2ae50476e901dc5c2e5d189d44785e27234bcce9",
      "parents": [
        "ef8b646183868b2d042fa6cde0eef2a31263ff85"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Wed Jan 07 18:07:24 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:00 2009 -0800"
      },
      "message": "jbd: improve fsync batching\n\nThere is a flaw with the way jbd handles fsync batching.  If we fsync() a\nfile and we were not the last person to run fsync() on this fs then we\nautomatically sleep for 1 jiffie in order to wait for new writers to join\ninto the transaction before forcing the commit.  The problem with this is\nthat with really fast storage (ie a Clariion) the time it takes to commit\na transaction to disk is way faster than 1 jiffie in most cases, so\nsleeping means waiting longer with nothing to do than if we just committed\nthe transaction and kept going.  Ric Wheeler noticed this when using\nfs_mark with more than 1 thread, the throughput would plummet as he added\nmore threads.\n\nThis patch attempts to fix this problem by recording the average time in\nnanoseconds that it takes to commit a transaction to disk, and what time\nwe started the transaction.  If we run an fsync() and we have been running\nfor less time than it takes to commit the transaction to disk, we sleep\nfor the delta amount of time and then commit to disk.  We acheive\nsub-jiffie sleeping using schedule_hrtimeout.  This means that the wait\ntime is auto-tuned to the speed of the underlying disk, instead of having\nthis static timeout.  I weighted the average according to somebody\u0027s\ncomments (Andreas Dilger I think) in order to help normalize random\noutliers where we take way longer or way less time to commit than the\naverage.  I also have a min() check in there to make sure we don\u0027t sleep\nlonger than a jiffie in case our storage is super slow, this was requested\nby Andrew.\n\nI unfortunately do not have access to a Clariion, so I had to use a\nramdisk to represent a super fast array.  I tested with a SATA drive with\nbarrier\u003d1 to make sure there was no regression with local disks, I tested\nwith a 4 way multipathed Apple Xserve RAID array and of course the\nramdisk.  I ran the following command\n\nfs_mark -d /mnt/ext3-test -s 4096 -n 2000 -D 64 -t $i\n\nwhere $i was 2, 4, 8, 16 and 32.  I mkfs\u0027ed the fs each time.  Here are my\nresults\n\ntype\tthreads\t\twith patch\twithout patch\nsata\t2\t\t24.6\t\t26.3\nsata\t4\t\t49.2\t\t48.1\nsata\t8\t\t70.1\t\t67.0\nsata\t16\t\t104.0\t\t94.1\nsata\t32\t\t153.6\t\t142.7\n\nxserve\t2\t\t246.4\t\t222.0\nxserve\t4\t\t480.0\t\t440.8\nxserve\t8\t\t829.5\t\t730.8\nxserve\t16\t\t1172.7\t\t1026.9\nxserve\t32\t\t1816.3\t\t1650.5\n\nramdisk\t2\t\t2538.3\t\t1745.6\nramdisk\t4\t\t2942.3\t\t661.9\nramdisk\t8\t\t2882.5\t\t999.8\nramdisk\t16\t\t2738.7\t\t1801.9\nramdisk\t32\t\t2541.9\t\t2394.0\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nCc: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nCc: Ric Wheeler \u003crwheeler@redhat.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e219cca082f52e7dfea41f3be264b7b5eb204227",
      "tree": "6d67c967064eed255b602626348e78119f84fb8b",
      "parents": [
        "45beca08dd8b6d6a65c5ffd730af2eac7a2c7a03"
      ],
      "author": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Nov 06 22:37:59 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Thu Nov 06 22:37:59 2008 -0500"
      },
      "message": "jbd: don\u0027t give up looking for space so easily in __log_wait_for_space\n\nCommit be07c4ed introducd a regression because it assumed that if\nthere were no transactions ready to be checkpointed, that no progress\ncould be made on making space available in the journal, and so the\njournal should be aborted.  This assumption is false; it could be the\ncase that simply calling cleanup_journal_tail() will recover the\nnecessary space, or, for small journals, the currently committing\ntransaction could be responsible for chewing up the required space in\nthe log, so we need to wait for the currently committing transaction\nto finish before trying to force a checkpoint operation.\n\nThis patch fixes the bug reported by Meelis Roos at:\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d11937\n\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Duane Griffin \u003cduaneg@dghda.com\u003e\nCc: Toshiyuki Okajima \u003ctoshi.okajima@jp.fujitsu.com\u003e\n"
    },
    {
      "commit": "e74481e23283fb080d4591c258de20785cc3b6c3",
      "tree": "bfc5076aa40d62beeba319fdb0fe55ed53f4b335",
      "parents": [
        "e99c97ade53fb6f5e665f2960eb86c624a532d7b"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Oct 29 14:01:10 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 30 11:38:46 2008 -0700"
      },
      "message": "fs: remove excess kernel-doc\n\nDelete excess kernel-doc notation in fs/ subdirectory:\n\nWarning(linux-2.6.27-git10//fs/jbd/transaction.c:886): Excess function parameter or struct member \u0027credits\u0027 description in \u0027journal_get_undo_access\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "be07c4ed4043ab8c26f222348136141335e47a2f",
      "tree": "6c9dc77098a4cfe4212091aaecd2350c7b301733",
      "parents": [
        "9f818b4ac04f53458d0354950b4f229f54be4dbf"
      ],
      "author": {
        "name": "Duane Griffin",
        "email": "duaneg@dghda.com",
        "time": "Wed Oct 22 14:15:03 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 08:55:02 2008 -0700"
      },
      "message": "jbd: abort instead of waiting for nonexistent transactions\n\nThe __log_wait_for_space function sits in a loop checkpointing\ntransactions until there is sufficient space free in the journal.\nHowever, if there are no transactions to be processed (e.g.  because the\nfree space calculation is wrong due to a corrupted filesystem) it will\nnever progress.\n\nCheck for space being required when no transactions are outstanding and\nabort the journal instead of endlessly looping.\n\nThis patch fixes the bug reported by Sami Liedes at:\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d10976\n\nSigned-off-by: Duane Griffin \u003cduaneg@dghda.com\u003e\nTested-by: Sami Liedes \u003csliedes@cc.hut.fi\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9f818b4ac04f53458d0354950b4f229f54be4dbf",
      "tree": "2f70be32757ea6b494e4272b7779950b282ed03c",
      "parents": [
        "2d7c820e56ce83b23daee9eb5343730fb309418e"
      ],
      "author": {
        "name": "Hidehiro Kawai",
        "email": "hidehiro.kawai.ez@hitachi.com",
        "time": "Wed Oct 22 14:15:02 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 08:55:02 2008 -0700"
      },
      "message": "jbd: test BH_Write_EIO to detect errors on metadata buffers\n\n__try_to_free_cp_buf(), __process_buffer(), and __wait_cp_io() test\nBH_Uptodate flag to detect write I/O errors on metadata buffers.  But by\ncommit 95450f5a7e53d5752ce1a0d0b8282e10fe745ae0 \"ext3: don\u0027t read inode\nblock if the buffer has a write error\"(*), BH_Uptodate flag can be set to\ninode buffers with BH_Write_EIO in order to avoid reading old inode data.\nSo now, we have to test BH_Write_EIO flag of checkpointing inode buffers\ninstead of BH_Uptodate.  This patch does it.\n\nSigned-off-by: Hidehiro Kawai \u003chidehiro.kawai.ez@hitachi.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4afe978530702c934dfdb11f54073136818b2119",
      "tree": "5f7fb9539b46c0b390157f55c84017e14b7f605c",
      "parents": [
        "66f50ee3cee4c9d98eea0add6f439e6e5e0ca4a5"
      ],
      "author": {
        "name": "Hidehiro Kawai",
        "email": "hidehiro.kawai.ez@hitachi.com",
        "time": "Wed Oct 22 14:15:00 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 08:55:01 2008 -0700"
      },
      "message": "jbd: fix error handling for checkpoint io\n\nWhen a checkpointing IO fails, current JBD code doesn\u0027t check the error\nand continue journaling.  This means latest metadata can be lost from both\nthe journal and filesystem.\n\nThis patch leaves the failed metadata blocks in the journal space and\naborts journaling in the case of log_do_checkpoint().  To achieve this, we\nneed 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. log_do_checkpoint() is the last chance, remove the failed buffer\n   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 ext3 layer so\n   that ext3 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 cleanup_journal_tail() from being called between\n   __journal_drop_transaction() and journal_abort() (a race issue\n   between journal_flush() and __log_wait_for_space()\n\nSigned-off-by: Hidehiro Kawai \u003chidehiro.kawai.ez@hitachi.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6da0b38f4433fb0f24615449d7966471b6e5eae0",
      "tree": "9f163fbbc7342406bb602de447293c0b11628c6f",
      "parents": [
        "0d468300dc97d6aec084799ffe39253ac366f1e4"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Oct 20 22:28:45 2008 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 11:43:59 2008 -0700"
      },
      "message": "fs/Kconfig: move ext2, ext3, ext4, JBD, JBD2 out\n\nUse fs/*/Kconfig more, which is good because everything related to one\nfilesystem is in one place and fs/Kconfig is quite fat.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "960a22ae60c8a723bd17da3b929fe0bcea6d007e",
      "tree": "844e3726fb6bdedd433854966e90116eb1d03c99",
      "parents": [
        "0e4fb5e283870757024294bc4567a7c59d936f0b"
      ],
      "author": {
        "name": "Hidehiro Kawai",
        "email": "hidehiro.kawai.ez@hitachi.com",
        "time": "Sat Oct 18 20:27:58 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:37 2008 -0700"
      },
      "message": "jbd: ordered data integrity fix\n\nIn ordered mode, if a file data buffer being dirtied exists in the\ncommitting transaction, we write the buffer to the disk, move it from the\ncommitting transaction to the running transaction, then dirty it.  But we\ndon\u0027t have to remove the buffer from the committing transaction when the\nbuffer couldn\u0027t be written out, otherwise it would miss the error and the\ncommitting transaction would not abort.\n\nThis patch adds an error check before removing the buffer from the\ncommitting transaction.\n\nSigned-off-by: Hidehiro Kawai \u003chidehiro.kawai.ez@hitachi.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0e4fb5e283870757024294bc4567a7c59d936f0b",
      "tree": "162263fe9e712124d3df886ca57d8db752a3237d",
      "parents": [
        "46d01a225e694f1a4343beea44f1e85105aedd7e"
      ],
      "author": {
        "name": "Hidehiro Kawai",
        "email": "hidehiro.kawai.ez@hitachi.com",
        "time": "Sat Oct 18 20:27:57 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:37 2008 -0700"
      },
      "message": "ext3: 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 blocks,\nthe file data corruption will spread silently.  Because most of\napplications and commands do buffered writes without fsync(), they don\u0027t\nnotice the IO error.  It\u0027s scary for mission critical systems.  On the\nother hand, if the journal aborts whenever it gets an IO error in file\ndata blocks, the system will easily become inoperable.  So this patch\nintroduces a filesystem option to determine whether it aborts the journal\nor just call printk() when it gets an IO error in file data.\n\nIf you mount a ext3 fs with data_err\u003dabort option, it aborts on file data\nwrite error.  If you mount it with data_err\u003dignore, it doesn\u0027t abort, just\ncall printk().  data_err\u003dignore is the default.\n\nSigned-off-by: Hidehiro Kawai \u003chidehiro.kawai.ez@hitachi.com\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "885e353c7427db7b60692789741b34e605b0b69b",
      "tree": "9b6787c07b02e7abd41a0db9575d799bcb5eaf3a",
      "parents": [
        "d1645e526a1e5842c9ac433d73419ba886676cf3"
      ],
      "author": {
        "name": "Hidehiro Kawai",
        "email": "hidehiro.kawai.ez@hitachi.com",
        "time": "Sat Oct 18 20:27:54 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:37 2008 -0700"
      },
      "message": "jbd: don\u0027t dirty original metadata buffer on abort\n\nCurrently, original metadata buffers are dirtied when they are unfiled\nwhether the journal has aborted or not.  Eventually these buffers will be\nwritten-back to the filesystem by pdflush.  This means some metadata\nbuffers are written to the filesystem without journaling if the journal\naborts.  So if both journal abort and system crash happen at the same\ntime, the filesystem would become inconsistent state.  Additionally,\nreplaying journaled metadata can overwrite the latest metadata on the\nfilesystem partly.  Because, if the journal aborts, journaled metadata are\npreserved and replayed during the next mount not to lose uncheckpointed\nmetadata.  This would also break the consistency of the filesystem.\n\nThis patch prevents original metadata buffers from being dirtied on abort\nby clearing BH_JBDDirty flag from those buffers.  Thus, no metadata\nbuffers are written to the filesystem without journaling.\n\nSigned-off-by: Hidehiro Kawai \u003chidehiro.kawai.ez@hitachi.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d1645e526a1e5842c9ac433d73419ba886676cf3",
      "tree": "daa856759312e60b0fcde672e805ae35da327ece",
      "parents": [
        "60c11d2abf4ef811d0ce3ea34279746729c4c6fc"
      ],
      "author": {
        "name": "Hidehiro Kawai",
        "email": "hidehiro.kawai.ez@hitachi.com",
        "time": "Sat Oct 18 20:27:53 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:36 2008 -0700"
      },
      "message": "jbd: abort when failed to log metadata buffers\n\nIf we failed to write metadata buffers to the journal space and succeeded\nto write the commit record, stale data can be written back to the\nfilesystem as metadata in the recovery phase.\n\nTo avoid this, when we failed to write out metadata buffers, abort the\njournal before writing the commit record.\n\nSigned-off-by: Hidehiro Kawai \u003chidehiro.kawai.ez@hitachi.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "23a0ee908cbfba3264d19729c67c22b20fa73886",
      "tree": "541103f6283cbac6b82cff88a7b91128acfce046",
      "parents": [
        "cc7a486cac78f6fc1a24e8cd63036bae8d2ab431",
        "0f2bc27be27ca1dcc66b96131e44bf7648b959c6"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Aug 12 00:11:49 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Aug 12 00:11:49 2008 +0200"
      },
      "message": "Merge branch \u0027core/locking\u0027 into core/urgent\n"
    },
    {
      "commit": "3295f0ef9ff048a4619ede597ad9ec9cab725654",
      "tree": "f39a8ecf1958130a0b86c554399d23a65b1c3991",
      "parents": [
        "8bfe0298f7a04952d19f4a2cf510d7a6311eeed0"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 10:30:30 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 10:30:30 2008 +0200"
      },
      "message": "lockdep: rename map_[acquire|release]() \u003d\u003e lock_map_[acquire|release]()\n\nthe names were too generic:\n\n drivers/uio/uio.c:87: error: expected identifier or \u0027(\u0027 before \u0027do\u0027\n drivers/uio/uio.c:87: error: expected identifier or \u0027(\u0027 before \u0027while\u0027\n drivers/uio/uio.c:113: error: \u0027map_release\u0027 undeclared here (not in a function)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4f3e7524b2e703d9f8b02ac338153a53dd7ede66",
      "tree": "0033ade94f230d6044ad318e3791c55ad611069e",
      "parents": [
        "f82b217e3513fe3af342c0f3ee1494e86250c21c"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Aug 11 09:30:23 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 09:30:23 2008 +0200"
      },
      "message": "lockdep: map_acquire\n\nMost the free-standing lock_acquire() usages look remarkably similar, sweep\nthem into a new helper.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ca5de404ff036a29b25e9a83f6919c9f606c5841",
      "tree": "474da867c4d4086313cee90cdc3560bb17fade96",
      "parents": [
        "529ae9aaa08378cfe2a4350bded76f32cc8ff0ce"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Aug 02 12:02:13 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 04 21:56:09 2008 -0700"
      },
      "message": "fs: rename buffer trylock\n\nLike the page lock change, this also requires name change, so convert the\nraw test_and_set bitop to a trylock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "529ae9aaa08378cfe2a4350bded76f32cc8ff0ce",
      "tree": "d3ae998f9876c72a83a022805103a92111852b21",
      "parents": [
        "e9ba9698187ddbc0c5bfcf41de0349a662d23d02"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Aug 02 12:01:03 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 04 21:31:34 2008 -0700"
      },
      "message": "mm: rename page trylock\n\nConverting page lock to new locking bitops requires a change of page flag\noperation naming, so we might as well convert it to something nicer\n(!TestSetPageLocked_Lock \u003d\u003e trylock_page, SetPageLocked \u003d\u003e set_page_locked).\n\nThis also facilitates lockdeping of page lock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cbe5f466f6995e10a10c7ae66d6dc8608f08a6b8",
      "tree": "237bbbda6ddd6e38dc7004cd870cbce7af0684c4",
      "parents": [
        "8ef2720397bb813d4985405a5ae7b8ad6474188b"
      ],
      "author": {
        "name": "Hidehiro Kawai",
        "email": "hidehiro.kawai.ez@hitachi.com",
        "time": "Fri Jul 25 01:46:30 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:32 2008 -0700"
      },
      "message": "jbd: don\u0027t abort if flushing file data failed\n\nIn ordered mode, the current jbd aborts the journal if a file data buffer\nhas an error.  But this behavior is unintended, and we found that it has\nbeen adopted accidentally.\n\nThis patch undoes it and just calls printk() instead of aborting the\njournal.  Additionally, set AS_EIO into the address_space object of the\nfailed buffer which is submitted by journal_do_submit_data() so that\nfsync() can get -EIO.\n\nMissing error checkings are also added to inform errors on file data\nbuffers to the user.  The following buffers are targeted.\n\n  (a) the buffer which has already been written out by pdflush\n  (b) the buffer which has been unlocked before scanned in the\n      t_locked_list loop\n\n[akpm@linux-foundation.org: improve grammar in a printk]\nSigned-off-by: Hidehiro Kawai \u003chidehiro.kawai.ez@hitachi.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fc80c44277b3c92d808b73e9d40e120229aa4b6a",
      "tree": "db0848f89305aa3c90b07ad773badc17f858405e",
      "parents": [
        "a10320e8f7c4dcfa050aac566092f29b40458d5a"
      ],
      "author": {
        "name": "Toshiyuki Okajima",
        "email": "toshi.okajima@jp.fujitsu.com",
        "time": "Fri Jul 25 01:46:29 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:32 2008 -0700"
      },
      "message": "jbd: positively dispose the unmapped data buffers in journal_commit_transaction()\n\nAfter ext3-ordered files are truncated, there is a possibility that the\npages which cannot be estimated still remain.  Remaining pages can be\nreleased when the system has really few memory.  So, it is not memory\nleakage.  But the resource management software etc.  may not work\ncorrectly.\n\nIt is possible that journal_unmap_buffer() cannot release the buffers, and\nthe pages to which they belong because they are attached to a commiting\ntransaction and journal_unmap_buffer() cannot release them.  To release\nsuch the buffers and the pages later, journal_unmap_buffer() leaves it to\njournal_commit_transaction().  (journal_unmap_buffer() puts the mark\n\u0027BH_Freed\u0027 to the buffers so that journal_commit_transaction() can\nidentify whether they can be released or not.)\n\nIn the journalled mode and the writeback mode, jbd does with only metadata\nbuffers.  But in the ordered mode, jbd does with metadata buffers and also\ndata buffers.\n\nActually, journal_commit_transaction() releases only the metadata buffers\nof which release is demanded by journal_unmap_buffer(), and also releases\nthe pages to which they belong if possible.\n\nAs a result, the data buffers of which release is demanded by\njournal_unmap_buffer() remain after a transaction commits.  And also the\npages to which they belong remain.\n\nSuch the remained pages don\u0027t have mapping any longer.  Due to this fact,\nthere is a possibility that the pages which cannot be estimated remain.\n\nThe metadata buffers marked \u0027BH_Freed\u0027 and the pages to which\nthey belong can be released at \u0027JBD: commit phase 7\u0027.\n\nTherefore, by applying the same code into \u0027JBD: commit phase 2\u0027 (where the\ndata buffers are done with), journal_commit_transaction() can also release\nthe data buffers marked \u0027BH_Freed\u0027 and the pages to which they belong.\n\nAs a result, all the buffers marked \u0027BH_Freed\u0027 can be released, and also\nall the pages to which these buffers belong can be released at\njournal_commit_transaction().  So, the page which cannot be estimated is\nlost.\n\n\u003c\u003cExcerpt of code at \u0027JBD: commit phase 7\u0027\u003e\u003e\n \u003e         spin_lock(\u0026journal-\u003ej_list_lock);\n \u003e         while (commit_transaction-\u003et_forget) {\n \u003e                 transaction_t *cp_transaction;\n \u003e                 struct buffer_head *bh;\n \u003e\n \u003e                 jh \u003d commit_transaction-\u003et_forget;\n \u003e...\n \u003e                 if (buffer_freed(bh)) {\n \u003e                 ^^^^^^^^^^^^^^^^^^^^^^^^\n \u003e                         clear_buffer_freed(bh);\n \u003e                        ^^^^^^^^^^^^^^^^^^^^^^^^\n \u003e                         clear_buffer_jbddirty(bh);\n \u003e                 }\n \u003e\n \u003e                 if (buffer_jbddirty(bh)) {\n \u003e                         JBUFFER_TRACE(jh, \"add to new checkpointing trans\");\n \u003e                         __journal_insert_checkpoint(jh, commit_transaction);\n \u003e                         JBUFFER_TRACE(jh, \"refile for checkpoint writeback\");\n \u003e                         __journal_refile_buffer(jh);\n \u003e                         jbd_unlock_bh_state(bh);\n \u003e                 } else {\n \u003e                         J_ASSERT_BH(bh, !buffer_dirty(bh));\n \u003e ...\n \u003e                         JBUFFER_TRACE(jh, \"refile or unfile freed buffer\");\n \u003e                         __journal_refile_buffer(jh);\n \u003e                         if (!jh-\u003eb_transaction) {\n \u003e                                 jbd_unlock_bh_state(bh);\n \u003e                                  /* needs a brelse */\n \u003e                                 journal_remove_journal_head(bh);\n \u003e                                 release_buffer_page(bh);\n \u003e                                 ^^^^^^^^^^^^^^^^^^^^^^^^\n \u003e                         } else\n \u003e                 }\n****************************************************************\n* Apply the code of \"^^^^^^\" lines into \u0027JBD: commit phase 2\u0027 *\n****************************************************************\n\nAt journal_commit_transaction() code, there is one extra message in the\nseries of jbd debug messages.  (\"JBD: commit phase 2\") This patch fixes\nit, too.\n\nSigned-off-by: Toshiyuki Okajima \u003ctoshi.okajima@jp.fujitsu.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a10320e8f7c4dcfa050aac566092f29b40458d5a",
      "tree": "5ec4dbd114fb5700ba8f0edeea80eea75227d2bc",
      "parents": [
        "3ccc3167b0e5d46ab3bf03e22fbdb7616ce038cd"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Fri Jul 25 01:46:26 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:32 2008 -0700"
      },
      "message": "jbd: unexport journal_update_superblock\n\nRemove the unused EXPORT_SYMBOL(journal_update_superblock).\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3f31fddfa26b7594b44ff2b34f9a04ba409e0f91",
      "tree": "88994baf22f65dc4da0bef17ce61eda09c59db2a",
      "parents": [
        "9ebfbe9f926553eabc21b4400918d1216b27ed0c"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Fri Jul 25 01:46:22 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:32 2008 -0700"
      },
      "message": "jbd: fix race between free buffer and commit transaction\n\njournal_try_to_free_buffers() could race with jbd commit transaction when\nthe later is holding the buffer reference while waiting for the data\nbuffer to flush to disk.  If the caller of journal_try_to_free_buffers()\nrequest tries hard to release the buffers, it will treat the failure as\nerror and return back to the caller.  We have seen the directo IO failed\ndue to this race.  Some of the caller of releasepage() also expecting the\nbuffer to be dropped when passed with GFP_KERNEL mask to the\nreleasepage()-\u003ejournal_try_to_free_buffers().\n\nWith this patch, if the caller is passing the __GFP_WAIT and __GFP_FS to\nindicating this call could wait, in case of try_to_free_buffers() failed,\nlet\u0027s waiting for journal_commit_transaction() to finish commit the\ncurrent committing transaction, then try to free those buffers again.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nReviewed-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1984bb763c2e50d0ebfb0cf56d1b319bd7afe63a",
      "tree": "dde3d0c06ee054d2d4439e6ac16da831f83a72a7",
      "parents": [
        "f4d79ca2fa211cffc07306eeed7013448e77d7ec"
      ],
      "author": {
        "name": "Duane Griffin",
        "email": "duaneg@dghda.com",
        "time": "Fri Jul 25 01:46:21 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:32 2008 -0700"
      },
      "message": "jbd: tidy up revoke cache initialisation and destruction\n\nMake revocation cache destruction safe to call if initialisation fails\npartially or entirely.  This allows it to be used to cleanup in the case\nof initialisation failure, simplifying that code slightly.\n\nSigned-off-by: Duane Griffin \u003cduaneg@dghda.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f4d79ca2fa211cffc07306eeed7013448e77d7ec",
      "tree": "dee0ba9ed8102f5d0bcadc1e93ca7affe2414e8f",
      "parents": [
        "3850f7a521dc17659ef6758a219f083418788490"
      ],
      "author": {
        "name": "Duane Griffin",
        "email": "duaneg@dghda.com",
        "time": "Fri Jul 25 01:46:20 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:32 2008 -0700"
      },
      "message": "jbd: eliminate duplicated code in revocation table init/destroy functions\n\nThe revocation table initialisation/destruction code is repeated for each\nof the two revocation tables stored in the journal.  Refactoring the\nduplicated code into functions is tidier, simplifies the logic in\ninitialisation in particular, and slightly reduces the code size.\n\nThere should not be any functional change.\n\nSigned-off-by: Duane Griffin \u003cduaneg@dghda.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3850f7a521dc17659ef6758a219f083418788490",
      "tree": "d576d48a13f4c31aef846dd7f178f3159c38e138",
      "parents": [
        "d06bf1d252fe16f5f0d13e04da7a9913420aa1cf"
      ],
      "author": {
        "name": "Duane Griffin",
        "email": "duaneg@dghda.com",
        "time": "Fri Jul 25 01:46:19 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:32 2008 -0700"
      },
      "message": "jbd: replace potentially false assertion with if block\n\nIf an error occurs during jbd cache initialisation it is possible for the\njournal_head_cache to be NULL when journal_destroy_journal_head_cache is\ncalled.  Replace the J_ASSERT with an if block to handle the situation\ncorrectly.\n\nNote that even with this fix things will break badly if jbd is statically\ncompiled in and cache initialisation fails.\n\nSigned-off-by: Duane Griffin \u003cduaneg@dghda.com\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "772279c5f1dceb58d451dca94b557fd89b1ce890",
      "tree": "fa547bae10644896db94514db052443c6d903533",
      "parents": [
        "c3723ca3874a8fc2218c4726d57e3a7da9e83e47"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Wed May 14 16:05:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 14 19:11:14 2008 -0700"
      },
      "message": "jbd: need to hold j_state_lock to updates to transaction t_state to T_COMMIT\n\nUpdating the current transaction\u0027s t_state is protected by j_state_lock.  We\nneed to do the same when updating the t_state to T_COMMIT.\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nAcked-by: Jan Kara \u003cjack@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "08fc99bfc39d5b394aa27498ac5f14df0ef8e52a",
      "tree": "3749ce01f8cb60e3cf08c95f3f4076e21ad62ee7",
      "parents": [
        "e05b6b524bd5c5c2bae1b64a7cbe08d46d57a6fe"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Mon Apr 28 02:16:16 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:45 2008 -0700"
      },
      "message": "jbd: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5b9a499d77e9dd39c9e6611ea10c56a31604f274",
      "tree": "a3a2099c3abe67623aa52b803889d65855b28414",
      "parents": [
        "5bc833feaa8b2236265764e7e81f44937be46eda"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Mon Apr 28 02:16:12 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:44 2008 -0700"
      },
      "message": "jbd: fix possible journal overflow issues\n\nThere are several cases where the running transaction can get buffers added to\nits BJ_Metadata list which it never dirtied, which makes its t_nr_buffers\ncounter end up larger than its t_outstanding_credits counter.\n\nThis will cause issues when starting new transactions as while we are logging\nbuffers we decrement t_outstanding_buffers, so when t_outstanding_buffers goes\nnegative, we will report that we need less space in the journal than we\nactually need, so transactions will be started even though there may not be\nenough room for them.  In the worst case scenario (which admittedly is almost\nimpossible to reproduce) this will result in the journal running out of space.\n\nThe fix is to only\nrefile buffers from the committing transaction to the running transactions\nBJ_Modified list when b_modified is set on that journal, which is the only way\nto be sure if the running transaction has modified that buffer.\n\nThis patch also fixes an accounting error in journal_forget, it is possible\nthat we can call journal_forget on a buffer without having modified it, only\ngotten write access to it, so instead of freeing a credit, we only do so if\nthe buffer was modified.  The assert will help catch if this problem occurs.\nWithout these two patches I could hit this assert within minutes of running\npostmark, with them this issue no longer arises.  Thank you,\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nAcked-by: Jan Kara \u003cjack@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5bc833feaa8b2236265764e7e81f44937be46eda",
      "tree": "9aa34ee4e898d268fade3e6e2b9b5678f49caa54",
      "parents": [
        "269b26191650be46ce6c91dec24cf20f59650529"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Mon Apr 28 02:16:10 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:44 2008 -0700"
      },
      "message": "jbd: fix the way the b_modified flag is cleared\n\nCurrently at the start of a journal commit we loop through all of the buffers\non the committing transaction and clear the b_modified flag (the flag that is\nset when a transaction modifies the buffer) under the j_list_lock.\n\nThe problem is that everywhere else this flag is modified only under the jbd\nlock buffer flag, so it will race with a running transaction who could\npotentially set it, and have it unset by the committing transaction.\n\nThis is also a big waste, you can have several thousands of buffers that you\nare clearing the modified flag on when you may not need to.  This patch\nremoves this code and instead clears the b_modified flag upon entering\ndo_get_write_access/journal_get_create_access, so if that transaction does\nindeed use the buffer then it will be accounted for properly, and if it does\nnot then we know we didn\u0027t use it.\n\nThat will be important for the next patch in this series.  Tested thoroughly\nby myself using postmark/iozone/bonnie++.\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nAcked-by: Jan Kara \u003cjack@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1076d17ac70d1bb28fadc6f4bd96977b56897025",
      "tree": "17327e19c0bf6280d5c50996f96d14f38b55841a",
      "parents": [
        "af8be4e4b316df36a00c1e52a9970c253783b57e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Sat Mar 29 03:07:18 2008 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 30 14:18:41 2008 -0700"
      },
      "message": "jbd/jbd2 NULL noise\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a6b91919e0881a0d0a4ae5211d5c879a8c7ca92b",
      "tree": "148aabc0a92a297f9220174435e822f30c951215",
      "parents": [
        "5366dc9fd1cb74023790a8edf29e4fe42c886dcf"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Mar 19 17:01:00 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 19 18:53:36 2008 -0700"
      },
      "message": "fs: fix kernel-doc notation warnings\n\nFix kernel-doc notation warnings in fs/.\n\nWarning(mmotm-2008-0314-1449//fs/super.c:560): missing initial short description on line:\n *\tmark_files_ro\nWarning(mmotm-2008-0314-1449//fs/locks.c:1277): missing initial short description on line:\n *\tlease_get_mtime\nWarning(mmotm-2008-0314-1449//fs/locks.c:1277): missing initial short description on line:\n *\tlease_get_mtime\nWarning(mmotm-2008-0314-1449//fs/namei.c:1368): missing initial short description on line:\n * lookup_one_len:  filesystem helper to lookup single pathname component\nWarning(mmotm-2008-0314-1449//fs/buffer.c:3221): missing initial short description on line:\n * bh_uptodate_or_lock: Test whether the buffer is uptodate\nWarning(mmotm-2008-0314-1449//fs/buffer.c:3240): missing initial short description on line:\n * bh_submit_read: Submit a locked buffer for reading\nWarning(mmotm-2008-0314-1449//fs/fs-writeback.c:30): missing initial short description on line:\n * writeback_acquire: attempt to get exclusive writeback access to a device\nWarning(mmotm-2008-0314-1449//fs/fs-writeback.c:47): missing initial short description on line:\n * writeback_in_progress: determine whether there is writeback in progress\nWarning(mmotm-2008-0314-1449//fs/fs-writeback.c:58): missing initial short description on line:\n * writeback_release: relinquish exclusive writeback access against a device.\nWarning(mmotm-2008-0314-1449//include/linux/jbd.h:351): contents before sections\nWarning(mmotm-2008-0314-1449//include/linux/jbd.h:561): contents before sections\nWarning(mmotm-2008-0314-1449//fs/jbd/transaction.c:1935): missing initial short description on line:\n * void journal_invalidatepage()\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "439aeec639d7c57f3561054a6d315c40fd24bb74",
      "tree": "92ccf27e7fe0ae99dfc8e3bcd0ef4fe7d1e0795a",
      "parents": [
        "44e0451db0a9c0bceabaa9cc77cbcc717a094fcc"
      ],
      "author": {
        "name": "Duane Griffin",
        "email": "duaneg@dghda.com",
        "time": "Wed Mar 19 17:00:53 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 19 18:53:36 2008 -0700"
      },
      "message": "jbd: correctly unescape journal data blocks\n\nFix a long-standing typo (predating git) that will cause data corruption if a\njournal data block needs unescaping.  At the moment the wrong buffer head\u0027s\ndata is being unescaped.\n\nTo test this case mount a filesystem with data\u003djournal, start creating and\ndeleting a bunch of files containing only JFS_MAGIC_NUMBER (0xc03b3998), then\npull the plug on the device.  Without this patch the files will contain zeros\ninstead of the correct data after recovery.\n\nSigned-off-by: Duane Griffin \u003cduaneg@dghda.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0cf01f6685bef41dea37bbec606f375b7a98fd98",
      "tree": "554cd3af3f58b107c543b5eaae9b8be6db6ec794",
      "parents": [
        "0e82989d95cc46cc58622381eafa54f7428ee679"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Mar 19 17:00:44 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 19 18:53:35 2008 -0700"
      },
      "message": "jbd: fix jbd kernel-doc notation\n\nFix kernel-doc notation in jbd.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "78a4a50a86b0a54f7ecbc164267b6c762760254c",
      "tree": "a50503b14fc4f21abdcc0e2c6e49380029bb5e1c",
      "parents": [
        "64e6269071fb1888e5ddc9ad557368cc5fa4f538"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Fri Feb 29 22:02:31 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Mar 03 10:47:13 2008 -0800"
      },
      "message": "docbook: fix filesystems.tmpl source files\n\nFix docbook problems in filesystems.tmpl.\nThese cause the generated docbook to be incorrect.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5315217efea54a07950758005686adedb8e8e680",
      "tree": "137735561349ee366afe98daa9b1cbbaf1da68c4",
      "parents": [
        "b048d8462652159c5314d19b191220b0ec384edb"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Feb 01 08:26:46 2008 -0500"
      },
      "committer": {
        "name": "Theodore Ts\u0027o",
        "email": "tytso@mit.edu",
        "time": "Fri Feb 01 08:26:46 2008 -0500"
      },
      "message": "[PATCH] jbd: Remove useless loop when writing commit record\n\nCommit block was intended to have several copies of the header. But\ndue to a bug it never had them and actually, nobody checks that. So\njust remove the useless loop.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\n\n"
    },
    {
      "commit": "28ae094c625a9b719c01cf5ec45b8640e6911f53",
      "tree": "74d34775267bf7a141bc9eb3f042e8a7a0251916",
      "parents": [
        "2dafe1c4d69345539735cca64250f2d4657bd057"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Feb 08 04:22:13 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 08 09:22:44 2008 -0800"
      },
      "message": "ext3 can fail badly when device stops accepting BIO_RW_BARRIER requests\n\nSome devices - notably dm and md - can change their behaviour in response\nto BIO_RW_BARRIER requests.  They might start out accepting such requests\nbut on reconfiguration, they find out that they cannot any more.\n\next3 (and other filesystems) deal with this by always testing if\nBIO_RW_BARRIER requests fail with EOPNOTSUPP, and retrying the write\nrequests without the barrier (probably after waiting for any pending writes\nto complete).\n\nHowever there is a bug in the handling for this for ext3.\n\nWhen ext3 (jbd actually) decides to submit a BIO_RW_BARRIER request, it\nsets the buffer_ordered flag on the buffer head.  If the request completes\nsuccessfully, the flag STAYS SET.\n\nOther code might then write the same buffer_head after the device has been\nreconfigured to not accept barriers.  This write will then fail, but the\n\"other code\" is not ready to handle EOPNOTSUPP errors and the error will be\ntreated as fatal.\n\nThis can be seen without having to reconfigure a device at exactly the\nwrong time by putting:\n\n\t\tif (buffer_ordered(bh))\n\t\t\tprintk(\"OH DEAR, and ordered buffer\\n\");\n\nin the while loop in \"commit phase 5\" of journal_commit_transaction.\n\nIf it ever prints the \"OH DEAR ...\" message (as it does sometimes for\nme), then that request could (in different circumstances) have failed\nwith EOPNOTSUPP, but that isn\u0027t tested for.\n\nMy proposed fix is to clear the buffer_ordered flag after it has been\nused, as in the following patch.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "533083836fd55ca67ce35ab3d914b74ec1a5b9a8",
      "tree": "5dffe25ff6d049be33ffe6b3d0135cae45eb2a72",
      "parents": [
        "e86e14385d8473a71809ff5c2be4b06867af4b5e"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Wed Feb 06 01:40:12 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:20 2008 -0800"
      },
      "message": "make jbd/journal.c:__journal_abort_hard() static\n\n__journal_abort_hard() can now become static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e86e14385d8473a71809ff5c2be4b06867af4b5e",
      "tree": "cfc3886f967e8a7721797477b5d6eff7e41bff5b",
      "parents": [
        "d71cadd6bc9834710c0b045e3abedd0c56ff1c37"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Wed Feb 06 01:40:11 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:20 2008 -0800"
      },
      "message": "BKL-removal: remove incorrect comment refering to lock_kernel() from jbd/jbd2\n\nNone of the callers of this function does actually take the BKL as far as I\ncan see.  So remove the comment refering to the BKL.\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "95c354fe9f7d6decc08a92aa26eb233ecc2155bf",
      "tree": "ec9267032ea875e84216cfb20acb2cfc7c62149f",
      "parents": [
        "a95d67f87e1a5f1b4429be3ba3bf7b4051657908"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Jan 30 13:31:20 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 13:31:20 2008 +0100"
      },
      "message": "spinlock: lockbreak cleanup\n\nThe break_lock data structure and code for spinlocks is quite nasty.\nNot only does it double the size of a spinlock but it changes locking to\na potentially less optimal trylock.\n\nPut all of that under CONFIG_GENERIC_LOCKBREAK, and introduce a\n__raw_spin_is_contended that uses the lock data itself to determine whether\nthere are waiters on the lock, to be used if CONFIG_GENERIC_LOCKBREAK is\nnot set.\n\nRename need_lockbreak to spin_needbreak, make it use spin_is_contended to\ndecouple it from the spinlock implementation, and make it typesafe (rwlocks\ndo not have any need_lockbreak sites -- why do they even get bloated up\nwith that break_lock then?).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "f63dcda197bd71c6565c2121bf70e3d371539f90",
      "tree": "d0c64161017788d0dddd59687859ac0a67d0ad07",
      "parents": [
        "1d6f4e60e736a00b50ec668ba1a9fe27afb083a3"
      ],
      "author": {
        "name": "Jonas Bonn",
        "email": "jonas.bonn@gmail.com",
        "time": "Thu Jan 17 15:21:13 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jan 17 15:38:59 2008 -0800"
      },
      "message": "jbd: do not try lock_acquire after handle made invalid\n\nThis likely fixes the oops in __lock_acquire reported as:\n\nhttp://www.kerneloops.org/raw.php?rawid\u003d2753\u0026msgid\u003d\nhttp://www.kerneloops.org/raw.php?rawid\u003d2749\u0026msgid\u003d\n\nIn these reported oopses, start_this_handle is returning -EROFS.\n\nSigned-off-by: Jonas Bonn \u003cjonas.bonn@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": "d4beaf4ab5f89496f2bcf67db62ad95d99bfeff6",
      "tree": "ae6d005199017e9a0ade169fd69cb73d6c0ac88f",
      "parents": [
        "369b8f5a70402d9fe77006cd0044c8a3fcd08430"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Dec 04 23:45:27 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Dec 05 09:21:20 2007 -0800"
      },
      "message": "jbd: Fix assertion failure in fs/jbd/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\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9ad163ae0df8a3adab6d521475142392e3efb7a6",
      "tree": "71b72c8d565e5325183cd03ddce070295fd9b01d",
      "parents": [
        "7a266e75cf5a1efd20d084408a1b7f1a185496dd"
      ],
      "author": {
        "name": "Jose R. Santos",
        "email": "jrs@us.ibm.com",
        "time": "Thu Oct 18 23:39:23 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:35 2007 -0700"
      },
      "message": "JBD: Fix JBD warnings when compiling with CONFIG_JBD_DEBUG\n\nNote from Mingming\u0027s JBD2 fix:\n\nNoticed all warnings are occurs when the debug level is 0.  Then found the\n\"jbd2: Move jbd2-debug file to debugfs\" patch\nhttp://git.kernel.org/?p\u003dlinux/kernel/git/torvalds/linux-2.6.git;a\u003dcommit;h\u003d0f49d5d019afa4e94253bfc92f0daca3badb990b\n\nchanged the jbd2_journal_enable_debug from int type to u8, makes the\njbd_debug comparision is always true when the debugging level is 0.  Thus\nthe compile warning occurs.\n\nThought about changing the jbd2_journal_enable_debug data type back to int,\nbut can\u0027t, because the jbd2-debug is moved to debug fs, where calling\ndebugfs_create_u8() to create the debugfs entry needs the value to be u8\ntype.\n\nEven if we changed the data type back to int, the code is still buggy,\nkernel should not print jbd2 debug message if the jbd2_journal_enable_debug\nis set to 0.  But this is not the case.\n\nThe fix is change the level of debugging to 1.  The same should fixed in\next3/JBD, but currently ext3 jbd-debug via /proc fs is broken, so we\nprobably should fix it all together.\n\nSigned-off-by: Jose R. Santos \u003cjrs@us.ibm.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7a266e75cf5a1efd20d084408a1b7f1a185496dd",
      "tree": "38bdd044ce80fde4804c7a1c29d1f509b95c99e8",
      "parents": [
        "c2a9159cdd8b334a0dfaf69d8b07cd57b5272baa"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Oct 18 23:39:22 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:35 2007 -0700"
      },
      "message": "jbd: fix commit code to properly abort journal\n\nWe should really call journal_abort() and not __journal_abort_hard() in\ncase of errors.  The latter call does not record the error in the journal\nsuperblock and thus filesystem won\u0027t be marked as with errors later (and\nuser could happily mount it without any warning).\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\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c2a9159cdd8b334a0dfaf69d8b07cd57b5272baa",
      "tree": "5a1d45afd49cd11d488173f6351bcfe432c2139a",
      "parents": [
        "1c099244485ff8bb93c2cd41304a445adc7f54e6"
      ],
      "author": {
        "name": "Jose R. Santos",
        "email": "jrs@us.ibm.com",
        "time": "Thu Oct 18 23:39:22 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:35 2007 -0700"
      },
      "message": "jbd: config_jbd_debug cannot create /proc entry\n\nThe jbd-debug file used to be located in /proc/sys/fs/jbd-debug, but\ncreate_proc_entry() does not do lookups on file names that are more that\none directory deep.  This causes the entry creation to fail and hence, no\nproc file is created.\n\nInstead of fixing this on procfs 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/jbd/jbd-debug.\n\n[akpm@linux-foundation.org: zillions of cleanups]\nSigned-off-by: Jose R. Santos \u003cjrs@us.ibm.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8c3478a523a48470eb11a23f01249250684677d9",
      "tree": "5818d64427bcc1128fc74cc99e8f1fd1c9a54766",
      "parents": [
        "345225c8e4a4adad9eb261db26aebcd3b87055ad"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Thu Oct 18 23:39:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:34 2007 -0700"
      },
      "message": "JBD/ext3 cleanups: convert to kzalloc\n\nConvert kmalloc to kzalloc() and get rid of the memset().\n\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c80544dc0b87bb65038355e7aafdc30be16b26ab",
      "tree": "176349304bec88a9de16e650c9919462e0dd453c",
      "parents": [
        "0e9663ee452ffce0d429656ebbcfe69417a30e92"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@linux-foundation.org",
        "time": "Thu Oct 18 03:07:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Oct 18 14:37:31 2007 -0700"
      },
      "message": "sparse pointer use of zero as null\n\nGet rid of sparse related warnings from places that use integer as NULL\npointer.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Stephen Hemminger \u003cshemminger@linux-foundation.org\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Ian Kent \u003craven@themaw.net\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a5005da204289ce01ca37be59e902100ef247a4d",
      "tree": "4f754d5936a3b8b2d462a343bdd2342967170ac8",
      "parents": [
        "af1e76d6b3f37cb89d9192eaf83588adaf4728eb"
      ],
      "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": "JBD: 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": "c089d490dfbf53bc0893dc9ef57cf3ee6448314d",
      "tree": "8faffea3bdcfdd48ce175ac92d5088ced4f1c969",
      "parents": [
        "d85714d81cc0408daddb68c10f7fd69eafe7c213"
      ],
      "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": "JBD: JBD slab allocation cleanups\n\nJBD: Replace slab allocations with page allocations\n\nJBD allocate memory for committed_data and frozen_data from slab. However\nJBD should not pass slab pages down to the block layer. Use page allocator pages 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": "e12ba74d8ff3e2f73a583500d7095e406df4d093",
      "tree": "a0d3385b65f0b3e1e00b0bbf11b75e7538a93edb",
      "parents": [
        "c361be55b3128474aa66d31092db330b07539103"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Oct 16 01:25:52 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:43:00 2007 -0700"
      },
      "message": "Group short-lived and reclaimable kernel allocations\n\nThis patch marks a number of allocations that are either short-lived such as\nnetwork buffers or are reclaimable such as inode allocations.  When something\nlike updatedb is called, long-lived and unmovable kernel allocations tend to\nbe spread throughout the address space which increases fragmentation.\n\nThis patch groups these allocations together as much as possible by adding a\nnew MIGRATE_TYPE.  The MIGRATE_RECLAIMABLE type is for allocations that can be\nreclaimed on demand, but not moved.  i.e.  they can be migrated by deleting\nthem and re-reading the information from elsewhere.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "34a3d1e83708702ac6cb872215e68cd07dae298b",
      "tree": "bed36f9a4b64a98676776ccff820b7897b1dcb74",
      "parents": [
        "523b44cff279c42c79f7bda709e2fefc30f20a59"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Oct 11 22:11:12 2007 +0200"
      },
      "committer": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Oct 11 22:11:12 2007 +0200"
      },
      "message": "lockdep: annotate journal_start()\n\nOn Fri, 2007-07-13 at 02:05 -0700, Andrew Morton wrote:\n\n\u003e Except lockdep doesn\u0027t know about journal_start(), which has ranking\n\u003e requirements similar to a semaphore.  \n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "20c2df83d25c6a95affe6157a4c9cac4cf5ffaac",
      "tree": "415c4453d2b17a50abe7a3e515177e1fa337bd67",
      "parents": [
        "64fb98fc40738ae1a98bcea9ca3145b89fb71524"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "message": "mm: Remove slab destructors from kmem_cache_create().\n\nSlab destructors were no longer supported after Christoph\u0027s\nc59def9f222d44bb7e2f0a559f2906191a0862d7 change. They\u0027ve been\nBUGs for both slab and slub, and slob never supported them\neither.\n\nThis rips out support for the dtor pointer from kmem_cache_create()\ncompletely and fixes up every single callsite in the kernel (there were\nabout 224, not including the slab allocator definitions themselves,\nor the documentation references).\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "f482394ccbca7234d29cc146d4a2b94f976ce5a1",
      "tree": "65a15d5f47a8a5c4ddad16d10971f671277b12e8",
      "parents": [
        "3fc74269c8910573a0e9a7bc303752194ce5cae0"
      ],
      "author": {
        "name": "vignesh babu",
        "email": "vignesh.babu@wipro.com",
        "time": "Sun Jul 15 23:41:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:48 2007 -0700"
      },
      "message": "is_power_of_2(): jbd\n\nReplace (n \u0026 (n-1)) in the context of power of 2 checks with\nis_power_of_2().\n\nSigned-off-by: vignesh babu \u003cvignesh.babu@wipro.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fe28e42b99173ba088b1d8448e53029e100bff27",
      "tree": "d9bb33ea624fb5bde8fa2e5be0db17848f108f85",
      "parents": [
        "09561f44c75bc462ae86590b9c089d01c4e94a74"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Sun Jul 15 23:37:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:34 2007 -0700"
      },
      "message": "jbd commit: fix transaction dropping\n\nWe have to check that also the second checkpoint list is non-empty before\ndropping the transaction.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: Chuck Ebbert \u003ccebbert@redhat.com\u003e\nCc: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5886269962f94fa9185c32db3ec936c612503235",
      "tree": "2f24dabcf5791319ebb1fbdfb5dbc58284714275",
      "parents": [
        "01afd80626e98c2347bc25be92ee4a3faf314514"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "ukleinek@informatik.uni-freiburg.de",
        "time": "Wed May 09 07:51:49 2007 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Wed May 09 08:58:16 2007 +0200"
      },
      "message": "fix file specification in comments\n\nMany files include the filename at the beginning, serveral used a wrong one.\n\nSigned-off-by: Uwe Kleine-König \u003cukleinek@informatik.uni-freiburg.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "97f067846786d255888ccad14e2f38a1f63d8e9b",
      "tree": "ebff291172a51b25a0a0c69c85463f0c789bb2ce",
      "parents": [
        "ee6f958291e2a768fd727e7a67badfff0b67711a"
      ],
      "author": {
        "name": "Pavel Emelianov",
        "email": "xemul@sw.ru",
        "time": "Tue May 08 00:30:42 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:13 2007 -0700"
      },
      "message": "jbd: check for error returned by kthread_create on creating journal thread\n\nIf the thread failed to create the subsequent wait_event will hang forever.\n\nThis is likely to happen if kernel hits max_threads limit.\n\nWill be critical for virtualization systems that limit the number of tasks\nand kernel memory usage within the container.\n\n(akpm: JBD should be converted fully to the kthread API: kthread_should_stop()\nand kthread_stop()).\n\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e63340ae6b6205fef26b40a75673d1c9c0c8bb90",
      "tree": "8d3212705515edec73c3936bb9e23c71d34a7b41",
      "parents": [
        "04c9167f91e309c9c4ea982992aa08e83b2eb42e"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue May 08 00:28:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:07 2007 -0700"
      },
      "message": "header cleaning: don\u0027t include smp_lock.h when not used\n\nRemove includes of \u003clinux/smp_lock.h\u003e where it is not used/needed.\nSuggested by Al Viro.\n\nBuilds cleanly on x86_64, i386, alpha, ia64, powerpc, sparc,\nsparc64, and arm (all 59 defconfigs).\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6f5a9da1af5a8c286575c30c2706dc1fbef9164b",
      "tree": "42678c62fe6196d8d9fb7917c1f0e890fb0f50e4",
      "parents": [
        "6d3a25f1fb75206ae8b2b1cdd1431b3852e1a45a"
      ],
      "author": {
        "name": "Hisashi Hifumi",
        "email": "hifumi.hisashi@oss.ntt.co.jp",
        "time": "Fri Dec 22 01:11:50 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 22 08:55:51 2006 -0800"
      },
      "message": "[PATCH] jbd: wait for already submitted t_sync_datalist buffer to complete\n\nIn the current jbd code, if a buffer on BJ_SyncData list is dirty and not\nlocked, the buffer is refiled to BJ_Locked list, submitted to the IO and\nwaited for IO completion.\n\nBut the fsstress test showed the case that when a buffer was already\nsubmitted to the IO just before the buffer_dirty(bh) check, the buffer was\nnot waited for IO completion.\n\nFollowing patch solves this problem.  If it is assumed that a buffer is\nsubmitted to the IO before the buffer_dirty(bh) check and still being\nwritten to disk, this buffer is refiled to BJ_Locked list.\n\nSigned-off-by: Hisashi Hifumi \u003chifumi.hisashi@oss.ntt.co.jp\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nCc: \"Stephen C. Tweedie\" \u003csct@redhat.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "44d306e1508fef6fa7a6eb15a1aba86ef68389a6",
      "tree": "84edb1f4d6e1e2d3926f152bad132e037da9024c",
      "parents": [
        "4c36a5dec25fb344ad76b11860da3a8b50bd1248"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Sun Dec 10 02:21:26 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:57:22 2006 -0800"
      },
      "message": "[PATCH] user of the jiffies rounding code: JBD\n\nThis patch introduces a user: of the round_jiffies() function; the \"5 second\"\next3/jbd wakeup.\n\nWhile \"every 5 seconds\" doesn\u0027t sound as a problem, there can be many of these\n(and these timers do add up over all the kernel).  The \"5 second\" wakeup isn\u0027t\nreally timing sensitive; in addition even with rounding it\u0027ll still happen\nevery 5 seconds (with the exception of the very first time, which is likely to\nbe rounded up to somewhere closer to 6 seconds)\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d394e122bc1adba0f3eb1ebec1cedb8a8c524741",
      "tree": "3dec0f71b7c2b5f910013ccbeaadd9427737dc4b",
      "parents": [
        "8487f2e4067839ad3d009c240d51b682264320ae"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Wed Dec 06 20:38:26 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:40 2006 -0800"
      },
      "message": "[PATCH] make fs/jbd/transaction.c:__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": "7dfb71030f7636a0d65200158113c37764552f93",
      "tree": "276b812903d377b16d8828e888552fd256f48aab",
      "parents": [
        "8a05aac2631aa0e6494d9dc990f8c68ed8b8fde7"
      ],
      "author": {
        "name": "Nigel Cunningham",
        "email": "ncunningham@linuxmail.org",
        "time": "Wed Dec 06 20:34:23 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:27 2006 -0800"
      },
      "message": "[PATCH] Add include/linux/freezer.h and move definitions from sched.h\n\nMove process freezing functions from include/linux/sched.h to freezer.h, so\nthat modifications to the freezer or the kernel configuration don\u0027t require\nrecompiling just about everything.\n\n[akpm@osdl.org: fix ueagle driver]\nSigned-off-by: Nigel Cunningham \u003cnigel@suspend2.net\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\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": "f58a74dca88d48b0669609b4957f3dd757bdc898",
      "tree": "bfd9a7f078d3d017e92fbd75659f35b619ccf188",
      "parents": [
        "1939e49a0cb9d73785857bf312f4f65661b4b513"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Sat Oct 28 10:38:27 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 28 11:30:51 2006 -0700"
      },
      "message": "[PATCH] jbd: journal_dirty_data re-check for unmapped buffers\n\nWhen running several fsx\u0027s and other filesystem stress tests, we found\ncases where an unmapped buffer was still being sent to submit_bh by the\next3 dirty data journaling code.\n\nI saw this happen in two ways, both related to another thread doing a\ntruncate which would unmap the buffer in question.\n\nEither we would get into journal_dirty_data with a bh which was already\nunmapped (although journal_dirty_data_fn had checked for this earlier, the\nstate was not locked at that point), or it would get unmapped in the middle\nof journal_dirty_data when we dropped locks to call sync_dirty_buffer.\n\nBy re-checking for mapped state after we\u0027ve acquired the bh state lock, we\nshould avoid these races.  If we find a buffer which is no longer mapped,\nwe essentially ignore it, because journal_unmap_buffer has already decided\nthat this buffer can go away.\n\nI\u0027ve also added tracepoints in these two cases, and made a couple other\ntracepoint changes that I found useful in debugging this.\n\nSigned-off-by: Eric Sandeen \u003cesandeen@redhat.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3e2a532b26b491706bd8b5c7cfc8d767b43b8f36",
      "tree": "641db5da4c1adbeee04ce6594746cec51f581ff0",
      "parents": [
        "82591e6ea234762eeaa8b2337fe060ed438c18dc"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Thu Oct 19 23:29:11 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Oct 20 10:26:44 2006 -0700"
      },
      "message": "[PATCH] ext3/4: fix J_ASSERT(transaction-\u003et_updates \u003e 0) in journal_stop()\n\nA disk generated some I/O error, after it, I hitted\nJ_ASSERT(transaction-\u003et_updates \u003e 0) in journal_stop().\n\nIt seems to happened on ext3_truncate() path from stack trace. Then,\nmaybe the following case may trigger J_ASSERT(transaction-\u003et_updates \u003e 0).\n\next3_truncate()\n    -\u003e ext3_free_branches()\n        -\u003e ext3_journal_test_restart()\n\t    -\u003e ext3_journal_restart()\n                -\u003e journal_restart()\n                transaction-\u003et_updates--;\n                /* another process aborted journal */\n                    -\u003e start_this_handle()\n\t\t    returns -EROFS without transaction-\u003et_updates++;\n\n    -\u003e ext3_journal_stop()\n        -\u003e journal_stop()\n\tJ_ASSERT(transaction-\u003et_updates \u003e 0)\n\nIf journal was aborted in middle of journal_restart(), ext3_truncate()\nmay trigger J_ASSERT().\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "41716c7c21b15e7ecf14f0caf1eef3980707fb74",
      "tree": "622cd9c92a31969681ef2c0cd865147dfa495933",
      "parents": [
        "7e491092e442b3f8c0d90d470b398fdb74703ec7"
      ],
      "author": {
        "name": "Eric Sesterhenn",
        "email": "snakebyte@gmx.de",
        "time": "Wed Oct 11 01:20:37 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 11 11:14:14 2006 -0700"
      },
      "message": "[PATCH] null dereference in fs/jbd/journal.c\n\nSince commit d1807793e1e7e502e3dc047115e9dbc3b50e4534 we dereference a NULL\npointer.  Coverity id #1432.  We set journal to NULL, and use it directly\nafterwards.\n\nSigned-off-by: Eric Sesterhenn \u003csnakebyte@gmx.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f30c2269544bffc7bf1b0d7c0abe5be1be83b8cb",
      "tree": "2f6140d8a555af6a133690ed6b42599e78a43c54",
      "parents": [
        "670e9f34ee3c7e052514c85014d2fdd99b672cdc"
      ],
      "author": {
        "name": "Uwe Zeisberger",
        "email": "Uwe_Zeisberger@digi.com",
        "time": "Tue Oct 03 23:01:26 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Tue Oct 03 23:01:26 2006 +0200"
      },
      "message": "fix file specification in comments\n\nMany files include the filename at the beginning, serveral used a wrong one.\n\nSigned-off-by: Uwe Zeisberger \u003cUwe_Zeisberger@digi.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "d1807793e1e7e502e3dc047115e9dbc3b50e4534",
      "tree": "0ee76ff91643dc23fd5aef6d0498a7e139fdc6f8",
      "parents": [
        "f71b2f10f56802075d67c5710cd9f1816382d720"
      ],
      "author": {
        "name": "Zoltan Menyhart",
        "email": "Zoltan.Menyhart@bull.net",
        "time": "Fri Sep 29 01:58:40 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:03 2006 -0700"
      },
      "message": "[PATCH] JBD: memory leak in \"journal_init_dev()\"\n\nWe leak a bh ref in \"journal_init_dev()\" in case of failure.\n\nSigned-off-by: Zoltan Menyhart \u003cZoltan.Menyhart@bull.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f71b2f10f56802075d67c5710cd9f1816382d720",
      "tree": "a0a85e3827d70fc0b2b9bfe771c9e35c32c83559",
      "parents": [
        "4efd587bf9f9a97608b1fcecc78a4a046c37e9b1"
      ],
      "author": {
        "name": "Dave Kleikamp",
        "email": "shaggy@austin.ibm.com",
        "time": "Fri Sep 29 01:58:39 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:03 2006 -0700"
      },
      "message": "[PATCH] JBD: Make journal_brelse_array() static\n\nIt\u0027s always good to make symbols static when we can, and this also eliminates\nthe need to rename the function in jbd2\n\nSuggested by Eric Sandeen.\n\nSigned-off-by: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nCc: Eric Sandeen \u003csandeen@sandeen.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a4e4de36dc446b2193bdc8ebb96a96e44b69dd94",
      "tree": "d9a024e2c10dcb94decadc57caac162cef706307",
      "parents": [
        "e9ad5620bfb901df8a7a2603c88689ededeecaf1"
      ],
      "author": {
        "name": "Dave Kleikamp",
        "email": "shaggy@austin.ibm.com",
        "time": "Wed Sep 27 01:49:36 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:10 2006 -0700"
      },
      "message": "[PATCH] ext3: Fix sparse warnings\n\nFixing up some endian-ness warnings in preparation to clone ext4 from ext3.\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"
    },
    {
      "commit": "e9ad5620bfb901df8a7a2603c88689ededeecaf1",
      "tree": "82a2b22e1b7401b98fc2f201b8df2db05764332a",
      "parents": [
        "7543fc7b3abfee8c6cd6349ebd5e5fde02fac984"
      ],
      "author": {
        "name": "Dave Kleikamp",
        "email": "shaggy@austin.ibm.com",
        "time": "Wed Sep 27 01:49:35 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:10 2006 -0700"
      },
      "message": "[PATCH] ext3: More whitespace cleanups\n\nMore white space cleanups in preparation of cloning ext4 from ext3.\nRemoving spaces that precede a tab.\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"
    },
    {
      "commit": "37ed322290eb6d5cf2ab33915793ed4219eae1d6",
      "tree": "bd6e122b7af0b4c6a71bca21972cea3d124262b4",
      "parents": [
        "eee194e76c681dbdbf5024b889fda1181b66ef57"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "esandeen@redhat.com",
        "time": "Wed Sep 27 01:49:31 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:09 2006 -0700"
      },
      "message": "[PATCH] JBD: 16T fixes\n\nThese are a few places I\u0027ve found in jbd that look like they may not be\n16T-safe, or consistent with the use of unsigned longs for block\ncontainers.  Problems here would be somewhat hard to hit, would require\njournal blocks past the 8T boundary, which would not be terribly common.\nStill, should fix.\n\n(some of these have come from the ext4 work on jbd as well).\n\nI think there\u0027s one more possibility that the wrap() function may not be\nsafe IF your last block in the journal butts right up against the 232 block\nboundary, but that seems like a VERY remote possibility, and I\u0027m not\nworrying about it at this point.\n\nSigned-off-by: Eric Sandeen \u003cesandeen@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2aed3484695ecb03f1395bb62f1099e8b0826124",
      "tree": "4d3aed23944293a28d240f83921a6135dac49476",
      "parents": [
        "ae6ddcc5f24d6b06ae9231dc128904750a4155e0"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Sep 27 01:49:28 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:09 2006 -0700"
      },
      "message": "[PATCH] jbd: use BUILD_BUG_ON in journal init\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Stephen 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": "ae6ddcc5f24d6b06ae9231dc128904750a4155e0",
      "tree": "93c6e20b513f39b616af101dabe9b756f7300d0d",
      "parents": [
        "e7ab8d65055e9b9dfc131d0467cfc5a8368d7ee4"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Wed Sep 27 01:49:27 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:09 2006 -0700"
      },
      "message": "[PATCH] ext3 and jbd cleanup: remove whitespace\n\nRemove whitespace from ext3 and jbd, before we clone ext4.\n\nSigned-off-by: Mingming Cao\u003ccmm@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e7ab8d65055e9b9dfc131d0467cfc5a8368d7ee4",
      "tree": "b4e71a005cd4688cd42f19173cc77e67dbeae622",
      "parents": [
        "bbf2bef9f50eb119ffadd735eb0966ac8a04f91f"
      ],
      "author": {
        "name": "Josh Triplett",
        "email": "josht@us.ibm.com",
        "time": "Wed Sep 27 01:49:26 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:08 2006 -0700"
      },
      "message": "[PATCH] jbd: add lock annotation to jbd_sync_bh\n\njbd_sync_bh releases journal-\u003ej_list_lock.  Add a lock annotation to this\nfunction so that sparse can check callers for lock pairing, and so that\nsparse will not complain about this function since it intentionally uses\nthe lock in this manner.\n\nSigned-off-by: Josh Triplett \u003cjosh@freedesktop.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3998b9301d3d55be8373add22b6bc5e11c1d9b71",
      "tree": "9ec65c5b492a9bffc46467f4210739cd07ac510c",
      "parents": [
        "632bbfeee4f042c05bc65150b4433a297d3fe387"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Sep 25 23:30:53 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Sep 26 08:48:44 2006 -0700"
      },
      "message": "[PATCH] jbd: fix commit of ordered data buffers\n\nOriginal commit code assumes, that when a buffer on BJ_SyncData list is\nlocked, it is being written to disk.  But this is not true and hence it can\nlead to a potential data loss on crash.  Also the code didn\u0027t count with\nthe fact that journal_dirty_data() can steal buffers from committing\ntransaction and hence could write buffers that no longer belong to the\ncommitting transaction.  Finally it could possibly happen that we tried\nwriting out one buffer several times.\n\nThe patch below tries to solve these problems by a complete rewrite of the\ndata commit code.  We go through buffers on t_sync_datalist, lock buffers\nneeding write out and store them in an array.  Buffers are also immediately\nrefiled to BJ_Locked list or unfiled (if the write out is completed).  When\nthe array is full or we have to block on buffer lock, we submit all\naccumulated buffers for IO.\n\n[suitable for 2.6.18.x around the 2.6.19-rc2 timeframe]\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ],
  "next": "4cfb04a9d3d6865d932d02616b27b89d3a634026"
}
