)]}'
{
  "log": [
    {
      "commit": "c0752aa7e4d48cc19e167ccb0092bea8e5b6ca3a",
      "tree": "2ff43322a35871364f9be2c2e4a6427db7db8a0f",
      "parents": [
        "1c47f09592148ba629edb2020d4dd94f81b16d11"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Tue May 01 12:00:34 2012 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed May 02 09:14:36 2012 +0100"
      },
      "message": "GFS2: eliminate log elements and simplify\n\nThis patch eliminates the gfs2_log_element data structure and\nrolls its two components into the gfs2_bufdata. This makes the code\neasier to understand and makes it easier to migrate to a rbtree\nto keep the list sorted.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "144a4c2ff75552e2aabb9256ca0ec5e277097153",
      "tree": "aa27e93cc135ba15eb3fe17e732ed74b1a7b8886",
      "parents": [
        "4306629e1c0fd098d52f499e5a60aaa03e30df0d"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Apr 19 10:38:50 2012 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Apr 24 16:44:38 2012 +0100"
      },
      "message": "GFS2: Log code fixes\n\nThis patch removes a log lock from around atomic operation where\nit is not needed, removes an unused variable, and also changes\na void pointer used incorrectly to a struct page pointer.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "c50b91c4bd511dfe844e2aa7be429b6b88406353",
      "tree": "0a9584ec238036b599bb717db5bd1a7df5c616ca",
      "parents": [
        "dad30e9031c5927c30b402f73ac57ffbe09dc9ee"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Apr 16 16:40:56 2012 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Apr 24 16:44:36 2012 +0100"
      },
      "message": "GFS2: Remove bd_list_tr\n\nThis is another clean up in the logging code. This per-transaction\nlist was largely unused. Its main function was to ensure that the\nnumber of buffers in a transaction was correct, however that counter\nwas only used to check the number of buffers in the bd_list_tr, plus\nan assert at the end of each transaction. With the assert now changed\nto use the calculated buffer counts, we can remove both bd_list_tr and\nits associated counter.\n\nThis should make the code easier to understand as well as shrinking\na couple of structures.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "dad30e9031c5927c30b402f73ac57ffbe09dc9ee",
      "tree": "01384e81d04644da848477b0cb51182d18229b59",
      "parents": [
        "e8c92ed769008cfc799497f0a34c8faf46243c4d"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Apr 16 09:40:00 2012 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Apr 24 16:44:35 2012 +0100"
      },
      "message": "GFS2: Remove duplicate log code\n\nThe main part of this patch merges the two functions used to\nwrite metadata and data buffers to the log. Most of the code\nis common between the two functions, so this provides a nice\nclean up, and makes the code more readable.\n\nThe gfs2_get_log_desc() function is also extended to take two more\narguments, and thus avoid having to set the length and data1\nfields of this strucuture as a separate operation.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "e8c92ed769008cfc799497f0a34c8faf46243c4d",
      "tree": "6e00d9ddfd7d02ac9b1ac50d99de946d42443922",
      "parents": [
        "2f7ee358e5a0fedcb45c64bd83dad9dc9a212508"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Apr 16 09:28:31 2012 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Apr 24 16:44:34 2012 +0100"
      },
      "message": "GFS2: Clean up log write code path\n\nPrior to this patch, we have two ways of sending i/o to the log.\nOne of those is used when we need to allocate both the data\nto be written itself and also a buffer head to submit it. This\nis done via sb_getblk and friends. This is used mostly for writing\nlog headers.\n\nThe other method is used when writing blocks which have some\nin-place counterpart. This is the case for all the metadata\nblocks which are journalled, and when journaled data is in use,\nfor unescaped journalled data blocks.\n\nThis patch replaces both of those two methods, and about half\na dozen separate i/o submission points with a single i/o\nsubmission function. We also go direct to bio rather than\nusing buffer heads, since this allows us to build i/o\nrequests of the maximum size for the block device in\nquestion. It also reduces the memory required for flushing\nthe log, which can be very useful in low memory situations.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "14e5f1848dcaed611e7dadfaa0d593a4a1b93010",
      "tree": "645446839468853520277f27b40bbfc5689fc70a",
      "parents": [
        "fdb76a4228303491b1b9b8923310f2cbcec8dc9f"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Apr 03 15:04:22 2012 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Apr 24 16:44:26 2012 +0100"
      },
      "message": "GFS2: Make gfs2_log_fake_buf() write the buffer too\n\nSince we always write the buffer directly after this function\nreturns, we might as well merge it into here. This is a clean\nup in preparation for some further updates to the log code\nwhich are coming soon.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "ad12ab259d9131a53aa11c7c4561d97f7cc900df",
      "tree": "457e99e4c4b1facf029a6a094428eaef73f5d261",
      "parents": [
        "30d73f375238441d6dc31de0d90bc39f5bb0bfe5",
        "220cca2a4f5867db595135e0450381032eb54902"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 18:00:03 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 18:00:03 2012 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw\n\nPull gfs2 changes from Steven Whitehouse.\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw:\n  GFS2: Change truncate page allocation to be GFP_NOFS\n  GFS2: call gfs2_write_alloc_required for each chunk\n  GFS2: Clean up log flush header writing\n  GFS2: Remove a __GFP_NOFAIL allocation\n  GFS2: Flush pending glock work when evicting an inode\n  GFS2: make sure rgrps are up to date in func gfs2_blk2rgrpd\n  GFS2: Eliminate sd_rindex_mutex\n  GFS2: Unlock rindex mutex on glock error\n  GFS2: Make bd_cmp() static\n  GFS2: Sort the ordered write list\n  GFS2: FITRIM ioctl support\n  GFS2: Move two functions from log.c to lops.c\n  GFS2: glock statistics gathering\n"
    },
    {
      "commit": "d93492855ff307ce9d699e36d966af3420b80bb3",
      "tree": "796d1ab910796675960c780d128477cf97b9a4bb",
      "parents": [
        "2408f6ef6bf58620f8330b37181d2bdca2e7c7c5"
      ],
      "author": {
        "name": "Cong Wang",
        "email": "amwang@redhat.com",
        "time": "Fri Nov 25 23:14:30 2011 +0800"
      },
      "committer": {
        "name": "Cong Wang",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Tue Mar 20 21:48:23 2012 +0800"
      },
      "message": "gfs2: remove the second argument of k[un]map_atomic()\n\nSigned-off-by: Cong Wang \u003camwang@redhat.com\u003e\n"
    },
    {
      "commit": "75ca61c101601a7071d93571920be9697b3fda9b",
      "tree": "aaf42da2b6086a58d84efd4ef39a312f03cfbefb",
      "parents": [
        "35e478f42271673f79066a1ed008c6604621c6fe"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Mar 08 12:10:23 2012 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Mar 08 12:10:23 2012 +0000"
      },
      "message": "GFS2: Remove a __GFP_NOFAIL allocation\n\nIn order to ensure that we\u0027ve got enough buffer heads for flushing\nthe journal, the orignal code used __GFP_NOFAIL when performing\nthis allocation. Here we dispense with that in favour of using a\nmempool. This should improve efficiency in low memory conditions\nsince flushing the journal is a good way to get memory back, we\ndon\u0027t want to be spinning, waiting on memory allocations. The\nbuffers which are allocated via this mempool are fairly short lived,\nso that we\u0027ll recycle them pretty quickly.\n\nAlthough there are other memory allocations which occur during the\njournal flush process, this is the one which can potentially require\nthe most memory, so the most important one to fix.\n\nThe amount of memory reserved is a fixed amount, and we should not need\nto scale it when there are a greater number of filesystems in use.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "66fc061bda3526650328b73f69985da3518c4256",
      "tree": "350471fda86ebf60fee5436350d36ce9cedbea75",
      "parents": [
        "47ac5537a794fc71f89d51af492a945bd233f70c"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Feb 08 12:58:32 2012 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Feb 28 17:10:21 2012 +0000"
      },
      "message": "GFS2: FITRIM ioctl support\n\nThe FITRIM ioctl provides an alternative way to send discard requests to\nthe underlying device. Using the discard mount option results in every\nfreed block generating a discard request to the block device. This can\nbe slow, since many block devices can only process discard requests of\nlarger sizes, and also such operations can be time consuming.\n\nRather than using the discard mount option, FITRIM allows a sweep of the\nfilesystem on an occasional basis, and also to optionally avoid sending\ndown discard requests for smaller regions.\n\nIn GFS2 FITRIM will work at resource group granularity. There is a flag\nfor each resource group which keeps track of which resource groups have\nbeen trimmed. This flag is reset whenever a deallocation occurs in the\nresource group, and set whenever a successful FITRIM of that resource\ngroup has taken place. This helps to reduce repeated discard requests\nfor the same block ranges, again improving performance.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "47ac5537a794fc71f89d51af492a945bd233f70c",
      "tree": "65c9c68c8b14ceb0fae31f5a03ec4d811fdbec99",
      "parents": [
        "a245769f254bbbea868e2cf8dc42daa061cd276f"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Feb 03 15:21:59 2012 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Feb 28 17:09:59 2012 +0000"
      },
      "message": "GFS2: Move two functions from log.c to lops.c\n\ngfs2_log_get_buf() and gfs2_log_fake_buf() are both used\nonly in lops.c, so move them next to their callers and they\ncan then become static.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "891a8e9335176b7eb9adc5e34f555ee5e1da47c6",
      "tree": "61e52cad86ab0455f310478189f21722a785c16d",
      "parents": [
        "64dd153c83743af81f20924c6343652d731eeecb"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 19 10:25:49 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:51 2011 +0100"
      },
      "message": "GFS2: Misc fixes\n\nSome items picked up through automated code analysis. A few bits\nof unreachable code and two unchecked return values.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "7c9ca621137cde26be05448133fc1a554345f4f8",
      "tree": "9c0779d2ca6fa8a1c6dab7ff6391bef8f444f1b3",
      "parents": [
        "9453615a1a7ef3fa910c6464a619595556cfcd63"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Wed Aug 31 09:53:19 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:31 2011 +0100"
      },
      "message": "GFS2: Use rbtree for resource groups and clean up bitmap buffer ref count scheme\n\nHere is an update of Bob\u0027s original rbtree patch which, in addition, also\nresolves the rather strange ref counting that was being done relating to\nthe bitmap blocks.\n\nOriginally we had a dual system for journaling resource groups. The metadata\nblocks were journaled and also the rgrp itself was added to a list. The reason\nfor adding the rgrp to the list in the journal was so that the \"repolish\nclones\" code could be run to update the free space, and potentially send any\ndiscard requests when the log was flushed. This was done by comparing the\n\"cloned\" bitmap with what had been written back on disk during the transaction\ncommit.\n\nDue to this, there was a requirement to hang on to the rgrps\u0027 bitmap buffers\nuntil the journal had been flushed. For that reason, there was a rather\ncomplicated set up in the -\u003ego_lock -\u003ego_unlock functions for rgrps involving\nboth a mutex and a spinlock (the -\u003esd_rindex_spin) to maintain a reference\ncount on the buffers.\n\nHowever, the journal maintains a reference count on the buffers anyway, since\nthey are being journaled as metadata buffers. So by moving the code which deals\nwith the post-journal accounting for bitmap blocks to the metadata journaling\ncode, we can entirely dispense with the rather strange buffer ref counting\nscheme and also the requirement to journal the rgrps.\n\nThe net result of all this is that the -\u003esd_rindex_spin is left to do exactly\none job, and that is to look after the rbtree or rgrps.\n\nThis patch is designed to be a stepping stone towards using RCU for the rbtree\nof resource groups, however the reduction in the number of uses of the\n-\u003esd_rindex_spin is likely to have benefits for multi-threaded workloads,\nanyway.\n\nThe patch retains -\u003ego_lock and -\u003ego_unlock for rgrps, however these maybe also\nbe removed in future in favour of calling the functions directly where required\nin the code. That will allow locking of resource groups without needing to\nactually read them in - something that could be useful in speeding up statfs.\n\nIn the mean time though it is valid to dereference -\u003ebi_bh only when the rgrp\nis locked. This is basically the same rule as before, modulo the references not\nbeing valid until the following journal flush.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nCc: Benjamin Marzinski \u003cbmarzins@redhat.com\u003e\n"
    },
    {
      "commit": "f42ab0852946c1fb5103682c5897eb3da908e4b0",
      "tree": "3847b23d2cac6bab422e6e001e0c6d6c66a81f1e",
      "parents": [
        "627c10b7e471b5dcfb7101d6cc74d219619c9bc4"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Apr 14 16:50:31 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 20 09:01:17 2011 +0100"
      },
      "message": "GFS2: Optimise glock lru and end of life inodes\n\nThe GLF_LRU flag introduced in the previous patch can be\nused to check if a glock is on the lru list when a new\nholder is queued and if so remove it, without having first\nto get the lru_lock.\n\nThe main purpose of this patch however is to optimise the\nglocks left over when an inode at end of life is being\nevicted. Previously such glocks were left with the GLF_LFLUSH\nflag set, so that when reclaimed, each one required a log flush.\nThis patch resets the GLF_LFLUSH flag when there is nothing\nleft to flush thus preventing later log flushes as glocks are\nreused or demoted.\n\nIn order to do this, we need to keep track of the number of\nrevokes which are outstanding, and also to clear the GLF_LFLUSH\nbit after a log commit when only revokes have been processed.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "29687a2ac8dfcd5363e515ea715ec226aef8c26b",
      "tree": "a9bb35c110396c9c2a563c9442690cfb3368c8a8",
      "parents": [
        "5ac048bb7ea6e87b06504b999017cfa1f38f4092"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Mar 30 16:33:25 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 20 08:59:48 2011 +0100"
      },
      "message": "GFS2: Alter point of entry to glock lru list for glocks with an address_space\n\nRather than allowing the glocks to be scheduled for possible\nreclaim as soon as they have exited the journal, this patch\ndelays their entry to the list until the glocks in question\nare no longer in use.\n\nThis means that we will rely on the vm for writeback of all\ndirty data and metadata from now on. When glocks are added\nto the lru list they should be freeable much faster since all\nthe I/O required to free them should have already been completed.\n\nThis should lead to much better I/O patterns under low memory\nconditions.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "6c5103890057b1bb781b26b7aae38d33e4c517d8",
      "tree": "e6e57961dcddcb5841acb34956e70b9dc696a880",
      "parents": [
        "3dab04e6978e358ad2307bca563fabd6c5d2c58b",
        "9d2e157d970a73b3f270b631828e03eb452d525e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "message": "Merge branch \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block: (65 commits)\n  Documentation/iostats.txt: bit-size reference etc.\n  cfq-iosched: removing unnecessary think time checking\n  cfq-iosched: Don\u0027t clear queue stats when preempt.\n  blk-throttle: Reset group slice when limits are changed\n  blk-cgroup: Only give unaccounted_time under debug\n  cfq-iosched: Don\u0027t set active queue in preempt\n  block: fix non-atomic access to genhd inflight structures\n  block: attempt to merge with existing requests on plug flush\n  block: NULL dereference on error path in __blkdev_get()\n  cfq-iosched: Don\u0027t update group weights when on service tree\n  fs: assign sb-\u003es_bdi to default_backing_dev_info if the bdi is going away\n  block: Require subsystems to explicitly allocate bio_set integrity mempool\n  jbd2: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  jbd: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  fs: make fsync_buffers_list() plug\n  mm: make generic_writepages() use plugging\n  blk-cgroup: Add unaccounted time to timeslice_used.\n  block: fixup plugging stubs for !CONFIG_BLOCK\n  block: remove obsolete comments for blkdev_issue_zeroout.\n  blktrace: Use rq-\u003ecmd_flags directly in blk_add_trace_rq.\n  ...\n\nFix up conflicts in fs/{aio.c,super.c}\n"
    },
    {
      "commit": "c618e87a5fd02aaad006c12d5a80a231dfa39250",
      "tree": "3f8f1f39fb6dedf3cb72fbd71377cc0eecafc7ce",
      "parents": [
        "d6a079e82efd5fcbb1c7295f22e123c2cc748018"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 14 12:40:29 2011 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 14 12:40:29 2011 +0000"
      },
      "message": "GFS2: Update to AIL list locking\n\nThe previous patch missed a couple of places where the AIL list\nneeded locking, so this fixes up those places, plus a comment\nis corrected too.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Dave Chinner \u003cdchinner@redhat.com\u003e\n"
    },
    {
      "commit": "d6a079e82efd5fcbb1c7295f22e123c2cc748018",
      "tree": "f95f3369dfb560bfc5d282577ca1edec0487e1d7",
      "parents": [
        "e4a7b7b0c98efcdcc4c1f6eb10925dec1fbc4016"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Mar 11 11:52:25 2011 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Mar 11 11:52:25 2011 +0000"
      },
      "message": "GFS2: introduce AIL lock\n\nThe log lock is currently used to protect the AIL lists and\nthe movements of buffers into and out of them. The lists\nare self contained and no log specific items outside the\nlists are accessed when starting or emptying the AIL lists.\n\nHence the operation of the AIL does not require the protection\nof the log lock so split them out into a new AIL specific lock\nto reduce the amount of traffic on the log lock. This will\nalso reduce the amount of serialisation that occurs when\nthe gfs2_logd pushes on the AIL to move it forward.\n\nThis reduces the impact of log pushing on sequential write\nthroughput.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "721a9602e6607417c6bc15b18e97a2f35266c690",
      "tree": "4987991e43f35b8b3b685fea0040c5265b578996",
      "parents": [
        "cf15900e1209d5b46ec2d24643adbf561830935f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Mar 09 11:56:30 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:27 2011 +0100"
      },
      "message": "block: kill off REQ_UNPLUG\n\nWith the plugging now being explicitly controlled by the\nsubmitter, callers need not pass down unplugging hints\nto the block layer. If they want to unplug, it\u0027s because they\nmanually plugged on their own - in which case, they should just\nunplug at will.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "bc015cb84129eb1451913cfebece270bf7a39e0f",
      "tree": "4f116a61b802d87ae80051e9ae05d8fcb73d9ae7",
      "parents": [
        "2b1caf6ed7b888c95a1909d343799672731651a5"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Jan 19 09:30:01 2011 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jan 21 09:39:08 2011 +0000"
      },
      "message": "GFS2: Use RCU for glock hash table\n\nThis has a number of advantages:\n\n - Reduces contention on the hash table lock\n - Makes the code smaller and simpler\n - Should speed up glock dumps when under load\n - Removes ref count changing in examine_bucket\n - No longer need hash chain lock in glock_put() in common case\n\nThere are some further changes which this enables and which\nwe may do in the future. One is to look at using SLAB_RCU,\nand another is to look at using a per-cpu counter for the\nper-sb glock counter, since that is touched twice in the\nlifetime of each glock (but only used at umount time).\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "5e687eac1bd31baed110d239ef827d3ba666f311",
      "tree": "71f596b87f60a1d15372fdcfabf3305faa4a57d7",
      "parents": [
        "1a0eae8848cde6e0734360f6456496c995ee1e23"
      ],
      "author": {
        "name": "Benjamin Marzinski",
        "email": "bmarzins@redhat.com",
        "time": "Tue May 04 14:29:16 2010 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed May 05 09:39:18 2010 +0100"
      },
      "message": "GFS2: Various gfs2_logd improvements\n\nThis patch contains various tweaks to how log flushes and active item writeback\nwork. gfs2_logd is now managed by a waitqueue, and gfs2_log_reseve now waits\nfor gfs2_logd to do the log flushing.  Multiple functions were rewritten to\nremove the need to call gfs2_log_lock(). Instead of using one test to see if\ngfs2_logd had work to do, there are now seperate tests to check if there\nare two many buffers in the incore log or if there are two many items on the\nactive items list.\n\nThis patch is a port of a patch Steve Whitehouse wrote about a year ago, with\nsome minor changes.  Since gfs2_ail1_start always submits all the active items,\nit no longer needs to keep track of the first ai submitted, so this has been\nremoved. In gfs2_log_reserve(), the order of the calls to\nprepare_to_wait_exclusive() and wake_up() when firing off the logd thread has\nbeen switched.  If it called wake_up first there was a small window for a race,\nwhere logd could run and return before gfs2_log_reserve was ready to get woken\nup. If gfs2_logd ran, but did not free up enough blocks, gfs2_log_reserve()\nwould be left waiting for gfs2_logd to eventualy run because it timed out.\nFinally, gt_logd_secs, which controls how long to wait before gfs2_logd times\nout, and flushes the log, can now be set on mount with ar_commit.\n\nSigned-off-by: Benjamin Marzinski \u003cbmarzins@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "e5884636da3a128617032747654284ae7badc7ff",
      "tree": "39c82c529a112d4b894e9eb9552817f03d3d67f5",
      "parents": [
        "1ccaba3056796ab1f933736d763ffcd1958866cd"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Feb 05 16:45:25 2010 +1100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 01 14:08:26 2010 +0000"
      },
      "message": "GFS2: ordered writes are backwards\n\nWhen we queue data buffers for ordered write, the buffers are added\nto the head of the ordered write list. When the log needs to push\nthese buffers to disk, it also walks the list from the head. The\nresult is that the the ordered buffers are submitted to disk in\nreverse order.\n\nFor large writes, this means that whenever the log flushes large\nstreams of reverse sequential order buffers are pushed down into the\nblock layers. The elevators don\u0027t handle this particularly well, so\nIO rates tend to be significantly lower than if the IO was issued in\nascending block order.\n\nQueue new ordered buffers to the tail of the ordered buffer list to\nensure that IO is dispatched in the order it was submitted. This\nshould significantly improve large sequential write speeds. On a\ndisk capable of 85MB/s, speeds increase from 50MB/s to 65MB/s for\nnoop and from 38MB/s to 50MB/s for cfq.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "0ab7d13fcbd7ce1658c563e345990ba453719deb",
      "tree": "5db7f97c264883765da4a9c6324019f0cf746e44",
      "parents": [
        "2c77634965ee28c8b4790ffb5e83dd5ff7ac8988"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Nov 06 16:20:51 2009 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Dec 03 11:58:47 2009 +0000"
      },
      "message": "GFS2: Tag all metadata with jid\n\nThere are two spare field in the header common to all GFS2\nmetadata. One is just the right size to fit a journal id\nin it, and this patch updates the journal code so that each\ntime a metadata block is modified, we tag it with the journal\nid of the node which is performing the modification.\n\nThe reason for this is that it should make it much easier to\ndebug issues which arise if we can tell which node was the\nlast to modify a particular metadata block.\n\nSince the field is updated before the block is written into\nthe journal, each journal should only contain metadata which\nis tagged with its own journal id. The one exception to this\nis the journal header block, which might have a different node\u0027s\nid in it, if that journal was recovered by another node in the\ncluster.\n\nThus each journal will contain a record of which nodes recovered\nit, via the journal header.\n\nThe other field in the metadata header could potentially be\nused to hold information about what kind of operation was\nperformed, but for the time being we just zero it on each\ntransaction so that if we use it for that in future, we\u0027ll\nknow that the information (where it exists) is reliable.\n\nI did consider using the other field to hold the journal\nsequence number, however since in GFS2\u0027s journaling we write\nthe modified data into the journal and not the original\ndata, this gives no information as to what action caused the\nmodification, so I think we can probably come up with a better\nuse for those 64 bits in the future.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "63997775b795f97ef51f3e56bc3abc9edc04bbb0",
      "tree": "607519910f92b1101fbe0223c301c503001bc0ef",
      "parents": [
        "8ebf975608aaebd7feb33d77f07ba21a6380e086"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jun 12 08:49:20 2009 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jun 12 08:49:20 2009 +0100"
      },
      "message": "GFS2: Add tracepoints\n\nThis patch adds the ability to trace various aspects of the GFS2\nfilesystem. The trace points are divided into three groups,\nglocks, logging and bmap. These points have been chosen because\nthey allow inspection of the major internal functions of GFS2\nand they are also generic enough that they are unlikely to need\nany major changes as the filesystem evolves.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "c969f58ca43fc403c75f5d3da4cf1e21de7afaa0",
      "tree": "d38b579882f89c222937530c527224e2a77548b0",
      "parents": [
        "a4d7749be5de4a7261bcbe3c7d96c748792ec455"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Apr 07 14:13:01 2009 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 11 12:36:41 2009 +0100"
      },
      "message": "GFS2: Update the rw flags\n\nAfter Jens recent updates:\nhttp://git.kernel.org/?p\u003dlinux/kernel/git/torvalds/linux-2.6.git;a\u003dcommitdiff;h\u003da1f242524c3c1f5d40f1c9c343427e34d1aadd6e\net al. this is a patch to bring gfs2 uptodate with the core\ncode. Also I\u0027ve managed to squash another call to ll_rw_block()\nalong the way.\n\nThere is still one part of the GFS2 I/O paths which are not correctly\nannotated and that is due to the sharing of the writeback code between\nthe data and metadata address spaces. I would like to change that too,\nbut this patch is still worth doing on its own, I think.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "f057f6cdf64175db1151b1f5d110e29904f119a1",
      "tree": "582dbf358e351f64977620c29ebf772d693b1948",
      "parents": [
        "22077f57dec8fcbeb1112b35313961c0902ff038"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jan 12 10:43:39 2009 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "steve@dolmen.chygwyn.com",
        "time": "Tue Mar 24 11:21:14 2009 +0000"
      },
      "message": "GFS2: Merge lock_dlm module into GFS2\n\nThis is the big patch that I\u0027ve been working on for some time\nnow. There are many reasons for wanting to make this change\nsuch as:\n o Reducing overhead by eliminating duplicated fields between structures\n o Simplifcation of the code (reduces the code size by a fair bit)\n o The locking interface is now the DLM interface itself as proposed\n   some time ago.\n o Fewer lookups of glocks when processing replies from the DLM\n o Fewer memory allocations/deallocations for each glock\n o Scope to do further optimisations in the future (but this patch is\n   more than big enough for now!)\n\nPlease note that (a) this patch relates to the lock_dlm module and\nnot the DLM itself, that is still a separate module; and (b) that\nwe retain the ability to build GFS2 as a standalone single node\nfilesystem with out requiring the DLM.\n\nThis patch needs a lot of testing, hence my keeping it I restarted\nmy -git tree after the last merge window. That way, this has the maximum\nexposure before its merged. This is (modulo a few minor bug fixes) the\nsame patch that I\u0027ve been posting on and off the the last three months\nand its passed a number of different tests so far.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "3ad62e87cd38817361e165cf4ad496ab76e19e81",
      "tree": "b094e3244239d67d1d1c72abac50a1ba792aaa6a",
      "parents": [
        "048786f1e6042022a8fb2035157a8c8c3a82a4f2"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Mon Jan 28 16:35:13 2008 -0600"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 31 10:40:05 2008 +0100"
      },
      "message": "[GFS2] Plug an unlikely leak\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "d0109bfa84d6603becac8c2e87b3716f557f2039",
      "tree": "6da41dae00d5784f4e52831d3d40629c1698b00a",
      "parents": [
        "ca390601a8bbb4ab8301a9469d23cdb1cf77e7cb"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Mon Jan 28 11:20:10 2008 -0600"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 31 10:39:54 2008 +0100"
      },
      "message": "[GFS2] Only do lo_incore_commit once\n\nThis patch is performance related.  When we\u0027re doing a log flush,\nI noticed we were calling buf_lo_incore_commit twice: once for\ndata bufs and once for metadata bufs.  Since this is the same\nfunction and does the same thing in both cases, there should be\nno reason to call it twice.  Since we only need to call it once,\nwe can also make it faster by removing it from the generic \"lops\"\ncode and making it a stand-along static function.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "2bcd610d2fdea608a8fdac32788fc35a32a2327c",
      "tree": "5b3753ff18c1da54bb860dbd67211e6abea78ca7",
      "parents": [
        "8cbc4342478311c2a85260a7ca54d96cb7f71f7b"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Nov 08 14:25:12 2007 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jan 25 08:07:52 2008 +0000"
      },
      "message": "[GFS2] Don\u0027t add glocks to the journal\n\nThe only reason for adding glocks to the journal was to keep track\nof which locks required a log flush prior to release. We add a\nflag to the glock to allow this check to be made in a simpler way.\n\nThis reduces the size of a glock (by 12 bytes on i386, 24 on x86_64)\nand means that we can avoid extra work during the journal flush.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "9ff8ec32e58875022447af619bec6e5aee7c77e4",
      "tree": "0c626762f334d1cc066113b3e47a2fa02a72af0c",
      "parents": [
        "5561093e2cac9f7d2a77e39cc689b8d2b7f9b2bc"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Sep 28 13:49:05 2007 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jan 25 08:07:25 2008 +0000"
      },
      "message": "[GFS2] Split gfs2_writepage into three cases\n\nThis patch splits gfs2_writepage into separate functions for each of\nthe three cases: writeback, ordered and journalled. As a result\nit becomes a lot easier to see what each one is doing. The common\ncode is moved into gfs2_writepage_common.\n\nThis fixes a performance bug where we were doing more work than\nstrictly required in the ordered write case.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "16615be18cadf53ee6f8a4f0bdd647f0753421b1",
      "tree": "670c75e931e6d606211f338ee5e8b1d603c96521",
      "parents": [
        "55c0c4ac0be144014651b19e77c9b77f367955de"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 17 10:59:52 2007 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Oct 10 08:56:24 2007 +0100"
      },
      "message": "[GFS2] Clean up journaled data writing\n\nThis patch cleans up the code for writing journaled data into the log.\nIt also removes the need to allocate a small \"tag\" structure for each\nblock written into the log. Instead we just keep count of the outstanding\nI/O so that we can be sure that its all been written at the correct time.\nAnother result of this patch is that a number of ll_rw_block() calls\nhave become submit_bh() calls, closing some races at the same time.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "1ad38c437fa33f85ba4b6a85ea8c5478ee72d5bd",
      "tree": "11a5fc7993ba9ae343fc72f03f9a11f312fd6128",
      "parents": [
        "0820ab517e1b100ee3f9584ec27f93309689ebe7"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 03 11:01:33 2007 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Oct 10 08:56:12 2007 +0100"
      },
      "message": "[GFS2] Clean up gfs2_trans_add_revoke()\n\nThe following alters gfs2_trans_add_revoke() to take a struct\ngfs2_bufdata as an argument. This eliminates the memory allocation which\nwas previously required by making use of the already existing struct\ngfs2_bufdata. It makes some sanity checks to ensure that the\ngfs2_bufdata has been removed from all the lists before its recycled as\na revoke structure. This saves one memory allocation and one free per\nrevoke structure.\n\nAlso as a result, and to simplify the locking, since there is no longer\nany blocking code in gfs2_trans_add_revoke() we must hold the log lock\nwhenever this function is called. This reduces the amount of times we\ntake and unlock the log lock.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "0820ab517e1b100ee3f9584ec27f93309689ebe7",
      "tree": "db2baf9e6d2ac545c344a412fe31371a09bf9b68",
      "parents": [
        "82e86087bb774cd54d47db4a7c771b5b29bea9ed"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Sun Sep 02 16:47:38 2007 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Oct 10 08:56:10 2007 +0100"
      },
      "message": "[GFS2] Use slab operations for all gfs2_bufdata allocations\n\nThe old revoke structure was allocated using kalloc/kfree but\nthere is a slab cache for gfs2_bufdata, so we should use that\nnow that the structures have been converted.\n\nThis is part two of the patch series to merge the revoke\nand gfs2_bufdata structures.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "82e86087bb774cd54d47db4a7c771b5b29bea9ed",
      "tree": "c067773861203becfa6c8cf9e4ee449787cf65f6",
      "parents": [
        "8475487befb29eeb038fef374a7433d276336a25"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Sun Sep 02 15:39:43 2007 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Oct 10 08:56:07 2007 +0100"
      },
      "message": "[GFS2] Replace revoke structure with bufdata structure\n\nBoth the revoke structure and the bufdata structure are quite similar.\nThey are basically small tags which are put on lists. In addition to\nwhich the revoke structure is always allocated when there is a bufdata\nstructure which is (or can be) freed. As such it should be possible to\nreduce the number of frees and allocations by using the same structure\nfor both purposes.\n\nThis patch is the first step along that path. It replaces existing uses\nof the revoke structure with the bufdata structure.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "d7b616e252b125f12b007c392f7644053bb6f140",
      "tree": "0794272905a1876ef74144a993f7a76400893813",
      "parents": [
        "9b9107a5a8b190e6cf09bbdf893869c6a9c482cc"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Sun Sep 02 10:48:13 2007 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Oct 10 08:56:03 2007 +0100"
      },
      "message": "[GFS2] Clean up ordered write code\n\nThe following patch removes the ordered write processing from\ndatabuf_lo_before_commit() and moves it to log.c. This has the effect of\ngreatly simplyfying databuf_lo_before_commit() and well as potentially\nmaking the ordered write code more efficient.\n\nAs a side effect of this, its now possible to remove ordered buffers\nfrom the ordered buffer list at any time, so we now make use of this in\ninvalidatepage and releasepage to ensure timely release of these\nbuffers.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "9b9107a5a8b190e6cf09bbdf893869c6a9c482cc",
      "tree": "77016dd5476f6ba72605ac0cdcbccec3ce794057",
      "parents": [
        "eaf965270ffff3086ef929e660ace45e862cfd2d"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Aug 27 13:54:05 2007 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Oct 10 08:56:00 2007 +0100"
      },
      "message": "[GFS2] Move pin/unpin into lops.c, clean up locking\n\ngfs2_pin and gfs2_unpin are only used in lops.c, despite being\ndefined in meta_io.c, so this patch moves them into lops.c and\nmakes them static. At the same time, its possible to clean up\nthe locking in the buf and databuf _lo_add() functions so that\nwe only need to grab the spinlock once. Also we have to move\nlock_buffer() around the _lo_add() functions since we can\u0027t\ndo that in gfs2_pin() any more since we hold the spinlock\nfor the duration of that function.\n\nAs a result, the code shrinks by 12 lines and we do far fewer\noperations when adding buffers to the log. It also makes the\ncode somewhat easier to read \u0026 understand.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "ec217e0ece60f2240772e6f08e0529775846c627",
      "tree": "2b06b31dbb9165cf086580fe589249e8a54313c2",
      "parents": [
        "a947e0335699a1d387c3826e5b8eff9e0afe505e"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Wed Aug 22 11:15:29 2007 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Oct 10 08:55:43 2007 +0100"
      },
      "message": "[GFS2] Patch to protect sd_log_num_jdata\n\nThis is a patch to GFS2 to protect sd_log_num_jdata with the\ngfs2_log_lock.  Without this patch, there is a timing window\nwhere you can get hit the following assert from function\ngfs2_log_flush():\n\ngfs2_assert_withdraw(sdp,\n\t\t\tsdp-\u003esd_log_num_buf + sdp-\u003esd_log_num_jdata \u003d\u003d\n\t\t\tsdp-\u003esd_log_commited_buf +\n\t\t\tsdp-\u003esd_log_commited_databuf);\n\nI\u0027ve tested it on my roth cluster and it fixes the problem.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "905d2aefa9e06ebb995df96920d273a516fcd3f9",
      "tree": "0c4ac325365a673d82bd5b00cbdc0cc22ac7d8e6",
      "parents": [
        "7b08fc620109c2f66575e9ae884f45c37933ea18"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Tue Jul 24 14:05:31 2007 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Oct 10 08:54:51 2007 +0100"
      },
      "message": "[GFS2] Move some code inside the log lock\n\nThis is the first of five patches for bug #248176:\n\nThere were still some critical variables being manipulated outside\nthe log_lock spinlock.  That usually resulted in a hang.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "bdcb88562ca90e6cfac13130e147c63aaa4f9e41",
      "tree": "54411e375cfd212e641ec464855f7da14e60cf4a",
      "parents": [
        "3650925893469ccb03dbcc6a440c5d363350f591"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Wed Jul 11 15:55:23 2007 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Aug 14 10:32:04 2007 +0100"
      },
      "message": "[GFS2] soft lockup detected in databuf_lo_before_commit\n\nThis is part 2 of the patch for bug #245832, part 1 of which is already\nin the git tree.\n\nThe problem was that sdp-\u003esd_log_num_databuf was not always being\nprotected by the gfs2_log_lock spinlock, but the sd_log_le_databuf\n(which it is supposed to reflect) was protected.  That meant there\nwas a timing window during which gfs2_log_flush called\ndatabuf_lo_before_commit and the count didn\u0027t match what was\nreally on the linked list in that window.  So when it ran out of\nitems on the linked list, it decremented total_dbuf from 0 to -1 and\nthus never left the \"while(total_dbuf)\" loop.\n\nThe solution is to protect the variable sdp-\u003esd_log_num_databuf so\nthat the value will always match the contents of the linked list,\nand therefore the number will never go negative, and therefore, the\nloop will be exited properly.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "773ed1a044adc868036dee1722b8bca6ce5923e2",
      "tree": "dfa488af453c3afde1f8fa50d8771502808722f5",
      "parents": [
        "eaf5bd3cac92126e5825c6ebc10bee0fba35d555"
      ],
      "author": {
        "name": "Robert Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Wed Jun 20 08:34:06 2007 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jul 09 08:23:52 2007 +0100"
      },
      "message": "[GFS2] Addendum to the journaled file/unmount patch\n\nThis patch is an addendum to the previous journaled file/unmount patch.\nIt fixes a problem discovered during testing.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "2332c4435bb733b5cd4f612ee57532bd8fde4c1c",
      "tree": "dfa006c482a6e9c1a5e693478b424db0f5492fbe",
      "parents": [
        "2840501ac822c5bf712f67b4b02640e16e145a29"
      ],
      "author": {
        "name": "Robert Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Mon Jun 18 14:50:20 2007 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jul 09 08:23:47 2007 +0100"
      },
      "message": "[GFS2] assertion failure after writing to journaled file, umount\n\nThis patch passes all my nasty tests that were causing the code to\nfail under one circumstance or another.  Here is a complete summary\nof all changes from today\u0027s git tree, in order of appearance:\n\n1. There are now separate variables for metadata buffer accounting.\n2. Variable sd_log_num_hdrs is no longer needed, since the header\n   accounting is taken care of by the reserve/refund sequence.\n3. Fixed a tiny grammatical problem in a comment.\n4. Added a new function \"calc_reserved\" to calculate the reserved\n   log space.  This isn\u0027t entirely necessary, but it has two benefits:\n   First, it simplifies the gfs2_log_refund function greatly.\n   Second, it allows for easier debugging because I could sprinkle the\n   code with calls to this function to make sure the accounting is\n   proper (by adding asserts and printks) at strategic point of the code.\n5. In log_pull_tail there apparently was a kludge to fix up the\n   accounting based on a \"pull\" parameter.  The buffer accounting is\n   now done properly, so the kludge was removed.\n6. File sync operations were making a call to gfs2_log_flush that\n   writes another journal header.  Since that header was unplanned\n   for (reserved) by the reserve/refund sequence, the free space had\n   to be decremented so that when log_pull_tail gets called, the free\n   space is be adjusted properly.  (Did I hear you call that a kludge?\n   well, maybe, but a lot more justifiable than the one I removed).\n7. In the gfs2_log_shutdown code, it optionally syncs the log by\n   specifying the PULL parameter to log_write_header.  I\u0027m not sure\n   this is necessary anymore.  It just seems to me there could be\n   cases where shutdown is called while there are outstanding log\n   buffers.\n8. In the (data)buf_lo_before_commit functions, I changed some offset\n   values from being calculated on the fly to being constants.\tThat\n   simplified some code and we might as well let the compiler do the\n   calculation once rather than redoing those cycles at run time.\n9. This version has my rewritten databuf_lo_add function.\n   This version is much more like its predecessor, buf_lo_add, which\n   makes it easier to understand.  Again, this might not be necessary,\n   but it seems as if this one works as well as the previous one,\n   maybe even better, so I decided to leave it in.\n10. In databuf_lo_before_commit, a previous data corruption problem\n   was caused by going off the end of the buffer.  The proper solution\n   is to have the proper limit in place, rather than stopping earlier.\n   (Thus my previous attempt to fix it is wrong).\n   If you don\u0027t wrap the buffer, you\u0027re stopping too early and that\n   causes more log buffer accounting problems.\n11. In lops.h there are two new (previously mentioned) constants for\n   figuring out the data offset for the journal buffers.\n12. There are also two new functions, buf_limit and databuf_limit to\n   calculate how many entries will fit in the buffer.\n13. In function gfs2_meta_wipe, it needs to distinguish between pinned\n   metadata buffers and journaled data buffers for proper journal buffer\n   accounting.\tIt can\u0027t use the JDATA gfs2_inode flag because it\u0027s\n   sometimes passed the \"real\" inode and sometimes the \"metadata\n   inode\" and the inode flags will be random bits in a metadata\n   gfs2_inode.\tIt needs to base its decision on which was passed in.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "8fb68595d508fd30ec90939572484b263600376c",
      "tree": "218a457675c111e2224fb57998d38e45d5786bd1",
      "parents": [
        "fad59c1390045b5adb7c7249ec4e77e0f868aca5"
      ],
      "author": {
        "name": "Robert Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Tue Jun 12 11:24:36 2007 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jul 09 08:23:40 2007 +0100"
      },
      "message": "[GFS2] Journaled file write/unstuff bug\n\nThis patch is for bugzilla bug 283162, which uncovered a number of\nbugs pertaining to writing to files that have the journaled bit on.\nThese bugs happen most often when writing to the meta_fs because\nthe files are always journaled.  So operations like gfs2_grow were\nparticularly vulnerable, although many of the problems could be\nrecreated with normal files after setting the journaled bit on.\nThe problems fixed are:\n\n-GFS2 wasn\u0027t ever writing unstuffed journaled data blocks to their\n in-place location on disk. Now it does.\n\n-If you unmounted too quickly after doing IO to a journaled file,\n GFS2 was crashing because you would discard a buffer whose bufdata\n was still on the active items list.  GFS2 now deals with this\n gracefully.\n\n-GFS2 was losing track of the bufdata for journaled data blocks,\n and it wasn\u0027t getting freed, causing an error when you tried to\n unmount the module.  GFS2 now frees all the bufdata structures.\n\n-There was a memory corruption occurring because GFS2 wrote\n twice as many log entries for journaled buffers.\n\n-It was occasionally trying to write journal headers in buffers\n that weren\u0027t currently mapped.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Benjamin Marzinski \u003cbmarzins@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "ddf4b426aababdae4cb96326d7aeb9d119f42c50",
      "tree": "26aceb619f34e7b58e50a0ad0dc4db4e69664edc",
      "parents": [
        "afb853fb4eec380b492a3c369f837359359c28e8"
      ],
      "author": {
        "name": "Benjamin Marzinski",
        "email": "bmarzins@redhat.com",
        "time": "Fri Jun 01 14:21:38 2007 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jul 09 08:23:08 2007 +0100"
      },
      "message": "[GFS2] fix jdata issues\n\nThis is a patch for the first three issues of RHBZ #238162\n\nThe first issue is that when you allocate a new page for a file, it will not\nstart off uptodate. This makes sense, since you haven\u0027t written anything to that\npart of the file yet.  Unfortunately, gfs2_pin() checks to make sure that the\nbuffers are uptodate.  The solution to this is to mark the buffers uptodate in\ngfs2_commit_write(), after they have been zeroed out and have the data written\ninto them.  I\u0027m pretty confident with this fix, although it\u0027s not completely\nobvious that there is no problem with marking the buffers uptodate here.\n\nThe second issue is simply that you can try to pin a data buffer that is already\non the incore log, and thus, already pinned. This patch checks to see if this\nbuffer is already on the log, and exits databuf_lo_add() if it is, just like\nbuf_lo_add() does.\n\nThe third issue is that gfs2_log_flush() doesn\u0027t do it\u0027s block accounting\ncorrectly.  Both metadata and journaled data are logged, but gfs2_log_flush()\nonly compares the number of metadata blocks with the number of blocks to commit\nto the ondisk journal.  This patch also counts the journaled data blocks.\n\nSigned-off-by: Benjamin Marzinski \u003cbmarzins@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "6883562588bc6c70776ecc396ee7eda36c2c8da9",
      "tree": "c683994d1f805914fc18f3247cc86cc011a9aa0b",
      "parents": [
        "f35ac346bc48b2086aa94f031baf1f6237a89de6"
      ],
      "author": {
        "name": "Benjamin Marzinski",
        "email": "bmarzins@redhat.com",
        "time": "Fri Mar 23 09:05:12 2007 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue May 01 09:10:50 2007 +0100"
      },
      "message": "[GFS2] Fix log entry list corruption\n\nWhen glock_lo_add and rg_lo_add attempt to add an element to the log, they\ncheck to see if has already been added before locking the log. If another\nprocess adds that element to the log in this window between the check and\nlocking the log, the element will be added to the list twice. This causes\nthe log element list to become corrupted in such a way that the log element\ncan never be successfully removed from the list. This patch pulls the\nlist_empty() check inside the log lock, to remove this window.\n\nSigned-off-by: Benjamin E. Marzinski \u003cbmarzins@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "8bd9572769767c6fd164cff4e1202df12cb34b4a",
      "tree": "aef67aaaaa443ae233630f3eb5cbbb02aba375cb",
      "parents": [
        "d7c103d0bd29c94f78155a4538faf314e49d9713"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Jan 25 10:04:20 2007 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Feb 05 13:37:56 2007 -0500"
      },
      "message": "[GFS2] Fix list corruption in lops.c\n\nThe patch below appears to fix the list corruption that we are seeing on\noccasion. Although the transaction structure is private to a single\nthread, when the queued structures are dismantled during an in-core\ncommit, its possible for a different thread to be trying to add the same\nstructure to another, new, transaction at the same time.\n\nTo avoid this, this patch takes the log spinlock during this operation.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "7020933156ac2a8a7386314933e49948bf0438f7",
      "tree": "2833fb3993762143b32696919342ab7e86c7d471",
      "parents": [
        "9e2dbdac3df300516ffdd9a8631f23164d068a50"
      ],
      "author": {
        "name": "Russell Cattelan",
        "email": "cattelan@redhat.com",
        "time": "Thu Nov 09 11:28:08 2006 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Nov 30 10:34:55 2006 -0500"
      },
      "message": "[GFS2] Fix race in logging code\n\nThe log lock is dropped prior to io submittion, but\nthis exposes a hole in which the log data structures\nmay be going away due to a truncate.\nStore the buffer head in a local pointer prior to\ndropping the lock and relay on the buffer_head lock\nfor consitency on the buffer head.\n\nSigned-Off-By: Russell Cattelan \u003ccattelan@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "551676226163379c217e8ec54bd287eab9b8521e",
      "tree": "84abfa1a29c23890124f6dc66790af49917940b4",
      "parents": [
        "e697264709c86040271cdd7abee781d7adbb7f91"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 13 21:47:13 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Nov 30 10:33:14 2006 -0500"
      },
      "message": "[GFS2] split and annotate gfs2_log_head\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "c312c4fdc88514dd9522b7858eb879e610aeb9b1",
      "tree": "ab63777ca2eaafc9b46ce347bef1488c38794296",
      "parents": [
        "fe1a698ffef5af546dd4a8cd6a1f2f202491c4ef"
      ],
      "author": {
        "name": "Russell Cattelan",
        "email": "cattelan@redhat.com",
        "time": "Thu Oct 12 09:23:41 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Oct 12 17:11:13 2006 -0400"
      },
      "message": "[GFS2] Pass the correct value to kunmap_atomic\n\nPass kaddr rather than (incorrect) struct page to kunmap_atomic.\n\nSigned-off-by: Russell Cattelan \u003ccattelan@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "907b9bceb41fa46beae93f79cc4a2247df502c0f",
      "tree": "7229e00c1f33fdd097fcacacd6208f2390e4728a",
      "parents": [
        "7276b3b0c77101f8b3f4e45e89a29cf9045e831a"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 25 09:26:04 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 25 09:26:04 2006 -0400"
      },
      "message": "[GFS2/DLM] Fix trailing whitespace\n\nAs per Andrew Morton\u0027s request, removed trailing whitespace.\n\nCc: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "7276b3b0c77101f8b3f4e45e89a29cf9045e831a",
      "tree": "3dd0a981218e490ddf47f925ba20c254e491ce98",
      "parents": [
        "91fa47964165a42401fbc1f41caa63ab78564305"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 21 17:05:23 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 21 17:05:23 2006 -0400"
      },
      "message": "[GFS2] Tidy up meta_io code\n\nFix a bug in the directory reading code, where we might have dereferenced\na NULL pointer in case of OOM. Updated the directory code to use the new\n\u0026 improved version of gfs2_meta_ra() which now returns the first block\nthat was being read. Previously it was releasing it requiring following\ncode to grab the block again at each point it was called.\n\nAlso turned off readahead on directory lookups since we are reading a\nhash table, and therefore reading the entries in order is very\nunlikely. Readahead is still used for all other calls to the\ndirectory reading function (e.g. when growing the hash table).\n\nRemoved the DIO_START constant. Everywhere this was used, it was\nused to unconditionally start i/o aside from a couple of places, so\nI\u0027ve removed it and made the couple of exceptions to this rule into\nseparate functions.\n\nAlso hunted through the other DIO flags and removed them as arguments\nfrom functions which were always called with the same combination of\narguments.\n\nUpdated gfs2_meta_indirect_buffer to be a bit more efficient and\nhopefully also be a bit easier to read.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "7d308590ae60d1f038a54a94e78a385c5c163452",
      "tree": "f672724840a07022ff6deb8022082af35dbad44c",
      "parents": [
        "f3b30912e0eab0e4160c7649a5f2b10be68027b9"
      ],
      "author": {
        "name": "Fabio Massimo Di Nitto",
        "email": "fabbione@ubuntu.com",
        "time": "Tue Sep 19 07:56:29 2006 +0200"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Sep 19 08:45:18 2006 -0400"
      },
      "message": "[GFS2] Export lm_interface to kernel headers\n\n\nlm_interface.h has a few out of the tree clients such as GFS1\nand userland tools.\n\nRight now, these clients keeps a copy of the file in their build tree\nthat can go out of sync.\n\nMove lm_interface.h to include/linux, export it to userland and\nclean up fs/gfs2 to use the new location.\n\nSigned-off-by: Fabio M. Di Nitto \u003cfabbione@ubuntu.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "a67cdbd4579c387c021a17c7447da8b88f2a94f4",
      "tree": "9c2a7825b7b43cd00fff8388f69c96fd6683a405",
      "parents": [
        "cca195c5c09b81065018dee39f4013b95bf47502"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Sep 05 14:41:30 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Sep 05 14:41:30 2006 -0400"
      },
      "message": "[GFS2] Style changes in logging code\n\nAs per Jan Engelhardt\u0027s comments, removed some unused code and\nremoved some brackets which were not required.\n\nCc: Jan Engelhardt \u003cjengelh@linux01.gwdg.de\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "ea67eedb211d3418fa62fe3477e0d19b2888225e",
      "tree": "456cb81b1eb23ec76ce6a44e5ce2ce068995baa1",
      "parents": [
        "f2f7ba5237e2fe10ba3e328a4f728b9e1ff141da"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Sep 05 10:53:09 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Sep 05 10:53:09 2006 -0400"
      },
      "message": "[GFS2] Fix end of multi-line structures\n\nAs per Jan Engelhardt\u0027s request, I\u0027ve added a \u0027,\u0027 to the end of\neach of the multi-line structures which didn\u0027t already have\none (most already did).\n\nCc: Jan Engelhardt \u003cjengelh@linux01.gwdg.de\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "82ffa51637f9239aaddd3151fb0d41c657f760db",
      "tree": "13f06a70337998d81a6053dda28e892a7a6fdfcc",
      "parents": [
        "c26687113aea9a11c6f23ddf668f1fe43eca4ce7"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 04 14:47:06 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 04 14:47:06 2006 -0400"
      },
      "message": "[GFS2] More style changes\n\nAs per Jan Engelhardt\u0027s fourth email, this is the first part of the\nchange set with a few minor style points.\n\nCc: Jan Engelhardt \u003cjengelh@linux01.gwdg.de\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "cd915493fce912f1bd838ee1250737ecf33b8fae",
      "tree": "e14ec6643de91f473edb26a89905e710596fe6bc",
      "parents": [
        "a91ea69ffd3f8a0b7139bfd44042ab384461e631"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 04 12:49:07 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 04 12:49:07 2006 -0400"
      },
      "message": "[GFS2] Change all types to uX style\n\nThis makes all fixed size types have consistent names.\n\nCc: Jan Engelhardt \u003cjengelh@linux01.gwdg.de\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "e9fc2aa091ab8fa46e60d4c9d06a89305c441652",
      "tree": "8cdf5fcc4adba8cd53c51f824b5d8107ce0f4bba",
      "parents": [
        "c6e6f0ba8fc1dea99c7bd020916f24d533b62697"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Sep 01 11:05:15 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Sep 01 11:05:15 2006 -0400"
      },
      "message": "[GFS2] Update copyright, tidy up incore.h\n\nAs per comments from Jan Engelhardt \u003cjengelh@linux01.gwdg.de\u003e this\nupdates the copyright message to say \"version\" in full rather than\n\"v.2\". Also incore.h has been updated to remove forward structure\ndeclarations which are not required.\n\nThe gfs2_quota_lvb structure has now had endianess annotations added\nto it. Also quota.c has been updated so that we now store the\nlvb data locally in endian independant format to avoid needing\na structure in host endianess too. As a result the endianess\nconversions are done as required at various points and thus the\nconversion routines in lvb.[ch] are no longer required. I\u0027ve\nmoved the one remaining constant in lvb.h thats used into lm.h\nand removed the unused lvb.[ch].\n\nI have not changed the HIF_ constants. That is left to a later patch\nwhich I hope will unify the gh_flags and gh_iflags fields of the\nstruct gfs2_holder.\n\nCc: Jan Engelhardt \u003cjengelh@linux01.gwdg.de\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "623d93555c8884768db65ffc11509c93e50dd4db",
      "tree": "08be5484217e9c7851b129d2794b4afe8e44760c",
      "parents": [
        "899be4d3b7e00bf364d84c1c8cfe8bbbd1e3507b"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Aug 31 12:14:44 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Aug 31 12:14:44 2006 -0400"
      },
      "message": "[GFS2] Fix releasepage bug (fixes direct i/o writes)\n\nThis patch fixes three main bugs. Firstly the direct i/o get_block\nwas returning the wrong return code in certain cases. Secondly, the\nGFS2\u0027s releasepage function was not dealing with cases when clean,\nordered buffers were found still queued on a transaction (which can\nhappen depending on the ordering of journal flushes). Thirdly, the\njournaling code itself needed altering to take account of the\nafter effects of removing the clean ordered buffers from the transactions\nbefore a journal flush.\n\nThe releasepage bug did also show up under \"normal\" buffered i/o\nas well, so its not just a fix for direct i/o. In fact its not\nnormally used in the direct i/o path at all, except when flushing\nexisting buffers after performing a direct i/o write, but that was\nthe code path that led us to spot this.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "b8e1aabf218a2037d9d6a3256c33fc6ef96ac44c",
      "tree": "2f2dc82e7b53b6316f1eee996f6d930ffb9aa4c4",
      "parents": [
        "08867605e1d5f575685aa2b5bf575aba3d996758"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Aug 22 16:25:50 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Aug 22 16:25:50 2006 -0400"
      },
      "message": "[GFS2] Another list_del bug\n\nAnother case where list_del should be list_del_init.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "08867605e1d5f575685aa2b5bf575aba3d996758",
      "tree": "04e7903b18d11f5e0240d302c55322c36d561324",
      "parents": [
        "a345da3e8f28ff69e1b14df78f7ddc6e7b78b726"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Aug 22 11:03:57 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Aug 22 11:03:57 2006 -0400"
      },
      "message": "[GFS2] Fix to list_del in lops.c\n\nA list_del should have been a list_del_init in lops.c which was\nresulting in incorrect status returns from list_empty().\n\nSigned-off-by: Steven Whitheouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "15d00c0b91ca776b51b5ab04f79ab35b06670d30",
      "tree": "a970b4f59086ecbf7d20ec9b2201cf26b8446019",
      "parents": [
        "fcc8abc8d4fcdbddc383091449f3696b411aa8fb"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Aug 18 15:51:09 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Aug 18 15:51:09 2006 -0400"
      },
      "message": "[GFS2] Fix leak of gfs2_bufdata\n\nThis fixes a memory leak of struct gfs2_bufdata and also some\nproblems in the ordered write handling code. It needs a bit\nmore testing, but I believe that the reference counting of\nordered write buffers should now be correct.\n\nThis is aimed at fixing Red Hat bugzilla: #201028 and #201082\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "b61dde795f120f5dca2c865a1860dd9ff76705a1",
      "tree": "5757a1fdab5598e0284d280fbac32e8db0bf04e8",
      "parents": [
        "2b3d6e2f23362b71de173649002d915d14e07622"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jun 19 10:51:11 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jun 19 10:51:11 2006 -0400"
      },
      "message": "[GFS2] Always include glock in transaction\n\nInclude the glock in the transaction, even when not journaling\ndata in order that ordered write data will be correctly flushed\nwhen the lock is released.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "3a8476dda13bc6690c5c2d5f1d3078048392c188",
      "tree": "1d08bad458d78ce27bec02416491d0f86a454b82",
      "parents": [
        "feaa7bba026c181ce071d5a4884f7f9dd26207a1"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jun 19 09:10:39 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jun 19 09:10:39 2006 -0400"
      },
      "message": "[GFS2] Remove debugging printks\n\nA few of my printks slipped through last time. Also fix a couple of\nminor bugs.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "feaa7bba026c181ce071d5a4884f7f9dd26207a1",
      "tree": "c858deb225917265cb07820730e9764674d133e8",
      "parents": [
        "22da645fd6675b7abc55cf937ddf6132f343e5b9"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Jun 14 15:32:57 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Jun 14 15:32:57 2006 -0400"
      },
      "message": "[GFS2] Fix unlinked file handling\n\nThis patch fixes the way we have been dealing with unlinked,\nbut still open files. It removes all limits (other than memory\nfor inodes, as per every other filesystem) on numbers of these\nwhich we can support on GFS2. It also means that (like other\nfs) its the responsibility of the last process to close the file\nto deallocate the storage, rather than the person who did the\nunlinking. Note that with GFS2, those two events might take place\non different nodes.\n\nAlso there are a number of other changes:\n\n o We use the Linux inode subsystem as it was intended to be\nused, wrt allocating GFS2 inodes\n o The Linux inode cache is now the point which we use for\nlocal enforcement of only holding one copy of the inode in\ncore at once (previous to this we used the glock layer).\n o We no longer use the unlinked \"special\" file. We just ignore it\ncompletely. This makes unlinking more efficient.\n o We now use the 4th block allocation state. The previously unused\nstate is used to track unlinked but still open inodes.\n o gfs2_inoded is no longer needed\n o Several fields are now no longer needed (and removed) from the in\ncore struct gfs2_inode\n o Several fields are no longer needed (and removed) from the in core\nsuperblock\n\nThere are a number of future possible optimisations and clean ups\nwhich have been made possible by this patch.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "3a8a9a1034813aa99f5ae3150f652d490c5ff10d",
      "tree": "427d4c1499b5c88dbf43c6e490d83cee350083b2",
      "parents": [
        "bd8968010a9a08e67a0ddb3ddee9feb8882e8c2f"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu May 18 15:09:15 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu May 18 15:09:15 2006 -0400"
      },
      "message": "[GFS2] Update copyright date to 2006\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "bd8968010a9a08e67a0ddb3ddee9feb8882e8c2f",
      "tree": "c3960853310112779e2ce583a8c8b524777cb70d",
      "parents": [
        "1b50259bc33f2adfcb4c5fba4b740bf80789df22"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu May 18 14:54:58 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu May 18 14:54:58 2006 -0400"
      },
      "message": "[GFS2] Remove semaphore.h from C files\n\nWe no longer use semaphores, everything has been converted to\nmutex or rwsem, so we don\u0027t need to include this header any more.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "b09e593d799560f1a0782c20ac5900058390a26f",
      "tree": "20f04bd2c8ba9c09ac80a7bb1400d341c4fd7e21",
      "parents": [
        "55eccc6d00cea224bf634d44e9871cfe83200ff2"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Apr 07 11:17:32 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Apr 07 11:17:32 2006 -0400"
      },
      "message": "[GFS2] Fix a ref count bug and other clean ups\n\nThis fixes a ref count bug that sometimes showed up a umount time\n(causing it to hang) but it otherwise mostly harmless. At the same\ntime there are some clean ups including making the log operations\nstructures const, moving a memory allocation so that its not done\nin the fast path of checking to see if there is an outstanding\ntransaction related to a particular glock.\n\nRemoves the sd_log_wrap varaible which was updated, but never actually\nused anywhere. Updates the gfs2 ioctl() to run without the kernel lock\n(which it never needed anyway). Removes the \"invalidate inodes\" loop\nfrom GFS2\u0027s put_super routine. This is done in kill super anyway so\nwe don\u0027t need to do it here. The loop was also bogus in that if there\nare any inodes \"stuck\" at this point its a bug and we need to know\nabout it rather than hide it by hanging forever.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "e3167ded1f1b16424bc14d5673cdc5414f179970",
      "tree": "1b995e6387b230b1f447aabe30b689d091ee0b52",
      "parents": [
        "cd45697f0ddbb58f3f83c29fe164713ee7765e21"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Mar 30 15:46:23 2006 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Mar 30 15:46:23 2006 -0500"
      },
      "message": "[GFS] Fix bug in endian conversion for metadata header\n\nIn some cases 16 bit functions were being used rather than 32 bit\nfunctions.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "b4dc72911d149d7d6b7ffb512bd68906f1cbd33a",
      "tree": "2b00b45b2c63eac9b3aa3b353f1ba44b9a14582d",
      "parents": [
        "c9fd43078f5007c6ca6b3a9cd04c51a8f0e44a20"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Mar 01 17:41:58 2006 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Mar 01 17:41:58 2006 -0500"
      },
      "message": "[GFS2] Fix some bugs\n\nFix a bug I introduced earlier with a kfree() and usage of\na structure in the wrong order. Also try and get the counts\nof the journaled data buffers \"more correct\". Still some work\nto do in this area though.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "5c676f6d359b0404d53f542f02e1359583cb2895",
      "tree": "8741011990ec0a3d0d41fee9f0d7abf6a16834cc",
      "parents": [
        "f3b270a47882b958e9e3c5bd86894e3a7072899a"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Feb 27 17:23:27 2006 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Feb 27 17:23:27 2006 -0500"
      },
      "message": "[GFS2] Macros removal in gfs2.h\n\nAs suggested by Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e.\n\nThe DIV_RU macro is renamed DIV_ROUND_UP and and moved to kernel.h\nThe other macros are gone from gfs2.h as (although not requested\nby Pekka Enberg) are a number of included header file which are now\nincluded individually. The inode number comparison function is\nnow an inline function.\n\nThe DT2IF and IF2DT may be addressed in a future patch.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "568f4c9659a2225b0d29cf86feecbcf25c9045c8",
      "tree": "8ec0fee12313f88a195e0b90924f6b7633ba29f1",
      "parents": [
        "3a8fe9be6c9794e55ac2253eab91d42b28a9dab6"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Feb 27 12:00:42 2006 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Feb 27 12:00:42 2006 -0500"
      },
      "message": "[GFS2] 80 Column audit of GFS2\n\nRequested by:\nPrarit Bhargava \u003cprarit@redhat.com\u003e\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "91ffd7db71e7451f89941a8f428b4daa2a7c1e38",
      "tree": "8771f51fc0771a10ad9669e7187bc3922af97369",
      "parents": [
        "13538b8e46022b6a3721cda097fe3e0d91f16959"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Feb 22 16:41:45 2006 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Feb 22 16:41:45 2006 +0000"
      },
      "message": "[GFS2] Missed deletion of debugging code\n\nOne line which should have been deleted in the last patch\nwas missed.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "13538b8e46022b6a3721cda097fe3e0d91f16959",
      "tree": "7daf34dadd8bcdf5d98a09b17284a7755823c027",
      "parents": [
        "f55ab26a8f92a23988c3e6da28dae4741933a4e2"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Feb 22 11:15:03 2006 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Feb 22 11:15:03 2006 +0000"
      },
      "message": "[GFS2] Add list empty test to databuf_lo_add\n\nHeinz had spotted that I\u0027d forgotten to test in databuf_lo_add()\nthat the data buffer in question hadn\u0027t already been added to\nthe list. This was causing an infinite loop later on in the\n\"before commit\" routine.\n\nThis means that GFS2 is now ready to be tested by everybody.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "f55ab26a8f92a23988c3e6da28dae4741933a4e2",
      "tree": "b6f9e89ce1b2ccde8d81314aeea06f6a02f882f7",
      "parents": [
        "5c4e9e036678fae65c9288e1c00a6f33cd447283"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Feb 21 12:51:39 2006 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Feb 21 12:51:39 2006 +0000"
      },
      "message": "[GFS2] Use mutices rather than semaphores\n\nAs well as a number of minor bug fixes, this patch changes GFS\nto use mutices rather than semaphores. This results in better\ninformation in case there are any locking problems.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "7359a19cc758946aba0e45233b8641256b194884",
      "tree": "d96aaeb2fb239efe6fdb0b4698eb94108719f423",
      "parents": [
        "18ec7d5c3f434aed9661ed10a9e1f48cdeb4981d"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Feb 13 12:27:43 2006 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Feb 13 12:27:43 2006 +0000"
      },
      "message": "[GFS2] Fix for root inode ref count bug\n\nUmount is now working correctly again. The bug was due to\nnot getting an extra ref count when mounting the fs. We\nshould have bumped it by two (once for the internal pointer\nto the root inode from the super block and once for the\ninode hanging off the dcache entry for root).\n\nAlso this patch tidys up the code dealing with looking up\nand creating inodes. We now pass Linux inodes (with gfs2_inodes\nattached) rather than the other way around and this reduces code\nduplication in various places.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "18ec7d5c3f434aed9661ed10a9e1f48cdeb4981d",
      "tree": "a7161a4c4b3592052e6772e1c23849de16cac649",
      "parents": [
        "257f9b4e97e9a6cceeb247cead92119a4396d37b"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Feb 08 11:50:51 2006 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Feb 08 11:50:51 2006 +0000"
      },
      "message": "[GFS2] Make journaled data files identical to normal files on disk\n\nThis is a very large patch, with a few still to be resolved issues\nso you might want to check out the previous head of the tree since\nthis is known to be unstable. Fixes for the various bugs will be\nforthcoming shortly.\n\nThis patch removes the special data format which has been used\nup till now for journaled data files. Directories still retain the\nold format so that they will remain on disk compatible with earlier\nreleases. As a result you can now do the following with journaled\ndata files:\n\n 1) mmap them\n 2) export them over NFS\n 3) convert to/from normal files whenever you want to (the zero length\n    restriction is gone)\n\nIn addition the level at which GFS\u0027 locking is done has changed for all\nfiles (since they all now use the page cache) such that the locking is\ndone at the page cache level rather than the level of the fs operations.\nThis should mean that things like loopback mounts and other things which\ntouch the page cache directly should now work.\n\nCurrent known issues:\n\n 1. There is a lock mode inversion problem related to the resource\n    group hold function which needs to be resolved.\n 2. Any significant amount of I/O causes an oops with an offset of hex 320\n    (NULL pointer dereference) which appears to be related to a journaled data\n    buffer appearing on a list where it shouldn\u0027t be.\n 3. Direct I/O writes are disabled for the time being (will reappear later)\n 4. There is probably a deadlock between the page lock and GFS\u0027 locks under\n    certain combinations of mmap and fs operation I/O.\n 5. Issue relating to ref counting on internally used inodes causes a hang\n    on umount (discovered before this patch, and not fixed by it)\n 6. One part of the directory metadata is different from GFS1 and will need\n    to be resolved before next release.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "a98ab2204f8ed414c5e95fbca28a9f001c53bc7b",
      "tree": "69c309d47bd64015cdecfdd468ec856f294624e8",
      "parents": [
        "4f3df04137d426a0ad1758ab744f5b6d658617bf"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "steve@chygwyn.com",
        "time": "Wed Jan 18 13:38:44 2006 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "steve@chygwyn.com",
        "time": "Wed Jan 18 13:38:44 2006 +0000"
      },
      "message": "[GFS2] Rename gfs2_meta_pin to gfs2_pin\n\nSince we\u0027ll need to pin data if we are going to journal it, then\nI\u0027m renaming this function to make it less confusing. It might also\nbe worth moving it into lops.c since there are no users outside that\nfile.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "64fb4eb7d4cc9de89f4d9b9061adde46ed3b5641",
      "tree": "973c910cdf963f2e546ef0e8fcc93c16a7c04905",
      "parents": [
        "586dfdaaf328d79bb356d760db963b03a75a4131"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "steve@chygwyn.com",
        "time": "Wed Jan 18 13:14:40 2006 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "steve@chygwyn.com",
        "time": "Wed Jan 18 13:14:40 2006 +0000"
      },
      "message": "[GFS2] Remove gfs2_databuf in favour of gfs2_bufdata structure\n\nRemoving the gfs2_databuf structure and using gfs2_bufdata instead\nis a step towards allowing journaling of data without requiring the\nmetadata header on each journaled block. The idea is to merge the\ncode paths for ordered data with that of journaled data, with the\nlog operations in lops.c tacking account of the different types of\nbuffers as they are presented to it. Largely the code path for\nmetadata will be similar too, but obviously through a different set\nof log operations.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "b3b94faa5fe5968827ba0640ee9fba4b3e7f736e",
      "tree": "70bd6068b050d2c46e338484f8b03fae4365c6c3",
      "parents": [
        "f7825dcf8c7301cfd3724eb40c5b443cc85ab7b8"
      ],
      "author": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Mon Jan 16 16:50:04 2006 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jan 16 16:50:04 2006 +0000"
      },
      "message": "[GFS2] The core of GFS2\n\nThis patch contains all the core files for GFS2.\n\nSigned-off-by: David Teigland \u003cteigland@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    }
  ]
}
