)]}'
{
  "log": [
    {
      "commit": "26fe575028703948880fce4355a210c76bb0536e",
      "tree": "0a7d04289e1eb1f1739659ebc9498d40f2add5da",
      "parents": [
        "ee983e89670704b2a05e897b161f2674a42d1508"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 10 13:14:12 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 10 19:54:35 2012 -0700"
      },
      "message": "vfs: make it possible to access the dentry hash/len as one 64-bit entry\n\nThis allows comparing hash and len in one operation on 64-bit\narchitectures.  Right now only __d_lookup_rcu() takes advantage of this,\nsince that is the case we care most about.\n\nThe use of anonymous struct/unions hides the alternate 64-bit approach\nfrom most users, the exception being a few cases where we initialize a\n\u0027struct qstr\u0027 with a static initializer.  This makes the problematic\ncases use a new QSTR_INIT() helper function for that (but initializing\njust the name pointer with a \"{ .name \u003d xyzzy }\" initializer remains\nvalid, as does just copying another qstr structure).\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5e2f7d617b574dadf3ad125e4821ce1b180b1626",
      "tree": "5976cc0546b526751441fb2ace3cac2337261e21",
      "parents": [
        "97cc008aaa8c1f02699b478ca890e81810244131"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Wed Apr 04 22:11:16 2012 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Apr 05 10:20:10 2012 +0100"
      },
      "message": "GFS2: Make sure rindex is uptodate before starting transactions\n\nThis patch removes the call from gfs2_blk2rgrd to function\ngfs2_rindex_update and replaces it with individual calls.\nThe former way turned out to be too problematic.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "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": "6e87ed0fc93ffbe2aec296e6912b1dcb19034d6c",
      "tree": "4f4ac522d34f35de3e3671996ddc35977aaa49ad",
      "parents": [
        "4442f2e03ed9646664c94e197e637b03324a6664"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Fri Nov 18 10:58:32 2011 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Nov 21 10:04:09 2011 +0000"
      },
      "message": "GFS2: move toward a generic multi-block allocator\n\nThis patch is a revision of the one I previously posted.\nI tried to integrate all the suggestions Steve gave.\nThe purpose of the patch is to change function gfs2_alloc_block\n(allocate either a dinode block or an extent of data blocks)\nto a more generic gfs2_alloc_blocks function that can\nallocate both a dinode _and_ an extent of data blocks in the\nsame call. This will ultimately help us create a multi-block\nreservation scheme to reduce file fragmentation.\n\nThis patch moves more toward a generic multi-block allocator that\ntakes a pointer to the number of data blocks to allocate, plus whether\nor not to allocate a dinode. In theory, it could be called to allocate\n(1) a single dinode block, (2) a group of one or more data blocks, or\n(3) a dinode plus several data blocks.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "3c5d785acfda7dffa63477951bb6864c6a49ed2e",
      "tree": "aa387498361ad753777363322a35b8feb80e5f85",
      "parents": [
        "c688b8b334d20acbc79b0383af2816ecf7365741"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Mon Nov 14 11:17:08 2011 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 15 15:25:03 2011 +0000"
      },
      "message": "GFS2: combine gfs2_alloc_block and gfs2_alloc_di\n\nGFS2 functions gfs2_alloc_block and gfs2_alloc_di do basically\nthe same things, with a few exceptions. This patch combines\nthe two functions into a slightly more generic gfs2_alloc_block.\nHaving one centralized block allocation function will reduce\ncode redundancy and make it easier to implement multi-block\nreservations to reduce file fragmentation in the future.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "79c4c379c8f16a12c28ea2084db5138e33d17ebd",
      "tree": "f0d9648c0e4d1a087401c2e2cb7a4e5e9c80a99b",
      "parents": [
        "114b80ce2c05f91f10fffbf303080357d73c0675"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Nov 09 13:46:06 2011 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Nov 09 13:46:06 2011 +0000"
      },
      "message": "GFS2: f_ra is always valid in dir readahead function\n\nAs a result, we don\u0027t need to test it each time.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Bob Peterson \u003crpeterso@redhat.com\u003e\n"
    },
    {
      "commit": "dfe4d34b39b80faff52489f950a18523da7581bf",
      "tree": "be478e2c4988612eef88a1669f774dd8f9f9b8af",
      "parents": [
        "20ed0535d35b74c9e4fa5777766d6e836fe3c90c"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Thu Oct 27 12:16:06 2011 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 08 09:52:12 2011 +0000"
      },
      "message": "GFS2: Add readahead to sequential directory traversal\n\nThis patch adds read-ahead capability to GFS2\u0027s\ndirectory hash table management.  It greatly improves\nperformance for some directory operations.  For example:\nIn one of my file systems that has 1000 directories, each\nof which has 1000 files, time to execute a recursive\nls (time ls -fR /mnt/gfs2 \u003e /dev/null) was reduced\nfrom 2m2.814s on a stock kernel to 0m45.938s.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "70b0c3656f12964a6dac104214c904c66e626058",
      "tree": "f58b4b67d6343d5b48c6335fb93ccbe6ed61e1c0",
      "parents": [
        "d56fa8a1c17b68274349fc852f634af99c0c4671"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Sep 02 16:08:09 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:39 2011 +0100"
      },
      "message": "GFS2: Use cached rgrp in gfs2_rlist_add()\n\nEach block which is deallocated, requires a call to gfs2_rlist_add()\nand each of those calls was calling gfs2_blk2rgrpd() in order to\nfigure out which rgrp the block belonged in. This can be speeded up\nby making use of the rgrp cached in the inode. We also reset this\ncached rgrp in case the block has changed rgrp. This should provide\na big reduction in gfs2_blk2rgrpd() calls during deallocation.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "8339ee543ece6e2dcc1bbd97d5350163c198cf00",
      "tree": "80b3d4b990a8ab5f8b7c28945f694b01301c05c6",
      "parents": [
        "7c9ca621137cde26be05448133fc1a554345f4f8"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Aug 31 16:38:29 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:33 2011 +0100"
      },
      "message": "GFS2: Make resource groups \"append only\" during life of fs\n\nSince we have ruled out supporting online filesystem shrink,\nit is possible to make the resource group list append only\nduring the life of a super block. This gives several benefits:\n\nFirstly, we only need to read new rindex elements as they are added\nrather than needing to reread the whole rindex file each time one\nelement is added.\n\nSecondly, the rindex glock can be held for much shorter periods of\ntime, and is completely removed from the fast path for allocations.\nThe lock is taken in shared mode only when updating the resource\ngroups when the first allocation occurs, and after a grow has\ntaken place.\n\nThirdly, this results in a reduction in code size, and everything\ngets a lot simpler to understand in this area.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "ab9bbda0204dfd0e5342562d9979d1241b14ea5f",
      "tree": "621e623d99fbef1432da17b6390c92d7f13224a4",
      "parents": [
        "f18185291d605ea9e442e00e2cf6c917a84d9837"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Aug 15 14:20:36 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:26 2011 +0100"
      },
      "message": "GFS2: Use -\u003edirty_inode()\n\nThe aim of this patch is to use the newly enhanced -\u003edirty_inode()\nsuper block operation to deal with atime updates, rather than\npiggy backing that code into -\u003ewrite_inode() as is currently\ndone.\n\nThe net result is a simplification of the code in various places\nand a reduction of the number of gfs2_dinode_out() calls since\nthis is now implied by -\u003edirty_inode().\n\nSome of the mark_inode_dirty() calls have been moved under glocks\nin order to take advantage of then being able to avoid locking in\n-\u003edirty_inode() when we already have suitable locks.\n\nOne consequence is that generic_write_end() now correctly deals\nwith file size updates, so that we do not need a separate check\nfor that afterwards. This also, indirectly, means that fdatasync\nshould work correctly on GFS2 - the current code always syncs the\nmetadata whether it needs to or not.\n\nHas survived testing with postmark (with and without atime) and\nalso fsx.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "4c28d33803d4aeaff32b4ac502af11a9b2aed8f4",
      "tree": "c7119b6755aae3e1ceceedec54e481d9ff893b00",
      "parents": [
        "fd11e153b82ad1c84ccc71ba1cfedc222465198c"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Jul 26 09:17:28 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:17 2011 +0100"
      },
      "message": "GFS2: Clean up dir hash table reading\n\nSince there is now only a single caller to gfs2_dir_read_data()\nand it has a number of constant arguments, we can factor\nthose out. Also some tests relating to the inode size were\nbeing done twice.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "17d539f0499fa2c0321b7c260831cca2bb36d119",
      "tree": "28b960ad670a0112d45afbab120f855b8e95b146",
      "parents": [
        "5dcd07b9f39ca3e9be5bcc387d193fc0674e1c81"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Jun 15 10:29:37 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jul 15 09:31:48 2011 +0100"
      },
      "message": "GFS2: Cache dir hash table in a contiguous buffer\n\nThis patch adds a cache for the hash table to the directory code\nin order to help simplify the way in which the hash table is\naccessed. This is intended to be a first step towards introducing\nsome performance improvements in the directory code.\n\nThere are two follow ups that I\u0027m hoping to see fairly shortly. One\nis to simplify the hash table reading code now that we always read the\ncomplete hash table, whether we want one entry or all of them. The\nother is to introduce readahead on the heads of the hash chains\nwhich are referred to from the table.\n\nThe hash table is a maximum of 128k in size, so it is not worth trying\nto read it in small chunks.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "3d6ecb7d16fd4248fce58387a982a0756ad3fcc2",
      "tree": "b988b57c8a46fcfabe3738ccdb8982d67cd24c97",
      "parents": [
        "855d23ce2665c56437bd88fa6a0d45b6713bd194"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 13:30:08 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 16:43:53 2011 +0100"
      },
      "message": "GFS2: When adding a new dir entry, inc link count if it is a subdir\n\nThis adds an increment of the link count when we add a new directory\nentry, if that entry is itself a directory. This means that we no\nlonger need separate code to perform this operation.\n\nNow that both adding and removing directory entries automatically\nupdate the parent directory\u0027s link count if required, that makes\nthe code shorter and simpler than before.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "855d23ce2665c56437bd88fa6a0d45b6713bd194",
      "tree": "0678f8d0e93dfafd783bf9782f457bc7235b2128",
      "parents": [
        "2baee03fb916563d7cc597e5460e4cb938815c52"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 16:42:37 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 16:42:37 2011 +0100"
      },
      "message": "GFS2: Make gfs2_dir_del update link count when required\n\nWhen we remove an entry from a directory, we can save ourselves\nsome trouble if we know the type of the entry in question, since\nif it is itself a directory, we can update the link count of the\nparent at the same time as removing the directory entry.\n\nIn addition this patch also merges the rmdir and unlink code which\nwas almost identical anyway. This eliminates the calls to remove\nthe . and .. directory entries on each rmdir (not needed since the\ndirectory will be deallocated, anyway) which was the only thing preventing\npassing the dentry to gfs2_dir_del(). The passing of the dentry\nrather than just the name allows us to figure out the type of the entry\nwhich is being removed, and thus adjust the link count when required.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "556bb17998a37dabf7e9e96aa545bcea899be745",
      "tree": "737b2de46857df04a47989b320ad5841dba29588",
      "parents": [
        "ec038c826b5c3c163ad1673390f10e869020c28c"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Tue Mar 22 13:56:37 2011 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 20 08:54:44 2011 +0100"
      },
      "message": "GFS2: move function foreach_leaf to gfs2_dir_exhash_dealloc\n\nThe previous patches made function gfs2_dir_exhash_dealloc do nothing\nbut call function foreach_leaf.  This patch simplifies the code by\nmoving the entire function foreach_leaf into gfs2_dir_exhash_dealloc.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "ec038c826b5c3c163ad1673390f10e869020c28c",
      "tree": "11d97ed7a40033e1bf113e3ca7fa28e4f22bfe0d",
      "parents": [
        "d24a7a439a329b60f8e168c03e80566519e09be2"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Tue Mar 22 13:55:23 2011 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 20 08:54:26 2011 +0100"
      },
      "message": "GFS2: pass leaf_bh into leaf_dealloc\n\nFunction foreach_leaf used to look up the leaf block address and get\na buffer_head.  Then it would call leaf_dealloc which did the same\nlookup.  This patch combines the two operations by making foreach_leaf\npass the leaf bh to leaf_dealloc.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "d24a7a439a329b60f8e168c03e80566519e09be2",
      "tree": "a1e46fcf0cbe16e9338164da9442447a84872dc2",
      "parents": [
        "0d95326d9bd39f6eae80b91392b308c5fa8b1a0f"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Tue Mar 22 13:54:03 2011 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 20 08:53:56 2011 +0100"
      },
      "message": "GFS2: Combine transaction from gfs2_dir_exhash_dealloc\n\nAt the end of function gfs2_dir_exhash_dealloc, it was setting the dinode\ntype to \"file\" to prevent directory corruption in case of a crash.\nIt was doing so in its own journal transaction.  This patch makes the\nchange occur when the last call is make to leaf_dealloc, since it needs\nto rewrite the directory dinode at that time anyway.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "0d95326d9bd39f6eae80b91392b308c5fa8b1a0f",
      "tree": "fcb34235afd36e192823295567f08fa05311b190",
      "parents": [
        "95c8e17f2f00f6af7474fac0e4050a79db6c3cea"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Tue Mar 22 13:52:44 2011 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 20 08:53:35 2011 +0100"
      },
      "message": "GFS2: remove *leaf_call_t and simplify leaf_dealloc\n\nSince foreach_leaf is only called with leaf_dealloc as its only possible\ncall function, we can simplify the code by making it call leaf_dealloc\ndirectly.  This simplifies the code and eliminates the need for\nleaf_call_t, the generic call method.  This is a first small step in\nsimplifying the directory leaf deallocation code.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "44ad37d69b2cc421d5b5c7ad7fed16230685b092",
      "tree": "3632c63eef9e159947316f18d48054f082c0578e",
      "parents": [
        "001e8e8df4283dd4ef7a0297c012fce364c05cf1"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Thu Mar 17 16:19:58 2011 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Apr 18 15:23:50 2011 +0100"
      },
      "message": "GFS2: filesystem hang caused by incorrect lock order\n\nThis patch fixes a deadlock in GFS2 where two processes are trying\nto reclaim an unlinked dinode:\nOne holds the inode glock and calls gfs2_lookup_by_inum trying to look\nup the inode, which it can\u0027t, due to I_FREEING.  The other has set\nI_FREEING from vfs and is at the beginning of gfs2_delete_inode\nwaiting for the glock, which is held by the first.  The solution is to\nadd a new non_block parameter to the gfs2_iget function that causes it\nto return -ENOENT if the inode is being freed.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "8d1235852b462cfb66aa036bd4a2686763c69ed4",
      "tree": "9ac348ed6183c4dc509dba3d2ef750043266c82c",
      "parents": [
        "9fa0ea9f26f64fbfc3dfd51d1dc2c230b65ffb19"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Sep 17 12:30:23 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:21:09 2010 +0100"
      },
      "message": "GFS2: Make . and .. qstrs constant\n\nRather than calculating the qstrs for . and .. each time\nwe need them, its better to keep a constant version of\nthese and just refer to them when required.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "a2e0f79939e09e74698564b88dee709db208e1e2",
      "tree": "0018e445e3d47c4558901153733899ef672f789e",
      "parents": [
        "ff8f33c8b30d7b7efdcf2548c7f6e64db6a89b29"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Aug 11 09:53:11 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:18:29 2010 +0100"
      },
      "message": "GFS2: Remove i_disksize\n\nWith the update of the truncate code, ip-\u003ei_disksize and\ninode-\u003ei_size are merely copies of each other. This means\nwe can remove ip-\u003ei_disksize and use inode-\u003ei_size exclusively\nreducing the size of a GFS2 inode by 8 bytes.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "4244b52e18be959ced77b984f268e46a0a7654e3",
      "tree": "ec53a38549c964743d23224a6f34042175e04c30",
      "parents": [
        "461cb419f074aab16836a660efb8e855b6c1609c"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Jul 20 19:45:03 2010 -0700"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Jul 29 09:37:18 2010 +0100"
      },
      "message": "GFS2: remove dependency on __GFP_NOFAIL\n\nThe k[mc]allocs in dr_split_leaf() and dir_double_exhash() are failable,\nso remove __GFP_NOFAIL from their masks.\n\nCc: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "d2a97a4e99ff0ffdccd1fc46f22fb34270ef1e56",
      "tree": "f9ac90f438bb3221a6e383e7f1c9c817e95ad44b",
      "parents": [
        "fc0f5ac8fe693d1b05f5a928cc48135d1c8b7f2e"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Jul 28 17:56:23 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 28 11:10:03 2010 -0700"
      },
      "message": "GFS2: Use kmalloc when possible for -\u003ereaddir()\n\nIf we don\u0027t need a huge amount of memory in -\u003ereaddir() then\nwe can use kmalloc rather than vmalloc to allocate it. This\nshould cut down on the greater overheads associated with\nvmalloc for smaller directories.\n\nWe may be able to eliminate vmalloc entirely at some stage,\nbut this is easy to do right away.\n\nAlso using GFP_NOFS to avoid any issues wrt to deleting inodes\nwhile under a glock, and suggestion from Linus to factor out\nthe alloc/dealloc.\n\nI\u0027ve given this a test with a variety of different sized\ndirectories and it seems to work ok.\n\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Prarit Bhargava \u003cprarit@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "728a756b8fcd22d80e2dbba8117a8a3aafd3f203",
      "tree": "82662dc27aaf1e277df977e57d778939be8ddb4a",
      "parents": [
        "8b4216018bdbfbb1b76150d202b15ee68c38e991"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Wed Jul 14 18:12:26 2010 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Jul 15 09:07:56 2010 +0100"
      },
      "message": "GFS2: rename causes kernel Oops\n\nThis patch fixes a kernel Oops in the GFS2 rename code.\n\nThe problem was in the way the gfs2 directory code was trying\nto re-use sentinel directory entries.\n\nIn the failing case, gfs2\u0027s rename function was renaming a\nfile to another name that had the same non-trivial length.\nThe file being renamed happened to be the first directory\nentry on the leaf block.\n\nFirst, the rename code (gfs2_rename in ops_inode.c) found the\noriginal directory entry and decided it could do its job by\nsimply replacing the directory entry with another.  Therefore\nit determined correctly that no block allocations were needed.\n\nNext, the rename code deleted the old directory entry prior to\nreplacing it with the new name.  Therefore, the soon-to-be\nreplaced directory entry was temporarily made into a directory\nentry \"sentinel\" or a place holder at the start of a leaf block.\n\nLastly, it went to re-add the replacement directory entry in\nthat leaf block.  However, when gfs2_dirent_find_space was\nlooking for space in the leaf block, it used the wrong value\nfor the sentinel.  That threw off its calculations so later\nit decides it can\u0027t really re-use the sentinel and therefore\nmust allocate a new leaf block.  But because it previously decided\nto re-use the directory entry, it didn\u0027t waste the time to\ngrab a new block allocation for the inode.  Therefore, the\ninode\u0027s i_alloc pointer was still NULL and it crashes trying to\nreference it.\n\nIn the case of sentinel directory entries, the entire dirent is\nreused, not just the \"free space\" portion of it, and therefore\nthe function gfs2_dirent_find_space should use the value 0\nrather than GFS2_DIRENT_SIZE(0) for the actual dirent size.\n\nFixing this calculation enables the reproducer programs to work\nproperly.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "1a0eae8848cde6e0734360f6456496c995ee1e23",
      "tree": "536f944468ef5bc6f47ec09325422adbc5a3907a",
      "parents": [
        "602c89d2e3e8652f94a697c9a919be739b9bcdd5"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Wed Apr 14 11:58:16 2010 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 14 16:48:05 2010 +0100"
      },
      "message": "GFS2: glock livelock\n\nThis patch fixes a couple gfs2 problems with the reclaiming of\nunlinked dinodes.  First, there were a couple of livelocks where\neverything would come to a halt waiting for a glock that was\nseemingly held by a process that no longer existed.  In fact, the\nprocess did exist, it just had the wrong pid number in the holder\ninformation.  Second, there was a lock ordering problem between\ninode locking and glock locking.  Third, glock/inode contention\ncould sometimes cause inodes to be improperly marked invalid by\niget_failed.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\n"
    },
    {
      "commit": "1579343a73e32b5886e186e8f3e4db85e420ed3f",
      "tree": "6bfe6aa71c9326a4f636b1fdfbecc809fa1d96a2",
      "parents": [
        "cdcfde62dac64c86ff34e483c595d568a252c433"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Nov 06 11:06:37 2009 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Dec 03 11:57:23 2009 +0000"
      },
      "message": "GFS2: Remove dirent_first() function\n\nThis function only had one caller left, and that caller only\ncalled it for leaf blocks, hence one branch of the \"if\" was\nnever taken. In addition the call to get_left had already\nverified the metadata type, so the function can be reduced\nto a single line of code in its caller.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "09010978345e8883003bf411bb99753710eb5a3a",
      "tree": "c3a7eaf3a775649d11ad01c2be5d3549e90f6581",
      "parents": [
        "ef9e8b14a5c1d0afbaf12b4c3b271188ddfc52a4"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed May 20 10:48:47 2009 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed May 20 10:48:47 2009 +0100"
      },
      "message": "GFS2: Improve resource group error handling\n\nThis patch improves the error handling in the case where we\ndiscover that the summary information in the resource group\ndoesn\u0027t match the bitmap information while in the process of\nallocating blocks. Originally this resulted in a kernel bug,\nbut this patch changes that so that we return -EIO and print\nsome messages explaining what went wrong, and how to fix it.\n\nWe also remember locally not to try and allocate from the\nsame rgrp again, so that a subsequent allocation in a\ndifferent rgrp should succeed.\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": "383f01fbf4a701b73f5e35ea805ed1700b4b4db9",
      "tree": "b2b7a1a188088f319a29e8cc4cc924490837352b",
      "parents": [
        "c9e98886776386f1f7828d9685e78cd341849867"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 04 10:05:22 2008 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jan 05 07:38:59 2009 +0000"
      },
      "message": "GFS2: Banish struct gfs2_dinode_host\n\nThe final field in gfs2_dinode_host was the i_flags field. Thats\nrenamed to i_diskflags in order to avoid confusion with the existing\ninode flags, and moved into the inode proper at a suitable location\nto avoid creating a \"hole\".\n\nAt that point struct gfs2_dinode_host is no longer needed and as\npromised (quite some time ago!) it can now be removed completely.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "c9e98886776386f1f7828d9685e78cd341849867",
      "tree": "5bf4ac819d1e9394f960f21a48881a9d2f9f69fe",
      "parents": [
        "3767ac21f471fe669a7d9f6abef682ddac8fc3d8"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 04 09:47:33 2008 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jan 05 07:38:58 2009 +0000"
      },
      "message": "GFS2: Move i_size from gfs2_dinode_host and rename it to i_disksize\n\nThis patch moved the i_size field from the gfs2_dinode_host and\nfollowing the ext3 convention renames it i_disksize.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "ad6203f2b46c2217f74b2e88299640eef5889e72",
      "tree": "24197a5bc7ffac80071d2375ff46947cabe9b365",
      "parents": [
        "bcf0b5b348a1f49c2c878ffdb78e68c930baabb8"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Nov 03 13:59:19 2008 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jan 05 07:38:56 2009 +0000"
      },
      "message": "GFS2: Move \"entries\" into \"proper\" inode\n\nThis moves the directory entry count into the proper inode.\nPotentially we could get this to share the space used by\nsomething else in the future, but this is one more step\non the way to removing the gfs2_dinode_host structure.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "16c5f06f15ad4e5a5d6e90b78ffb1ac14319e445",
      "tree": "84204e44e0246e9a3f4db23223a5209105fde368",
      "parents": [
        "773adff8e983cba1f5844c3be3be224ca6645f26"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@redhat.com",
        "time": "Wed Apr 09 09:33:41 2008 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Apr 10 09:55:26 2008 +0100"
      },
      "message": "[GFS2] fix GFP_KERNEL misuses\n\nThere are several places where GFP_KERNEL allocations happen under a glock,\nwhich will result in hangs if we\u0027re under memory pressure and go to re-enter the\nfs in order to flush stuff out.  This patch changes the culprits to GFS_NOFS to\nkeep this problem from happening.  Thank you,\n\nSigned-off-by: Josef Bacik \u003cjbacik@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "182fe5abd8ebbb3a00c1be91f44e4783e139918c",
      "tree": "7404993656166f2b7cb78e54e4275d44336ba27c",
      "parents": [
        "105284970ba7d0d0ff4b97e57728eac7adf6a42a"
      ],
      "author": {
        "name": "Cyrill Gorcunov",
        "email": "gorcunov@gmail.com",
        "time": "Mon Mar 03 21:54:21 2008 +0300"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 31 10:41:28 2008 +0100"
      },
      "message": "[GFS2] possible null pointer dereference fixup\n\ngfs2_alloc_get may fail so we have to check it to prevent\nNULL pointer dereference.\n\nSigned-off-by: Cyrill Gorcunov \u003cgorcunov@gamil.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "9b8c81d1de49943ec69d157234b8981008c30d31",
      "tree": "c0cbbd25fdcbf376c06c9dcfb7d25b8873caa6ff",
      "parents": [
        "7afd88d9166a752b52517648bcbe923e05d393fc"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Feb 22 16:09:31 2008 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 31 10:41:14 2008 +0100"
      },
      "message": "[GFS2] Allow bmap to allocate extents\n\nWe\u0027ve supported mapping of extents when no block allocation is required\nfor some time. This patch extends that to mapping of extents when an\nallocation has been requested. In that case we try to allocate as many\nblocks as are requested, but we might return fewer in case there is\nsomething preventing us from returning the complete amount (e.g. an\nalready allocated block is in the way).\n\nCurrently the only code path which can actually request multiple data\nblocks in a single bmap call is the page_mkwrite path and even then it\nonly happens if there are multiple blocks per page. What this patch does\ndo however, is merge the allocation requests for metadata (growing the\nmetadata tree in either height or depth) with the allocation of the data\nblocks in the case that both are needed. This results in lower overheads\neven in the single block allocation case.\n\nThe one thing which we can\u0027t handle here at the moment is unstuffing. I\nwould like to be able to do that, but the problem which arises is that\nin order to unstuff one has to get a locked page from the page cache\nwhich results in locking problems in the (usual) case that the caller is\nholding the page lock on the page it wishes to map. So that case will\nhave to be addressed in future patches.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "bb16b342b2e2c83fa47dbb042400db91b748ded7",
      "tree": "86563acc182b83aa49157158c04b32a546690060",
      "parents": [
        "840ca0ec70903ce8e0fba1596460876c796e4f60"
      ],
      "author": {
        "name": "Marcin Slusarz",
        "email": "marcin.slusarz@gmail.com",
        "time": "Wed Feb 13 00:06:10 2008 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 31 10:41:03 2008 +0100"
      },
      "message": "[GFS2] be*_add_cpu conversion\n\nreplace all:\nbig_endian_variable \u003d cpu_to_beX(beX_to_cpu(big_endian_variable) +\n\t\t\t\t\texpression_in_cpu_byteorder);\nwith:\n\tbeX_add_cpu(\u0026big_endian_variable, expression_in_cpu_byteorder);\ngenerated with semantic patch\n\nSigned-off-by: Marcin Slusarz \u003cmarcin.slusarz@gmail.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "77658aad226866fb94097236d14d41a88aaab2ec",
      "tree": "2849313fccb193bd3c4f93f241fd5fb98ad871ca",
      "parents": [
        "30cbf189cd2a1ba13ff3c8c8ee2103dbdb18578a"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Feb 12 14:17:27 2008 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 31 10:40:55 2008 +0100"
      },
      "message": "[GFS2] Eliminate (almost) duplicate field from gfs2_inode\n\nThe blocks counter is almost a duplicate of the i_blocks\nfield in the VFS inode. The only difference is that i_blocks\ncan be only 32bits long for 32bit arch without large single file\nsupport. Since GFS2 doesn\u0027t handle the non-large single file\ncase (for 32 bit anyway) this adds a new config dependency on\n64BIT || LSF. This has always been the case, however we\u0027ve never\nexplicitly said so before.\n\nEven if we do add support for the non-LSF case, we will still\nnot require this field to be duplicated since we will not be\nable to access oversized files anyway.\n\nSo the net result of all this is that we shave 8 bytes from a gfs2_inode\nand get our config deps correct.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "b45e41d7d56dfef1ae9e02e6c59990066ba82e5c",
      "tree": "c139447fa57beb3886def4e17449cc34bf40cf3c",
      "parents": [
        "1639431a3f57b43da1e15e9268a1d691ac01ba26"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Feb 06 10:11:15 2008 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 31 10:40:47 2008 +0100"
      },
      "message": "[GFS2] Add extent allocation to block allocator\n\nRather than having to allocate a single block at a time, this patch\nallows the block allocator to allocate an extent. Since there is\nno difference (so far as the block allocator is concerned) between\ndata blocks and indirect blocks, it is posible to allocate a single\nextent and for the caller to unrevoke just the blocks required\nfor indirect blocks.\n\nCurrently the only bit of GFS2 to make use of this feature is the\nbuild height function. The intention is that gfs2_block_map will\nbe changed to make use of this feature in future patches.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "1639431a3f57b43da1e15e9268a1d691ac01ba26",
      "tree": "0e8147c9009c917566cf03c7e23f6ea4ffda8d72",
      "parents": [
        "5731be53e3d82aedd06e02574f833a57b07a08d2"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Feb 01 14:52:30 2008 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 31 10:40:45 2008 +0100"
      },
      "message": "[GFS2] Merge gfs2_alloc_meta and gfs2_alloc_data\n\nThanks to the preceeding patches, the only difference between\nthese two functions is their name. We can thus merge them\nand call the new function gfs2_alloc_block to reflect the\nfact that it can allocate either kind of block.\n\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": "9a0045088d888c9c539c8c626a366cb52c0fbdab",
      "tree": "eac1d44330603c08dddf397fc46484f97a69a11e",
      "parents": [
        "cf45b752c9f23939e40d823b0600bf876e97b0e0"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Feb 01 09:23:44 2008 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 31 10:40:31 2008 +0100"
      },
      "message": "[GFS2] Shrink \u0026 rename di_depth\n\nThis patch forms a pair with the previous patch which shrunk\ndi_height. Like that patch di_depth is renamed i_depth and moved\ninto struct gfs2_inode directly. Also the field goes from 16 bits\nto 8 bits since it is also limited to a max value which is rather\nsmall (17 in this case). In addition we also now validate the field\nagainst this maximum value when its read in.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "fe6c991c52a0dd07d4a19d392fd65048226cb1bc",
      "tree": "629a2a35887047f7e973edeb9b543fe833a1065c",
      "parents": [
        "ecc30c79157103e8bd7492043ee992b763443832"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Mon Jan 28 11:13:02 2008 -0600"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 31 10:39:49 2008 +0100"
      },
      "message": "[GFS2] Get rid of unneeded parameter in gfs2_rlist_alloc\n\nThis patch removed the unnecessary parameter from function\ngfs2_rlist_alloc.  The parameter was always passed in as 0.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "e231c2ee64eb1c5cd3c63c31da9dac7d888dcf7f",
      "tree": "d4b17ef65960594681397a3acac02c2d248200b5",
      "parents": [
        "d1bc8e95445224276d7896b8b08cbb0b28a0ca80"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Feb 07 00:15:26 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:26 2008 -0800"
      },
      "message": "Convert ERR_PTR(PTR_ERR(p)) instances to ERR_CAST(p)\n\nConvert instances of ERR_PTR(PTR_ERR(p)) to ERR_CAST(p) using:\n\nperl -spi -e \u0027s/ERR_PTR[(]PTR_ERR[(](.*)[)][)]/ERR_CAST(\\1)/\u0027 `grep -rl \u0027ERR_PTR[(]*PTR_ERR\u0027 fs crypto net security`\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6dbd822487d0a9f14432cb4680415b80656b63a2",
      "tree": "f0391d598c27cd7c39c67cfa13799a784f4c389a",
      "parents": [
        "ac39aadd0440ae696e6dacaa8006ce1737b17008"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Jan 10 15:18:55 2008 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jan 25 08:18:25 2008 +0000"
      },
      "message": "[GFS2] Reduce inode size by moving i_alloc out of line\n\nIt is possible to reduce the size of GFS2 inodes by taking the i_alloc\nstructure out of the gfs2_inode. This patch allocates the i_alloc\nstructure whenever its needed, and frees it afterward. This decreases\nthe amount of low memory we use at the expense of requiring a memory\nallocation for each page or partial page that we write. A quick test\nwith postmark shows that the overhead is not measurable and I also note\nthat OCFS2 use the same approach.\n\nIn the future I\u0027d like to solve the problem by shrinking down the size\nof the members of the i_alloc structure, but for now, this reduces the\nimmediate problem of using too much low-memory on x86 and doesn\u0027t add\ntoo much overhead.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "7a9f53b3c1875bef22ad4588e818bc046ef183da",
      "tree": "0b23b5b8a667d0d57c695c47f6b4eb6d50c2d661",
      "parents": [
        "de986e859a29097fb9211b052d86a9a2c868f6cd"
      ],
      "author": {
        "name": "Benjamin Marzinski",
        "email": "bmarzins@redhat.com",
        "time": "Tue Sep 18 13:33:18 2007 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Oct 10 08:56:29 2007 +0100"
      },
      "message": "[GFS2] Alternate gfs2_iget to avoid looking up inodes being freed\n\nThere is a possible deadlock between two processes on the same node, where one\nprocess is deleting an inode, and another process is looking for allocated but\nunused inodes to delete in order to create more space.\n\nprocess A does an iput() on inode X, and it\u0027s i_count drops to 0. This causes\niput_final() to be called, which puts an inode into state I_FREEING at\ngeneric_delete_inode(). There no point between when iput_final() is called, and\nwhen I_FREEING is set where GFS2 could acquire any glocks. Once I_FREEING is\nset, no other process on that node can successfully look up that inode until\nthe delete finishes.\n\nprocess B locks the the resource group for the same inode in get_local_rgrp(),\nwhich is called by gfs2_inplace_reserve_i()\n\nprocess A tries to lock the resource group for the inode in\ngfs2_dinode_dealloc(), but it\u0027s already locked by process B\n\nprocess B waits in find_inode for the inode to have the I_FREEING state cleared.\n\nDeadlock.\n\nThis patch solves the problem by adding an alternative to gfs2_iget(),\ngfs2_iget_skip(), that simply skips any inodes that are in the I_FREEING\nstate.o The alternate test function is just like the original one, except that\nit fails if the inode is being freed, and sets a skipped flag. The alternate\nset function is just like the original, except that it fails if the skipped\nflag is set. Only try_rgrp_unlink() calls gfs2_iget_skip() instead of\ngfs2_iget().\n\nSigned-off-by: Benjamin E. Marzinski \u003cbmarzins@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "382e6e256b0cb1a84a45a520cef75d1b8ff44663",
      "tree": "897cb4a2df63f5f9304bc5d486ec110c1d7ef8c9",
      "parents": [
        "bb3b0e3df5420fdf2c6bbb4417525c6d2ef55bbb"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Aug 16 17:08:20 2007 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Oct 10 08:55:32 2007 +0100"
      },
      "message": "[GFS2] Add a missing gfs2_trans_add_bh()\n\nThis was missing from the dir_split_leaf() function although in\nmost cases its not a problem due to other functions having\nalready previously called gfs2_trans_add_bh. This makes certain\nthat it is correct.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Wendy Cheng \u003cwcheng@redhat.com\u003e\n"
    },
    {
      "commit": "bb9bcf061660661c57ddcf31337529f82414b937",
      "tree": "0876874e5252c4939b8e7bbd62a22a6eb4ad1abf",
      "parents": [
        "f4fadb23ca49abd2f1387a0b7e78b385ebc760ce"
      ],
      "author": {
        "name": "Wendy Cheng",
        "email": "wcheng@redhat.com",
        "time": "Wed Jun 27 17:07:08 2007 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jul 09 08:24:08 2007 +0100"
      },
      "message": "[GFS2] Obtaining no_formal_ino from directory entry\n\nGFS2 lookup code doesn\u0027t ask for inode shared glock. This implies during\nin-memory inode creation for existing file, GFS2 will not disk-read in\nthe inode contents. This leaves no_formal_ino un-initialized during\nlookup time. The un-initialized no_formal_ino is subsequently encoded\ninto file handle. Clients will get ESTALE error whenever it tries to\naccess these files.\n\nSigned-off-by: S. Wendy Cheng \u003cwcheng@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "4bd91ba18198eee42c39d4c334c825d1a0a4b445",
      "tree": "f385969756303a17a7ce3d24280fc6bd64063c87",
      "parents": [
        "bb8d8a6f54c1c84d7c74623491bab043b36a38c5"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Jun 05 09:39:18 2007 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jul 09 08:23:12 2007 +0100"
      },
      "message": "[GFS2] Add nanosecond timestamp feature\n\nThis adds a nanosecond timestamp feature to the GFS2 filesystem. Due\nto the way that the on-disk format works, older filesystems will just\nappear to have this field set to zero. When mounted by an older version\nof GFS2, the filesystem will simply ignore the extra fields so that\nit will again appear to have whole second resolution, so that its\ntrivially backward compatible.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "bb8d8a6f54c1c84d7c74623491bab043b36a38c5",
      "tree": "76c62c505df2a1acd090f4aacc63fb9eddd3950f",
      "parents": [
        "ddf4b426aababdae4cb96326d7aeb9d119f42c50"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jun 01 14:11:58 2007 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jul 09 08:23:10 2007 +0100"
      },
      "message": "[GFS2] Fix sign problem in quota/statfs and cleanup _host structures\n\nThis patch fixes some sign issues which were accidentally introduced\ninto the quota \u0026 statfs code during the endianess annotation process.\nAlso included is a general clean up which moves all of the _host\nstructures out of gfs2_ondisk.h (where they should not have been to\nstart with) and into the places where they are actually used (often only\none place). Also those _host structures which are not required any more\nare removed entirely (which is the eventual plan for all of them).\n\nThe conversion routines from ondisk.c are also moved into the places\nwhere they are actually used, which for almost every one, was just one\nsingle place, so all those are now static functions. This also cleans up\nthe end of gfs2_ondisk.h which no longer needs the #ifdef __KERNEL__.\n\nThe net result is a reduction of about 100 lines of code, many functions\nnow marked static plus the bug fixes as mentioned above. For good\nmeasure I ran the code through sparse after making these changes to\ncheck that there are no warnings generated.\n\nThis fixes Red Hat bz #239686\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "dbb7cae2a36170cd17ffbe286ec0c91a998740ff",
      "tree": "1f4da65b07ac31648fe9b72f2742075486a86008",
      "parents": [
        "41d7db0ab437bc84f8a6e77cccc626ce937605ac"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue May 15 15:37:50 2007 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jul 09 08:22:24 2007 +0100"
      },
      "message": "[GFS2] Clean up inode number handling\n\nThis patch cleans up the inode number handling code. The main difference\nis that instead of looking up the inodes using a struct gfs2_inum_host\nwe now use just the no_addr member of this structure. The tests relating\nto no_formal_ino can then be done by the calling code. This has\nadvantages in that we want to do different things in different code\npaths if the no_formal_ino doesn\u0027t match. In the NFS patch we want to\nreturn -ESTALE, but in the -\u003elookup() path, its a bug in the fs if the\nno_formal_ino doesn\u0027t match and thus we can withdraw in this case.\n\nIn order to later fix bz #201012, we need to be able to look up an inode\nwithout knowing no_formal_ino, as the only information that is known to\nus is the on-disk location of the inode in question.\n\nThis patch will also help us to fix bz #236099 at a later date by\ncleaning up a lot of the code in that area.\n\nThere are no user visible changes as a result of this patch and there\nare no changes to the on-disk format either.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "f391a4ead61e4510ff385815ddaf3c0777fbad1b",
      "tree": "daa54243c295d3916462410e32507c889585a857",
      "parents": [
        "bf126aee6d54fe1e509846abf3b27aba84c6d7ce"
      ],
      "author": {
        "name": "akpm@linux-foundation.org",
        "email": "akpm@linux-foundation.org",
        "time": "Wed Apr 25 21:08:02 2007 -0700"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue May 01 09:11:48 2007 +0100"
      },
      "message": "[GFS2] printk warning fixes\n\nalpha:\n\nfs/gfs2/dir.c: In function \u0027gfs2_dir_read_leaf\u0027:\nfs/gfs2/dir.c:1322: warning: format \u0027%llu\u0027 expects type \u0027long long unsigned int\u0027, but argument 3 has type \u0027sector_t\u0027\nfs/gfs2/dir.c: In function \u0027gfs2_dir_read\u0027:\nfs/gfs2/dir.c:1455: warning: format \u0027%llu\u0027 expects type \u0027long long unsigned int\u0027, but argument 3 has type \u0027__u64\u0027\n\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "bdd19a22f85a7039e01accd8717eaec4addd9dfd",
      "tree": "6c0367cb96582f87432047ea92e3a67eaeef3635",
      "parents": [
        "7a0079d9e3fe8826475a08785f3d348c4b509774"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 18 09:38:42 2007 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue May 01 09:11:30 2007 +0100"
      },
      "message": "[GFS2] Patch to detect corrupt number of dir entries in leaf and/or inode blocks\n\nThis patch detects when the number of entries in a leaf block or inode\nblock (in the case of stuffed directories) is corrupt and informs the\nuser. It prevents us from running off the end of the array thats been\nallocated for the sorting in this case,\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "cd354f1ae75e6466a7e31b727faede57a1f89ca5",
      "tree": "09a2da1672465fefbc7fe06ff4e6084f1dd14c6b",
      "parents": [
        "3fc605a2aa38899c12180ca311f1eeb61a6d867e"
      ],
      "author": {
        "name": "Tim Schmielau",
        "email": "tim@physik3.uni-rostock.de",
        "time": "Wed Feb 14 00:33:14 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 14 08:09:54 2007 -0800"
      },
      "message": "[PATCH] remove many unneeded #includes of sched.h\n\nAfter Al Viro (finally) succeeded in removing the sched.h #include in module.h\nrecently, it makes sense again to remove other superfluous sched.h includes.\nThere are quite a lot of files which include it but don\u0027t actually need\nanything defined in there.  Presumably these includes were once needed for\nmacros that used to live in sched.h, but moved to other header files in the\ncourse of cleaning it up.\n\nTo ease the pain, this time I did not fiddle with any header files and only\nremoved #includes from .c-files, which tend to cause less trouble.\n\nCompile tested against 2.6.20-rc2 and 2.6.20-rc2-mm2 (with offsets) on alpha,\narm, i386, ia64, mips, powerpc, and x86_64 with allnoconfig, defconfig,\nallmodconfig, and allyesconfig as well as a few randconfigs on x86_64 and all\nconfigs in arch/arm/configs on arm.  I also checked that no new warnings were\nintroduced by the patch (actually, some warnings are removed that were emitted\nby unnecessarily included header files).\n\nSigned-off-by: Tim Schmielau \u003ctim@physik3.uni-rostock.de\u003e\nAcked-by: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ddfe0627838ca0c0e8babb0dd2bd7f4b35e25bff",
      "tree": "a6348245a2a4d58705119a2cec5aabd650ee64a1",
      "parents": [
        "90101c31867b7acc44286b425d50e1042aa55b8d"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Thu Jan 18 16:41:23 2007 -0600"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Feb 05 13:37:38 2007 -0500"
      },
      "message": "[GFS2] use CURRENT_TIME_SEC instead of get_seconds in gfs2\n\nI was looking something else up and came across this...\n\nI don\u0027t honestly have a good reason to change it other than to make it\nlike every other Linux filesystem in this regard.  ;-)  It doesn\u0027t\nfunctionally change anything, but makes some lines shorter. :)\n\nI\u0027m also curious; why does gfs2 have 64-bits of on-disk timestamps, but\nnot in timespec_t format, and only stores second resolutions?  Seems like\nyou\u0027re halfway to sub-second resolutions already.\n\nI suppose if that gets implemented then all of the below should\ninstead be CURRENT_TIME not CURRENT_TIME_SEC.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "3699e3a44bf56e0cd58c97e8655f375ad9b65d9d",
      "tree": "9ac31dd5b99373614f0cd52cc5a41536aeea271e",
      "parents": [
        "a8d638e30e768adc6956541f79f7bf05139ba475"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Jan 17 15:09:20 2007 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Feb 05 13:37:04 2007 -0500"
      },
      "message": "[GFS2] Clean up/speed up readdir\n\nThis removes the extra filldir callback which gfs2 was using to\nenclose an attempt at readahead for inodes during readdir. The\ncode was too complicated and also hurts performance badly in the\ncase that the getdents64/readdir call isn\u0027t being followed by\nstat() and it wasn\u0027t even getting it right all the time when it\nwas.\n\nAs a result, on my test box an \"ls\" of a directory containing 250000\nfiles fell from about 7mins (freshly mounted, so nothing cached) to\nbetween about 15 to 25 seconds. When the directory content was cached,\nthe time taken fell from about 3mins to about 4 or 5 seconds.\n\nInterestingly in the cached case, running \"ls -l\" once reduced the time\ntaken for subsequent runs of \"ls\" to about 6 secs even without this\npatch. Now it turns out that there was a special case of glocks being\nused for prefetching the metadata, but because of the timeouts for these\nlocks (set to 10 secs) the metadata was being timed out before it was\nbeing used and this the prefetch code was constantly trying to prefetch\nthe same data over and over.\n\nCalling \"ls -l\" meant that the inodes were brought into memory and once\nthe inodes are cached, the glocks are not disposed of until the inodes\nare pushed out of the cache, thus extending the lifetime of the glocks,\nand thus bringing down the time for subsequent runs of \"ls\"\nconsiderably.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "5e7d65cd9d3819512b059f4260de0119b985454c",
      "tree": "f6e09c9eff9dfa4197cc6da8d153f314737026db",
      "parents": [
        "dcd2479959c79d44f5dd77e71672e70f1f8b1f06"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Nov 17 12:27:44 2006 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Nov 30 10:36:20 2006 -0500"
      },
      "message": "[GFS2] Make sentinel dirents compatible with gfs1\n\nWhen deleting directory entries, we set the inum.no_addr to zero\nin a dirent when its the first dirent in a block and thus cannot\nbe merged into the previous dirent as is the usual case. In gfs1,\ninum.no_formal_ino was used instead.\n\nThis patch changes gfs2 to set both inum.no_addr and inum.no_formal_ino\nto zero. It also changes the test from just looking at inum.no_addr to\nlook at both inum.no_addr and inum.no_formal_ino and a sentinel is\nnow considered to be a dirent in which _either_ (or both) of them\nis set to zero.\n\nThis resolves Red Hat bugzillas: #215809, #211465\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "9e2dbdac3df300516ffdd9a8631f23164d068a50",
      "tree": "088a7dce1a0cc678a80ca1609642e7e3ecacd4dd",
      "parents": [
        "e7c698d74fc9e0e76b3086062b0519df3601ff52"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Nov 08 15:45:46 2006 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Nov 30 10:34:52 2006 -0500"
      },
      "message": "[GFS2] Remove gfs2_inode_attr_in\n\nThis function wasn\u0027t really doing the right thing. There was no need\nto update the inode size at this point and the updating of the\ni_blocks field has now been moved to the places where di_blocks is\nupdated. A result of this patch and some those preceeding it is that\nunlocking a glock is now a much more efficient process, since there\nis no longer any requirement to copy data from the gfs2 inode into\nthe vfs inode at this point.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "a9583c7983cbba9726bfe64ee46613d654fc9e26",
      "tree": "37a23321b8254499e48f93bc65d946ab47547fa4",
      "parents": [
        "1a7b1eed5802502fd649e04784becd58557fdcf1"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Nov 01 20:09:14 2006 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Nov 30 10:34:26 2006 -0500"
      },
      "message": "[GFS2] Shrink gfs2_inode (7) - di_payload_format\n\nThis is almost never used. Its there for backward\ncompatibility with GFS1. It doesn\u0027t need its own\nfield since it can always be calculated from the\ninode mode \u0026 flags. This saves a bit more space\nin the gfs2_inode.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "1a7b1eed5802502fd649e04784becd58557fdcf1",
      "tree": "31e9e9ab8ba1296751985d49d55154848ae2eefa",
      "parents": [
        "4f56110a00af5fb2e22fbccfcaf944d62cae8fcf"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Nov 01 14:35:17 2006 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Nov 30 10:34:23 2006 -0500"
      },
      "message": "[GFS2] Shrink gfs2_inode (6) - di_atime/di_mtime/di_ctime\n\nRemove the di_[amc]time fields and use inode-\u003ei_[amc]time\nfields instead. This saves 24 bytes from the gfs2_inode.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "539e5d6b7ae8612c0393fe940d2da5b591318d3d",
      "tree": "3ae6afd9c47a9a08e87877988d1c47bc060d71bf",
      "parents": [
        "9c9ab3d5414653bfe5e5b9f4dfdaab0c6ab17196"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Oct 31 15:07:05 2006 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Nov 30 10:33:54 2006 -0500"
      },
      "message": "[GFS2] Change argument of gfs2_dinode_out\n\nEverywhere this was called, a struct gfs2_inode was available,\nbut despite that, it was always called with a struct gfs2_dinode\nas an argument. By making this change it paves the way to start\neliminating fields duplicated between the kernel\u0027s struct inode\nand the struct gfs2_dinode.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "b44b84d765b02f813a67b96bf79e3b5d4d621631",
      "tree": "cc5353f1c7f4cacf8560d52c47f108333f179792",
      "parents": [
        "b62f963e1fdf838fed91faec21228d421a834f2d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 14 10:46:30 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Nov 30 10:33:46 2006 -0500"
      },
      "message": "[GFS2] gfs2 misc endianness annotations\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "629a21e7ecedf779c68dcaa9a186069f57a7c652",
      "tree": "aff577cb9d1d3cf42ddb16f4552411d08e5cdc51",
      "parents": [
        "1e81c4c3e0f55c95b6278a827262b80debd0dc7e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 13 22:51:24 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Nov 30 10:33:32 2006 -0500"
      },
      "message": "[GFS2] split and annotate gfs2_inum\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "b7d8ac3e1779c30ddef0a8f38042076c5007a23d",
      "tree": "0c79c3ddb223504789e8f67e609b5924c6cf2ede",
      "parents": [
        "bbbe4512735eb0f15f09ffd14876091a8e91bc69"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Thu Oct 19 16:02:07 2006 +0200"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 20 09:16:20 2006 -0400"
      },
      "message": "[GFS2] gfs2_dir_read_data(): fix uninitialized variable usage\n\nIn the \"if (extlen)\" case, \"bh\" was used uninitialized.\n\nThis patch changes the code to what seems to have been intended.\n\nSpotted by the Coverity checker.\n\nThis patch also removes a pointless \"bh \u003d NULL\" asignment (the variable\nis never accessed again after this point).\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "348acd48f050f5ba7fa917b1421ae34443be97dd",
      "tree": "888d1915580fdb2629bc6165b700b2661d660f14",
      "parents": [
        "b0cb66955f4bf7a72b544096ceef48a829361a3c"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Thu Oct 19 15:20:04 2006 +0200"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 20 09:15:31 2006 -0400"
      },
      "message": "[GFS2] fs/gfs2/dir.c:gfs2_dir_write_data(): don\u0027t use an uninitialized variable\n\nIn the \"if (extlen)\" case, \"new\" might be used uninitialized.\n\nLooking at the code, it should be initialized to 0.\n\nSpotted by the Coverity checker.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "abbdbd2065e74411dc2c401501c2c85a82f60e06",
      "tree": "bbfbdfa02fd61077bdab288f59b3f56c67980eab",
      "parents": [
        "a2d7d021d78dbc00d24d9c809c64a7f3e61fa773"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Thu Oct 19 15:12:24 2006 +0200"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 20 09:14:42 2006 -0400"
      },
      "message": "[GFS2] fs/gfs2/dir.c:gfs2_dir_write_data(): remove dead code\n\nThe Coverity checker spotted this obviously dead code.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "a2d7d021d78dbc00d24d9c809c64a7f3e61fa773",
      "tree": "6fef76036a6038e95725e6a7c728376bb55953d4",
      "parents": [
        "23591256d61354e20f12e98d7a496ad5c23de74c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Sat Oct 14 16:49:30 2006 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 20 09:14:08 2006 -0400"
      },
      "message": "[GFS2] gfs2 endianness bug: be16 assigned to be32 field\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\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": "c53921248c79197befa7caa4c17b1af5c077a2c2",
      "tree": "e446672af150784bee2ac92ccc991a62ed699cca",
      "parents": [
        "7b62536141927212158ab84ce2afda9319ae6f2d"
      ],
      "author": {
        "name": "Jan Engelhardt",
        "email": "jengelh@linux01.gwdg.de",
        "time": "Tue Sep 05 14:30:40 2006 +0200"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 07 09:42:56 2006 -0400"
      },
      "message": "[GFS2] More style changes\n\nRemove redundant brackets\n\nSigned-off-by: Jan Engelhardt \u003cjengelh@linux01.gwdg.de\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "2bdbc5d73961c040fdc9b30d985fab3047d697a0",
      "tree": "6f14365f7643c9b8e408f0c60e36afb18972e59b",
      "parents": [
        "5acd3967347dab361d296d39ba19f8241507ef65"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Sep 05 09:34:20 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Sep 05 09:34:20 2006 -0400"
      },
      "message": "[GFS2] Directory code style changes\n\nAs per comments from Jan Engelhardt, remove redundant casts, redundant\nendian conversions, add a smattering of const and rewrite the\ndirent_next function in order to avoid as many casts as possible.\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": "a91ea69ffd3f8a0b7139bfd44042ab384461e631",
      "tree": "f05952e49e01609b21dbe8d27d9ffd30b4aa507f",
      "parents": [
        "75d3b817a0b48425da921052955cc58f20bbab52"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 04 12:04:26 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 04 12:04:26 2006 -0400"
      },
      "message": "[GFS2] Align all labels against LH side\n\nThis makes everything consistent.\n\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": "899bb264507cfed83922bf14cd66a073494601ba",
      "tree": "5b604dfb4afef0d7132d5f6a5d7fa94328b0ee32",
      "parents": [
        "de9b75d31e81e87685d8cc70052a003c654f1e8e"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Aug 01 15:28:57 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Aug 01 15:28:57 2006 -0400"
      },
      "message": "[GFS2] Fix bug in directory code\n\nThis was a nasty bug which resulted in corruption of hash tables\nin the directory code with larger directories. We forgot to\nincrement a pointer in the read/write routines internal to the\ndirectory code.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "f25ef0c1b4e032b2641857ac4cff3315c6eb90e3",
      "tree": "bb07e8ed49264213cfb5d1694f19f3ece8cad1f0",
      "parents": [
        "81456807a33c2122e2f1f92acfbaaa77b3d06c3c"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Jul 26 10:51:20 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Jul 26 10:51:20 2006 -0400"
      },
      "message": "[GFS2] Tidy gfs2_unstuffer_page\n\nTidy up gfs2_unstuffer_page by:\n\n a) Moving it into bmap.c\n b) Making it static\n c) Calling it directly from gfs2_unstuff_dinode\n d) Updating all callers of gfs2_unstuff_dinode due to one less\n    required argument.\n\nIt doesn\u0027t change the behaviour at all.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "634ee0b9f458f3530b9c0ea7e6951dd03db7d678",
      "tree": "5d4ce77d3f7104957a220c39bdc99d4d07ce8082",
      "parents": [
        "4bf311ddfbffe12d41ad1a3c311ab727db6f72cb"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jul 17 09:32:37 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jul 17 09:32:37 2006 -0400"
      },
      "message": "[GFS2] Fix use after free bug in dir.c\n\nFix a use after free bug in dir.c spotted by Kevin Anderson.\n\nCc: Kevin Anderson \u003ckanderso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "4da3c6463ef6759fb50d12c8652bc29c5c1730a4",
      "tree": "7fc1d3f228844799f20db258e36c9b2976c73dc4",
      "parents": [
        "b2a580d87b33816aa9b50268f70666368e12f7df"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Jul 11 13:19:13 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Jul 11 13:19:13 2006 -0400"
      },
      "message": "[GFS2] Fix a coupls of warnings in dir.c\n\nFix a couple of compiler warnings in dir.c caused by\npotentially uninitialised variables.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "dc3e130a08996e2b56381365a5ac7bb1ce2a9f47",
      "tree": "7732f4ad6ab475c57ff481ab0aed461604bfcfe2",
      "parents": [
        "29937ac6caa68d60c7f1a3e07b6137cf53e09e24"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jul 10 11:19:29 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jul 10 11:19:29 2006 -0400"
      },
      "message": "[GFS2] Remove unused code from dir.c\n\nRemove a couple of commented out, and unused lines of\ncode.\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": "fd88de569b802c4a04aaa6ee74667775f4aed8c6",
      "tree": "1766c45303798bf289059afc8f117cf8bc784086",
      "parents": [
        "5bb76af1e089ac186c15c6aa792340d22b63d4b4"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri May 05 16:59:11 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri May 05 16:59:11 2006 -0400"
      },
      "message": "[GFS2] Readpages support\n\nThis adds readpages support (and also corrects a small bug in\nthe readpage error path at the same time). Hopefully this will\nimprove performance by allowing GFS to submit larger lumps of\nI/O at a time.\n\nIn order to simplify the setting of BH_Boundary, it currently gets\nset when we hit the end of a indirect pointer block. There is\nalways a boundary at this point with the current allocation code.\nIt doesn\u0027t get all the boundaries right though, so there is still\nroom for improvement in this.\n\nSee comments in fs/gfs2/ops_address.c for further information about\nreadpages with GFS2.\n\nSigned-off-by: Steven Whitehouse\n"
    },
    {
      "commit": "08bc2dbc7327e89b9d5b9c8ef9401d1df2622fca",
      "tree": "2c16cbd9f5bd856b00ef0a0d9f88b3afa67712ee",
      "parents": [
        "c56b39cd2c55d521597f04bbd872a08d1c4373ca"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Apr 28 10:59:12 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Apr 28 10:59:12 2006 -0400"
      },
      "message": "[GFS2] [-mm patch] fs/gfs2/: possible cleanups\n\nThis patch contains the following possible cleanups:\n- make needlessly global code static\n- #if 0 unused functions\n- remove the following global function that was both unused and\n  unimplemented:\n  - super.c: gfs2_do_upgrade()\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "61e085a88cb59232eb8ff5b446d70491c7bf2c68",
      "tree": "a1e0bb72b6a79ee8700fefc8190e48a6c78d33cd",
      "parents": [
        "1e09ae544eb1a2d11b04c6924f738a310c7a7a2b"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Apr 24 10:07:13 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Apr 24 10:07:13 2006 -0400"
      },
      "message": "[GFS2] Tidy up dir code as per Christoph Hellwig\u0027s comments\n\n1. Comment whitespace fix\n2. Removed unused header files from dir.c\n3. Split the gfs2_dir_get_buffer() function into two functions\n\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "fe1bdedc6c16adedc6fd3636185ea91596b1d6eb",
      "tree": "4d68a40c1a2db670e71952003e5fb09a95123975",
      "parents": [
        "4d8012b60e0f0e0217e65f67da7d97276d1824e9"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Apr 18 10:09:15 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Apr 18 10:09:15 2006 -0400"
      },
      "message": "[GFS2] Use vmalloc() in dir code\n\nWhen allocating memory to sort directory entries, use vmalloc()\nrather than kmalloc() since for larger directories, the required\nsize can easily be graeter than the 128k maximum of kmalloc().\n\nAlso adding the first steps towards getting the AOP_TRUNCATED_PAGE\nreturn code get in the glock code by flagging all places where we\nrequest a glock and we are holding a page lock.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "4d8012b60e0f0e0217e65f67da7d97276d1824e9",
      "tree": "2918488b073b5cfd9b3d8ddc8020f82e5530dfbc",
      "parents": [
        "f4154ea039bbf45c52840b30c68143a2dc28d4b4"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 12 17:39:45 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 12 17:39:45 2006 -0400"
      },
      "message": "[GFS2] Fix bug which was causing postmark to fail\n\nA typo in the directory code was causing postmark to fail\nsomewhere in the allocation code, since it was unable to\nfind newly allocated directory leaf blocks under certain\ncircumstances.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "f4154ea039bbf45c52840b30c68143a2dc28d4b4",
      "tree": "fa00645dd60a9140e885be96a4aa9797cf4cfeac",
      "parents": [
        "ed3865079b573ef55dc13ab0bfb242ed5ebab4c1"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Apr 11 14:49:06 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Apr 11 14:49:06 2006 -0400"
      },
      "message": "[GFS2] Update journal accounting code.\n\nA small update to the journaling code to change the way that\nthe \"extra\" blocks are accounted for in the journal. These are\nused at a rate of one per 503 metadata blocks or one per 251\njournaled data blocks (or just one if the total number of journaled\nblocks in the transaction is smaller). Since we are using them at\ntwo different rates the old method of accounting for them no longer\nworks and we count them up as required.\n\nSince the \"per transaction\" accounting can\u0027t handle this (there is no\nfixed number of header blocks per transaction) we have to account for\nit in the general journal code. We now require that each transaction\nreserves more blocks than it actually needs to take account of the\npossible extra blocks.\n\nAlso a final fix to dir.c to ensure that all ref counts are handled\ncorrectly.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "ed3865079b573ef55dc13ab0bfb242ed5ebab4c1",
      "tree": "805051b854553a04cc6bb5082a74e3030216372b",
      "parents": [
        "b09e593d799560f1a0782c20ac5900058390a26f"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Apr 07 16:28:07 2006 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Apr 07 16:28:07 2006 -0400"
      },
      "message": "[GFS2] Finally get ref counting correct\n\nThe last patch missed some other instances of incorrect ref counting,\nthis fixes all of those too.\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": "e90deff5336ac500c65f873484c326cfa8a9d379",
      "tree": "7a9b0325148e72542b36fb8dd3dfc749ae1cf696",
      "parents": [
        "d0dc80dbafb5c10ad2084831a61bbf945484a139"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Mar 29 19:02:15 2006 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Mar 29 19:02:15 2006 -0500"
      },
      "message": "[GFS2] Fix bug in directory expansion code\n\nWe didn\u0027t properly check that leaf splitting was allowed. We do\nnow.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "71b86f562b5eb6f94ea00bba060caa64d0137969",
      "tree": "63d982e09a9cb934fe656afe115031c0a9dc5e4a",
      "parents": [
        "94aabbd99370f738da4f6cb4ea0b94cd9024002f"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Mar 28 14:14:04 2006 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Mar 28 14:14:04 2006 -0500"
      },
      "message": "[GFS2] Further updates to dir and logging code\n\nThis reduces the size of the directory code by about 3k and gets\nreaddir() to use the functions which were introduced in the previous\ndirectory code update.\n\nTwo memory allocations are merged into one. Eliminates zeroing of some\nbuffers which were never used before they were initialised by\nother data.\n\nThere is still scope for further improvement in the directory code.\n\nOn the logging side, a hand created mutex has been replaced by a\nstandard Linux mutex in the log allocation code.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "c752666c17f870fa8ae9f16804dd457e9e6daaec",
      "tree": "c3c48383f386a24edbdf3c6292f25b587e6d9368",
      "parents": [
        "419c93e0b6b9eef0bf26b8ad415f2a5bf4300119"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 20 12:30:04 2006 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 20 12:30:04 2006 -0500"
      },
      "message": "[GFS2] Fix bug in directory code and tidy up\n\nDue to a typo, the dir leaf split operation was (for the first\nsplit in a directory) writing the new hash vaules at the\nwrong offset. This is now fixed.\n\nAlso some other tidy ups are included:\n\n - We use GFS2\u0027s hash function for dentries (see ops_dentry.c) so that\n   we don\u0027t have to keep recalculating the hash values.\n - A lot of common code is eliminated between the various directory\n   lookup routines.\n - Better error checking on directory lookup (previously different\n   routines checked for different errors)\n - The leaf split operation has a couple of redundant operations\n   removed from it, so it should be faster.\n\nThere is still further scope for further clean ups in the directory\ncode, and readdir in particular could do with slimming down a bit.\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": "4dd651adbb4898d3200426c197b26c99d2209d8d",
      "tree": "e6e3000a63a4723a5a35e4af9f0e49c76821ad96",
      "parents": [
        "d1665e414297c3a46fd80cb8242ad0c8e82acae7"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Feb 14 15:56:44 2006 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Feb 14 15:56:44 2006 +0000"
      },
      "message": "[GFS2] Fix the bugs I introduced in the last patch but one\n\nVarious endianess changes required in the directory code.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "fc69d0d336214219abb521d8ff060f786d7f369e",
      "tree": "dfb6401d82a72592d9c5d55320740b71c50cd5e0",
      "parents": [
        "7359a19cc758946aba0e45233b8641256b194884"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Feb 13 16:21:47 2006 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Feb 13 16:21:47 2006 +0000"
      },
      "message": "[GFS2] Change ondisk format (hopefully for the last time)\n\nThere were one or two fields in structures which didn\u0027t get changed\nlast time back to their gfs1 sizes and alignments. One or two constants\nhave also changed back to their original values which were missed the\nfirst time.\n\nIts possible that indirect pointer blocks might need to change. If\nthey don\u0027t we\u0027ll have to rewrite them all on upgrade due to a change\nin the amount of padding that they use.\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": "e13940ba56157a663944f2a827be96b6b787e260",
      "tree": "0bdc3669ed3cd3498b2dd73ed23003976d588c02",
      "parents": [
        "9b124fbb8ddb3d0b17f5a807414d85cbaf527a56"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jan 30 13:31:50 2006 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jan 30 13:31:50 2006 +0000"
      },
      "message": "[GFS2] Make dir.c independant of jdata.c\n\nCopy \u0026 rename various jdata functions into dir.c. The plan\nbeing that directory metadata format will not change although\nthe journalled data format for \"normal\" files will change.\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": "666a2c534cc6238932296a95c9e9c06ca3b73d97",
      "tree": "c446ee47e6949f8315616b257bd82f918f3792db",
      "parents": [
        "c73530a1f9633b2e7e6e19d0274b575febf8e8dc"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "steve@chygwyn.com",
        "time": "Wed Jan 18 10:29:04 2006 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "steve@chygwyn.com",
        "time": "Wed Jan 18 10:29:04 2006 +0000"
      },
      "message": "[GFS2] Remove unused code from various files\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    }
  ],
  "next": "b3b94faa5fe5968827ba0640ee9fba4b3e7f736e"
}
