)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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"
    },
    {
      "commit": "ea817398e68dfa25612229fda7fc74580cf915fb",
      "tree": "f511458f277c30b74e26bed69fe9d36dd2fe857c",
      "parents": [
        "4c4d50f7b39cc58f1064b93a61ad617451ae41df"
      ],
      "author": {
        "name": "Badari Pulavarty",
        "email": "pbadari@us.ibm.com",
        "time": "Sun Aug 27 01:23:52 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Aug 27 11:01:32 2006 -0700"
      },
      "message": "[PATCH] Manage jbd allocations from its own slabs\n\nJBD currently allocates commit and frozen buffers from slabs.  With\nCONFIG_SLAB_DEBUG, its possible for an allocation to cross the page\nboundary causing IO problems.\n\nhttps://bugzilla.redhat.com/bugzilla/show_bug.cgi?id\u003d200127\n\nSo, instead of allocating these from regular slabs - manage allocation from\nits own slabs and disable slab debug for these slabs.\n\n[akpm@osdl.org: cleanups]\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9ada7340987aa24395809570840c7c6847044f52",
      "tree": "e2a57c184d15cbd2415f4fce35534cf635e9fa9f",
      "parents": [
        "8e0a43d8fa953179505869ec28de78550246e795"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Jun 23 02:05:25 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:43:04 2006 -0700"
      },
      "message": "[PATCH] jbd: fix BUG in journal_commit_transaction()\n\nFix possible assertion failure in journal_commit_transaction() on\njh-\u003eb_next_transaction \u003d\u003d NULL (when we are processing BJ_Forget list and\nbuffer is not jbddirty).\n\n!jbddirty buffers can be placed on BJ_Forget list for example by\njournal_forget() or by __dispose_buffer() - generally such buffer means\nthat it has been freed by this transaction.\n\nFreed buffers should not be reallocated until the transaction has committed\n(that\u0027s why we have the assertion there) but they *can* be reallocated when\nthe transaction has already been committed to disk and we are just\nprocessing the BJ_Forget list (as soon as we remove b_committed_data from\nthe bitmap bh, ext3 will be able to reallocate buffers freed by the\ncommitting transaction).  So we have to also count with the case that the\nbuffer has been reallocated and b_next_transaction has been already set.\n\nAnd one more subtle point: it can happen that we manage to reallocate the\nbuffer and also mark it jbddirty.  Then we also add the freed buffer to the\ncheckpoint list of the committing trasaction.  But that should do no harm.\n\nNon-jbddirty buffers should be filed to BJ_Reserved and not BJ_Metadata\nlist.  It can actually happen that we refile such buffers during the commit\nphase when we reallocate in the running transaction blocks deleted in\ncommitting transaction (and that can happen if the committing transaction\nalready wrote all the data and is just cleaning up BJ_Forget list).\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: \"Stephen C. Tweedie\" \u003csct@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7c8903f6373f9abecf060bad53ca36bc4ac037f2",
      "tree": "473644b1f2999e3e516cd4f55a3535d9bb29595d",
      "parents": [
        "be5efffb762fa4a7b9a7a45ebf34b13e3bf5a2d8"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue Feb 14 13:53:03 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Feb 14 16:09:34 2006 -0800"
      },
      "message": "[PATCH] jbd: revert checkpoint list changes\n\nThis patch reverts commit f93ea411b73594f7d144855fd34278bcf34a9afc:\n  [PATCH] jbd: split checkpoint lists\n\nThis broke journal_flush() for OCFS2, which is its method of being sure\nthat metadata is sent to disk for another node.\n\nAnd two related commits 8d3c7fce2d20ecc3264c8d8c91ae3beacdeaed1b and\n43c3e6f5abdf6acac9b90c86bf03f995bf7d3d92 with the subjects:\n  [PATCH] jbd: log_do_checkpoint fix\n  [PATCH] jbd: remove_transaction fix\n\nThese seem to be incremental bugfixes on the original patch and as such are\nno longer needed.\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "43c3e6f5abdf6acac9b90c86bf03f995bf7d3d92",
      "tree": "06c78af9eeab5ad504e949a78e4ffa1e3cbb6067",
      "parents": [
        "8d3c7fce2d20ecc3264c8d8c91ae3beacdeaed1b"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Jan 18 17:42:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jan 18 19:20:16 2006 -0800"
      },
      "message": "[PATCH] jbd: remove_transaction fix\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\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f99d49adf527fa6f7a9c42257fa76bca6b8df1e3",
      "tree": "41dddbc336016f9dc9557cdb15300de5e599dac1",
      "parents": [
        "6044ec8882c726e325017bd948aa0cd94ad33abc"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jesper.juhl@gmail.com",
        "time": "Mon Nov 07 01:01:34 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 07:54:06 2005 -0800"
      },
      "message": "[PATCH] kfree cleanup: fs\n\nThis is the fs/ part of the big kfree cleanup patch.\n\nRemove pointless checks for NULL prior to calling kfree() in fs/.\n\nSigned-off-by: Jesper Juhl \u003cjesper.juhl@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "26707699b5337ea471ba1774447e8a1170c99e52",
      "tree": "13ea647feb0f0eb026a4a00fd0e1d522d71876ca",
      "parents": [
        "a7662236253374012d364106b6dc9161bd929e2e"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Sep 06 15:19:12 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:55 2005 -0700"
      },
      "message": "[PATCH] Change ll_rw_block() calls in JBD\n\nWe must be sure that the current data in buffer are sent to disk.  Hence we\nhave to call ll_rw_block() with SWRITE.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e6c9f5c1888097c936334bf9740024520ca47b8e",
      "tree": "6fcf2cccb7e4d155dd663f10001efdb2a9d7daae",
      "parents": [
        "cbf0d27a131639f4f3e4faa94373c5c6f89f8f07"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue Sep 06 15:19:09 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 07 16:57:54 2005 -0700"
      },
      "message": "[PATCH] Fix JBD race in t_forget list handling\n\nFix race between journal_commit_transaction() and other places as\njournal_unmap_buffer() that are adding buffers to transaction\u0027s t_forget list.\n We have to protect against such places by holding j_list_lock even when\ntraversing the t_forget list.  The fact that other places can only add buffers\nto the list makes the locking easier.  OTOH the lock ranking complicates the\nstuff...\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
