)]}'
{
  "log": [
    {
      "commit": "564e12b1157215171e7f3af5b70611ec7154327c",
      "tree": "f2a6e3394e59209f8e43a36f10f67bf1372c966c",
      "parents": [
        "b3e47ca0c2427ec72a74e36c6408784b6098f2b5"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Mon Nov 21 13:36:17 2011 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 22 10:25:21 2011 +0000"
      },
      "message": "GFS2: decouple quota allocations from block allocations\n\nThis patch separates the code pertaining to allocations into two\nparts: quota-related information and block reservations.\nThis patch also moves all the block reservation structure allocations to\nfunction gfs2_inplace_reserve to simplify the code, and moves\nthe frees to function gfs2_inplace_release.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "54335b1fca27b84baa75b1f45985d98262003837",
      "tree": "c6b21aff1759d86be56208e9981117e4383c3f47",
      "parents": [
        "8339ee543ece6e2dcc1bbd97d5350163c198cf00"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 01 13:31:59 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:34 2011 +0100"
      },
      "message": "GFS2: Cache the most recently used resource group in the inode\n\nThis means that after the initial allocation for any inode, the\nlast used resource group is cached in the inode for future use.\nThis drastically reduces the number of lookups of resource\ngroups in the common case, and this the contention on that\ndata structure.\n\nThe allocation algorithm is the same as previously, except that we\nalways check to see if the goal block is within the cached rgrp\nfirst before going to the rbtree to look one up.\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": "bf97b6734e027cc18abad420ab88f861f65d7816",
      "tree": "74892640ed482487f3bc630ad4fd20e62dec2c54",
      "parents": [
        "d0795f912318f65b800c6b619d749c3bf7c930fb"
      ],
      "author": {
        "name": "Benjamin Marzinski",
        "email": "bmarzins@redhat.com",
        "time": "Mon Sep 27 16:00:04 2010 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Sep 28 09:44:24 2010 +0100"
      },
      "message": "GFS2: reserve more blocks for transactions\n\nSome of the functions in GFS2 were not reserving space in the transaction for\nthe resource group header and the resource groups bitblocks that get added\nwhen you do allocation. GFS2 now makes sure to reserve space for the\nresource group header and either all the bitblocks in the resource group, or\none for each block that it may allocate, whichever is smaller using the new\ngfs2_rg_blocks() inline function.\n\nSigned-off-by: Benjamin Marzinski \u003cbmarzins@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "3921120e757f9167f3fcd3a1781239824471b14d",
      "tree": "4b5f8e9e5376ae6a64b9757a62392b89a6316e26",
      "parents": [
        "9a3f236d40a99ea8dca3df40d8ef67631057cad6"
      ],
      "author": {
        "name": "Benjamin Marzinski",
        "email": "bmarzins@redhat.com",
        "time": "Fri Aug 20 00:21:02 2010 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:19:17 2010 +0100"
      },
      "message": "GFS2: fallocate support\n\nThis patch adds support for fallocate to gfs2.  Since the gfs2 does not support\nuninitialized data blocks, it must write out zeros to all the blocks.  However,\nsince it does not need to lock any pages to read from, gfs2 can write out the\nzero blocks much more efficiently.  On a moderately full filesystem, fallocate\nworks around 5 times faster on average.  The fallocate call also allows gfs2 to\nadd blocks to the file without changing the filesize, which will make it\npossible for gfs2 to preallocate space for the rindex file, so that gfs2 can\ngrow a completely full filesystem.\n\nSigned-off-by: Benjamin Marzinski \u003cbmarzins@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "5731be53e3d82aedd06e02574f833a57b07a08d2",
      "tree": "8877d9c51ac96a3455d8ac5e3148cd7af62d7c98",
      "parents": [
        "ac576cc5bed0dd7759e2b196468c7df93d6aeeee"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Feb 01 13:16:55 2008 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 31 10:40:42 2008 +0100"
      },
      "message": "[GFS2] Update gfs2_trans_add_unrevoke to accept extents\n\nBy adding an extra argument to gfs2_trans_add_unrevoke we can now\nspecify an extent length of blocks to unrevoke. This means that\nwe only need to make one pass through the list for each extent\nrather than each block. Currently the only extent length which\nis used is 1, but that will change in the future.\n\nAlso gfs2_trans_add_unrevoke is removed from gfs2_alloc_meta\nsince its the only difference between this and gfs2_alloc_data\nwhich is left. This will allow a future patch to merge these\ntwo functions into one (i.e. one call to allocate both data\nand metadata in a single extent in the future).\n\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": "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": "f2f7ba5237e2fe10ba3e328a4f728b9e1ff141da",
      "tree": "ab55597fa51321ba74e60d17b6fb449e23e8145c",
      "parents": [
        "2bdbc5d73961c040fdc9b30d985fab3047d697a0"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Sep 05 10:39:21 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Sep 05 10:39:21 2006 -0400"
      },
      "message": "[GFS2] Make headers compile on their own\n\nAs per Jan Engelhardt\u0027s comments, this should make all the headers\ncompile on their own by including and/or declaring structures\nearly.\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": "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": "d0dc80dbafb5c10ad2084831a61bbf945484a139",
      "tree": "f7434367a66e4e4be0885daefe5e59ab43502a7f",
      "parents": [
        "484adff8a06cb5d952832f5487ae863f54c0fb69"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Mar 29 14:36:49 2006 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Mar 29 14:36:49 2006 -0500"
      },
      "message": "[GFS2] Update debugging code\n\nUpdate the debugging code in trans.c and at the same time improve\nthe debugging code for gfs2_holders. The new code should be pretty\nfast during the normal case and provide just as much information\nin case of errors (or more).\n\nOne small function from glock.c has moved to glock.h as a static inline so\nthat its return address won\u0027t get in the way of the debugging.\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": "d4e9c4c3bf861ef2ac96e0de659c75a00da92b28",
      "tree": "925ececc725ad5180b9253f732b50c51bfa0754d",
      "parents": [
        "b96ca4fa4e3b510d528a093a5bac0befbc2ba46d"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "steve@chygwyn.com",
        "time": "Wed Jan 18 11:19:28 2006 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "steve@chygwyn.com",
        "time": "Wed Jan 18 11:19:28 2006 +0000"
      },
      "message": "[GFS2] Add an additional argument to gfs2_trans_add_bh()\n\nThis adds an extra argument to gfs2_trans_add_bh() to indicate whether the\nbh being added to the transaction is metadata or data. Its currently unused\nsince all existing callers set it to 1 (metadata) but following patches will\nmake use of it.\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"
    }
  ]
}
