)]}'
{
  "log": [
    {
      "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": "66fc061bda3526650328b73f69985da3518c4256",
      "tree": "350471fda86ebf60fee5436350d36ce9cedbea75",
      "parents": [
        "47ac5537a794fc71f89d51af492a945bd233f70c"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Feb 08 12:58:32 2012 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Feb 28 17:10:21 2012 +0000"
      },
      "message": "GFS2: FITRIM ioctl support\n\nThe FITRIM ioctl provides an alternative way to send discard requests to\nthe underlying device. Using the discard mount option results in every\nfreed block generating a discard request to the block device. This can\nbe slow, since many block devices can only process discard requests of\nlarger sizes, and also such operations can be time consuming.\n\nRather than using the discard mount option, FITRIM allows a sweep of the\nfilesystem on an occasional basis, and also to optionally avoid sending\ndown discard requests for smaller regions.\n\nIn GFS2 FITRIM will work at resource group granularity. There is a flag\nfor each resource group which keeps track of which resource groups have\nbeen trimmed. This flag is reset whenever a deallocation occurs in the\nresource group, and set whenever a successful FITRIM of that resource\ngroup has taken place. This helps to reduce repeated discard requests\nfor the same block ranges, again improving performance.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "a365fbf354907430e6852f0c373b4b3eeff81ba3",
      "tree": "65d5ed095e3150d6061860f5aefd150a5ab76cfd",
      "parents": [
        "9e73f571ea3afffca78c1f54128d57796e27532f"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Feb 24 15:09:14 2012 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Feb 28 09:52:39 2012 +0000"
      },
      "message": "GFS2: Read resource groups on mount\n\nThis makes mount take slightly longer, but at the same time, the first\nwrite to the filesystem will be faster too. It also means that if there\nis a problem in the resource index, then we can refuse to mount rather\nthan having to try and report that when the first write occurs.\n\nIn addition, to avoid recursive locking, we hvae to take account of\ninstances when the rindex glock may already be held when we are\ntrying to update the rbtree of resource groups.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "718b97bd6b03445be53098e3c8f896aeebc304aa",
      "tree": "17161766fe3ce26cb54e265324efec74fae946f3",
      "parents": [
        "4043b886b0740ded65f633fc4b7225d624c7e658"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Thu Feb 16 11:31:04 2012 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Feb 28 09:48:02 2012 +0000"
      },
      "message": "GFS2: Read in rindex if necessary during unlink\n\nThis patch fixes a problem whereby you were unable to delete\nfiles until other file system operations were done (such as\nstatfs, touch, writes, etc.) that caused the rindex to be\nread in.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "66ad863b410efb7f537719006f9ac52400c1a5c5",
      "tree": "17db44f069274b4f42805c8fabdea841e4153737",
      "parents": [
        "376d37788b56bc2800e5bd56b7a36b3544d89f97"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Jan 11 12:35:05 2012 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Jan 11 12:35:05 2012 +0000"
      },
      "message": "GFS2: Fix nlink setting on inode creation\n\nSince the nlink count will be 0, we need to use set_nlink rather\nthan inc_nlink in order to avoid triggering the inc_nlink warning\nwhich was added recently.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "1619ed8f60959829d070d8f39cd2f8ca0e7135ce",
      "tree": "aa2599110827affb10e64a12e85a9d11f45854b1",
      "parents": [
        "29ad0de279002f9b6a63df5ba85328f5b633b842",
        "46cc1e5fce46e71f27e542125e045827a6bb776e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 13:07:54 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 13:07:54 2012 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw:\n  GFS2: local functions should be static\n  GFS2: We only need one ACL getting function\n  GFS2: Fix multi-block allocation\n  GFS2: decouple quota allocations from block allocations\n  GFS2: split function rgblk_search\n  GFS2: Fix up \"off by one\" in the previous patch\n  GFS2: move toward a generic multi-block allocator\n  GFS2: O_(D)SYNC support for fallocate\n  GFS2: remove vestigial al_alloced\n  GFS2: combine gfs2_alloc_block and gfs2_alloc_di\n  GFS2: Add non-try locks back to get_local_rgrp\n  GFS2: f_ra is always valid in dir readahead function\n  GFS2: Fix very unlikley memory leak in ACL xattr code\n  GFS2: More automated code analysis fixes\n  GFS2: Add readahead to sequential directory traversal\n  GFS2: Fix up REQ flags\n"
    },
    {
      "commit": "175a4eb7ea531cdbf6d574f5d5ba9aa0f5e8ed13",
      "tree": "841812b19b8a5546e472be321b32ca58528b76c3",
      "parents": [
        "030a8ba48fa6fa2a1304bab5b0f49360613c4af2"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 03:30:54 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:55:10 2012 -0500"
      },
      "message": "fs: propagate umode_t, misc bits\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1a67aafb5f72a436ca044293309fa7e6351d6a35",
      "tree": "d9e58600148de9d41b478cf815773b746647d15b",
      "parents": [
        "4acdaf27ebe2034c342f3be57ef49aed1ad885ef"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 01:52:52 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:54 2012 -0500"
      },
      "message": "switch -\u003emknod() to umode_t\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4acdaf27ebe2034c342f3be57ef49aed1ad885ef",
      "tree": "d89a876ee19cd88609a587f8aa6c464a52ee6d98",
      "parents": [
        "18bb1db3e7607e4a997d50991a6f9fa5b0f8722c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 01:42:34 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:53 2012 -0500"
      },
      "message": "switch -\u003ecreate() to umode_t\n\nvfs_create() ignores everything outside of 16bit subset of its\nmode argument; switching it to umode_t is obviously equivalent\nand it\u0027s the only caller of the method\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "18bb1db3e7607e4a997d50991a6f9fa5b0f8722c",
      "tree": "4ee4e584bc9a67f3ec14ce159d2d7d4a27e68d4a",
      "parents": [
        "8208a22bb8bd3c52ef634b4ff194f14892ab1713"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 01:41:39 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:53 2012 -0500"
      },
      "message": "switch vfs_mkdir() and -\u003emkdir() to umode_t\n\nvfs_mkdir() gets int, but immediately drops everything that might not\nfit into umode_t and that\u0027s the only caller of -\u003emkdir()...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "46cc1e5fce46e71f27e542125e045827a6bb776e",
      "tree": "a1b4f04d4c3f5697d400cad71e12f9d29236de49",
      "parents": [
        "018a01cd27b3448a7c65272ccb1a1cbab6c2667e"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Fri Sep 23 15:51:32 2011 -0700"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Dec 06 09:46:41 2011 +0000"
      },
      "message": "GFS2: local functions should be static\n\nQuiets the sparse noise:\n\nwarning: symbol \u0027gfs2_initxattrs\u0027 was not declared. Should it be static?\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "6a8099ed5677ac1bb2c74b74a31fecb8282f56c2",
      "tree": "a6baa1fa5a8a9f140b76210fb5f8eb3fb68906c5",
      "parents": [
        "564e12b1157215171e7f3af5b70611ec7154327c"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 22 12:18:51 2011 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 22 12:18:51 2011 +0000"
      },
      "message": "GFS2: Fix multi-block allocation\n\nClean up gfs2_alloc_blocks so that it takes the full extent length\nrather than just the number of non-inode blocks as an argument. That\nwill only make a difference in the inode allocation case for now.\n\nAlso, this fixes the extent length handling around gfs2_alloc_extent() so\nthat multi block allocations will work again.\n\nThe rd_last_alloc block is set to the final block in the allocated\nextent (as per the update to i_goal, but referenced to a different\nstart point).\n\nThis also removes the dinode argument to rgblk_search() which is no\nlonger used.\n\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": "87654896ca619ff64f94d3881d6bd0ec7b29e25f",
      "tree": "d5f19dca46c1d6aaa20a3a13acfe739eec0cc203",
      "parents": [
        "dfe4d34b39b80faff52489f950a18523da7581bf"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 08 14:04:20 2011 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 08 14:04:20 2011 +0000"
      },
      "message": "GFS2: More automated code analysis fixes\n\nA potentially uninitialised variable, some unreachable code,\nand the main part of this, fixing the error path in the\nunlink function.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "f793f2961170c0b49c1650e69e7825484159ce62",
      "tree": "06d27973f9db1080c1460f32155ce2baf610c3d4",
      "parents": [
        "dabcbb1bae0f55378060b285062b20f6ec648c6a",
        "b99b98dc2673a123a73068f16720232d7be7e669"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 28 10:44:50 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 28 10:44:50 2011 -0700"
      },
      "message": "Merge http://sucs.org/~rohan/git/gfs2-3.0-nmw\n\n* http://sucs.org/~rohan/git/gfs2-3.0-nmw: (24 commits)\n  GFS2: Move readahead of metadata during deallocation into its own function\n  GFS2: Remove two unused variables\n  GFS2: Misc fixes\n  GFS2: rewrite fallocate code to write blocks directly\n  GFS2: speed up delete/unlink performance for large files\n  GFS2: Fix off-by-one in gfs2_blk2rgrpd\n  GFS2: Clean up -\u003epage_mkwrite\n  GFS2: Correctly set goal block after allocation\n  GFS2: Fix AIL flush issue during fsync\n  GFS2: Use cached rgrp in gfs2_rlist_add()\n  GFS2: Call do_strip() directly from recursive_scan()\n  GFS2: Remove obsolete assert\n  GFS2: Cache the most recently used resource group in the inode\n  GFS2: Make resource groups \"append only\" during life of fs\n  GFS2: Use rbtree for resource groups and clean up bitmap buffer ref count scheme\n  GFS2: Fix lseek after SEEK_DATA, SEEK_HOLE have been added\n  GFS2: Clean up gfs2_create\n  GFS2: Use -\u003edirty_inode()\n  GFS2: Fix bug trap and journaled data fsync\n  GFS2: Fix inode allocation error path\n  ...\n"
    },
    {
      "commit": "54335b1fca27b84baa75b1f45985d98262003837",
      "tree": "c6b21aff1759d86be56208e9981117e4383c3f47",
      "parents": [
        "8339ee543ece6e2dcc1bbd97d5350163c198cf00"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 01 13:31:59 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:34 2011 +0100"
      },
      "message": "GFS2: Cache the most recently used resource group in the inode\n\nThis means that after the initial allocation for any inode, the\nlast used resource group is cached in the inode for future use.\nThis drastically reduces the number of lookups of resource\ngroups in the common case, and this the contention on that\ndata structure.\n\nThe allocation algorithm is the same as previously, except that we\nalways check to see if the goal block is within the cached rgrp\nfirst before going to the rbtree to look one up.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "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": "9a63edd12ba3c18351f00d6b77a6b2f49f2b8eb6",
      "tree": "46aac35d5e39bd393aca9cd2654235be42859d82",
      "parents": [
        "ab9bbda0204dfd0e5342562d9979d1241b14ea5f"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Aug 18 14:35:53 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:28 2011 +0100"
      },
      "message": "GFS2: Clean up gfs2_create\n\nIf we pass through knowledge of whether the creation is intended to be\nexclusive or not, then we can deal with that in gfs2_create_inode\nand remove one set of locking. Also this removes the loop in\ngfs2_create and simplifies the code a bit.\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": "40ac218f52aa5cac7dc8082f28b61c8b2b29373c",
      "tree": "34e86173a2554b738f0141a1c38ffc3191d2f228",
      "parents": [
        "1d4ec642d9f00d4c531b1a4ae0613091ec1f8e9b"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Aug 02 13:17:27 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Oct 21 12:39:23 2011 +0100"
      },
      "message": "GFS2: Fix inode allocation error path\n\nIf we have got far enough through the inode allocation code\npath that an inode has already been allocated, then we must\ncall iput to dispose of it, if an error occurs during a\nlater part of the process. This will always be the final iput\nsince there will be no other references to the inode.\n\nUnlike when the inode has been unlinked, its block state will\nbe GFS2_BLKST_INODE rather than GFS2_BLKST_UNLINKED so we need\nto skip the test in -\u003eevict_inode() for this one case in order\nto ensure that it will be deallocated correctly. This patch adds\na new flag in order to ensure that this will happen correctly.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "5a2f3a02aea164f4f59c0c3497772090a411b462",
      "tree": "d3ebe03d4f97575290087843960baa01de3acd0a",
      "parents": [
        "1d568ab068c021672d6cd7f50f92a3695a921ffb",
        "817b54aa45db03437c6d09a7693fc6926eb8e822"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Aug 09 10:31:03 2011 +1000"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Aug 09 10:31:03 2011 +1000"
      },
      "message": "Merge branch \u0027next-evm\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/zohar/ima-2.6 into next\n\nConflicts:\n\tfs/attr.c\n\nResolve conflict manually.\n\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "4e34e719e457f2e031297175410fc0bd4016a085",
      "tree": "ab969a371e0d2efc6bfbf503ca6cdfce3af3bf6c",
      "parents": [
        "edde854e8bb34a7f32fa993d721f1da0faf64165"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Jul 23 17:37:31 2011 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 25 14:30:23 2011 -0400"
      },
      "message": "fs: take the ACL checks to common code\n\nReplace the -\u003echeck_acl method with a -\u003eget_acl method that simply reads an\nACL from disk after having a cache miss.  This means we can replace the ACL\nchecking boilerplate code with a single implementation in namei.c.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6c673ab393bc18e8bff729cd04cf384d15e72a04",
      "tree": "e1eed0667626c8b092d27500560808d834d21e8d",
      "parents": [
        "79ac5a46c5c1c17476fbf84b4d4600d6d565defd"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 17 10:22:27 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:48:02 2011 -0400"
      },
      "message": "simplify gfs2_lookup()\n\nd_splice_alias() will DTRT when given NULL or ERR_PTR\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "10556cb21a0d0b24d95f00ea6df16f599a3345b2",
      "tree": "3d7d8dfba807805a55c154f1850717bf3b49f343",
      "parents": [
        "2830ba7f34ebb27c4e5b8b6ef408cd6d74860890"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:28:19 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:24 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to -\u003epermission()\n\nnot used by the instances anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2830ba7f34ebb27c4e5b8b6ef408cd6d74860890",
      "tree": "bbcebc14bffd000f1dfcbf37e64f56d2f49581ac",
      "parents": [
        "7e40145eb111a5192e6d819f764db9d6828d1abb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:16:29 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:22 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to generic_permission()\n\nredundant; all callers get it duplicated in mask \u0026 MAY_NOT_BLOCK and none of\nthem removes that bit.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "178ea73521d64ba41d7aa5488fb9f549c6d4507d",
      "tree": "7fb6bfb6483577752e307a5bb2e3905658d44294",
      "parents": [
        "07b8ce1ee87d291ff564c02cf878fae973317a52"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 11:31:30 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:16 2011 -0400"
      },
      "message": "kill check_acl callback of generic_permission()\n\nits value depends only on inode and does not change; we might as\nwell store it in -\u003ei_op-\u003echeck_acl and be done with that.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9d8f13ba3f4833219e50767b022b82cd0da930eb",
      "tree": "3ba2367380d009111ea17696162a62320c88d144",
      "parents": [
        "0f2a55d5bb2372058275b0b343d90dd5d640d045"
      ],
      "author": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Mon Jun 06 15:29:25 2011 -0400"
      },
      "committer": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Mon Jul 18 12:29:38 2011 -0400"
      },
      "message": "security: new security_inode_init_security API adds function callback\n\nThis patch changes the security_inode_init_security API by adding a\nfilesystem specific callback to write security extended attributes.\nThis change is in preparation for supporting the initialization of\nmultiple LSM xattrs and the EVM xattr.  Initially the callback function\nwalks an array of xattrs, writing each xattr separately, but could be\noptimized to write multiple xattrs at once.\n\nFor existing security_inode_init_security() calls, which have not yet\nbeen converted to use the new callback function, such as those in\nreiserfs and ocfs2, this patch defines security_old_inode_init_security().\n\nSigned-off-by: Mimi Zohar \u003czohar@us.ibm.com\u003e\n"
    },
    {
      "commit": "f2741d9898269e565c220ec295a8f5c3756c7585",
      "tree": "36700a4cb6faee29ceae753474f0f0a9cbf899d7",
      "parents": [
        "160b4026dc3e75c0693d0123eca805e88cd200b6"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri May 13 12:11:17 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri May 13 12:11:17 2011 +0100"
      },
      "message": "GFS2: Move all locking inside the inode creation function\n\nNow that there are no longer any exceptions to the normal inode\ncreation code path, we can move the parts of the locking code\nwhich were duplicated in mkdir/mknod/create/symlink into the\ninode create function.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "160b4026dc3e75c0693d0123eca805e88cd200b6",
      "tree": "32aa1a6e23b09be65cabdbcd6be2a8fc3d50527f",
      "parents": [
        "e2d0a13bba051d7a9618b0952d91fac68175a71a"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri May 13 10:34:59 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri May 13 10:34:59 2011 +0100"
      },
      "message": "GFS2: Clean up symlink creation\n\nThis moves the symlink specific parts of inode creation\ninto the function where we initialise the rest of the\ndinode. As a result we have one less place where we need\nto look up the inode\u0027s buffer.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "e2d0a13bba051d7a9618b0952d91fac68175a71a",
      "tree": "f1a28237be9b253da551bb20911ef5e7d256e7cf",
      "parents": [
        "32e471ef1057e812856739d26b4a87d929fb8aa1"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri May 13 09:55:55 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri May 13 09:55:55 2011 +0100"
      },
      "message": "GFS2: Clean up mkdir\n\nThis moves the initialisation of the directory into the inode\ncreation functions to avoid having to duplicate the lookup\nof the inode\u0027s buffer.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "2ab9cd1c63b519e37b21b504376822be983badba",
      "tree": "6293f520ef56e77b5ad9de6d773b585643450ecf",
      "parents": [
        "64ea5402581485237d3b6e3a0cf2b364ad8bd580"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue May 10 13:12:49 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue May 10 13:12:49 2011 +0100"
      },
      "message": "GFS2: Rename ops_inode.c to inode.c\n\nThis is the final part of the ops_inode.c/inode.c reordering. We\nare left with a single file called inode.c which now contains\nall the inode operations, as expected.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "194c011fc4650d0dd1eecbc35bc26045108aca51",
      "tree": "1cb7769ab3df703336d17cc0835fc4a2132f51e6",
      "parents": [
        "d4b2cf1b0566eebfe39a6d70e9e4b5fa01ddaace"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 14:06:38 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 16:45:14 2011 +0100"
      },
      "message": "GFS2: Move most of the remaining inode.c into ops_inode.c\n\nThis is in preparation to remove inode.c and rename ops_inode.c\nto inode.c. Also most of the functions which were left in inode.c\nrelate to the creation and lookup of inodes. I\u0027m intending to work\non consolidating some of that code, and its easier when its all in\none place.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "94fb763b1a76a2000ad21f3119b05c90040acaf0",
      "tree": "72cb7fd210b8bb58e52403ba8c7fb35e93e2a5cc",
      "parents": [
        "3d6ecb7d16fd4248fce58387a982a0756ad3fcc2"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 13:36:10 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 16:44:29 2011 +0100"
      },
      "message": "GFS2: Remove gfs2_dinode_print() function\n\nThis function was intended for debugging purposes, but it is not very\nuseful. If we want to know what is on disk then all we need is a\nblock number and gfs2_edit can give us much better information about\nwhat is there. Otherwise, if we are interested in what is stored in\nthe in-core inode, it doesn\u0027t help us out there either.\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": "2baee03fb916563d7cc597e5460e4cb938815c52",
      "tree": "7fb2318e11be52f956c0b2af44a62a4746d034ab",
      "parents": [
        "588da3b3be8b3225c2dd192aa782bf6c5c32eb84"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 12:08:36 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon May 09 16:35:25 2011 +0100"
      },
      "message": "GFS2: Don\u0027t use gfs2_change_nlink in link syscall\n\nThere are three users of gfs2_change_nlink which add to the link\ncount. Two of these are about to be removed in later patches, so\nthis means that there will no callers, when that happens allowing\nremoval of that function, also in a later patch.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "d192a8e5c6fec4fe8cdafebccc415db4074dee88",
      "tree": "7c66540003f6aea894578f6786599bd08dcb9b7f",
      "parents": [
        "8f065d36508f283ee6cbeb05829f032d0b782a16"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu May 05 12:35:40 2011 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu May 05 12:35:40 2011 +0100"
      },
      "message": "GFS2: Double check link count under glock\n\nTo avoid any possible races relating to the link count, we need to\nrecheck it under the inode\u0027s glock in all cases where it matters.\nAlso to ensure we never get any nasty surprises, this patch also\nensures that once the link count has hit zero it can never be\nelevated by rereading in data from disk.\n\nThe only place we cannot provide a proper solution is in rename\nin the case where we are removing a target inode and we discover\nthat the target inode has been already unlinked on another node.\nThe race window is very small, and we return EAGAIN in this case\nto indicate what has happened. The proper solution would be to move\nthe lookup parts of rename from the vfs into library calls which\nthe fs could call directly, but that is potentially a very big job\nand this fix should cover most cases for now.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "75d5cfbe4b78cc26af7b042e23f61700b50bc294",
      "tree": "189346d6c6fb7e72921d7ace2871bfd8780110da",
      "parents": [
        "bc015cb84129eb1451913cfebece270bf7a39e0f"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Jan 19 09:42:40 2011 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jan 21 09:39:24 2011 +0000"
      },
      "message": "GFS2: Post-VFS scale update for RCU path walk\n\nWe can allow a few more cases to use RCU path walking than\noriginally allowed. It should be possible to also enable\nRCU path walking when the glock is already cached. Thats\na bit more complicated though, so left for a future patch.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@gmail.com\u003e\n"
    },
    {
      "commit": "2fe17c1075836b66678ed2a305fd09b6773883aa",
      "tree": "eb5287be8138686682eef9622872cfc7657e0664",
      "parents": [
        "64c23e86873ee410554d6d1c76b60da47025e96f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jan 14 13:07:43 2011 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 17 02:25:31 2011 -0500"
      },
      "message": "fallocate should be a file operation\n\nCurrently all filesystems except XFS implement fallocate asynchronously,\nwhile XFS forced a commit.  Both of these are suboptimal - in case of O_SYNC\nI/O we really want our allocation on disk, especially for the !KEEP_SIZE\ncase where we actually grow the file with user-visible zeroes.  On the\nother hand always commiting the transaction is a bad idea for fast-path\nuses of fallocate like for example in recent Samba versions.   Given\nthat block allocation is a data plane operation anyway change it from\nan inode operation to a file operation so that we have the file structure\navailable that lets us check for O_SYNC.\n\nThis also includes moving the code around for a few of the filesystems,\nand remove the already unnedded S_ISDIR checks given that we only wire\nup fallocate for regular files.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "64c23e86873ee410554d6d1c76b60da47025e96f",
      "tree": "b30c5ff8782ebfdec6956d7834f796731fd3a1d4",
      "parents": [
        "eb745dbccce56f1bbe3f80b95ad2a325145171c2"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jan 14 13:07:30 2011 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 17 02:25:30 2011 -0500"
      },
      "message": "make the feature checks in -\u003efallocate future proof\n\nInstead of various home grown checks that might need updates for new\nflags just check for any bit outside the mask of the features supported\nby the filesystem.  This makes the check future proof for any newly\nadded flag.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9ecf639a9686c9c7e3fd2cd72817ca490c658e6f",
      "tree": "bc6e56f9fbc813914285ffed9f2da72a3e7282a5",
      "parents": [
        "23a8519b55235660f6fb7d6f394a912de9d23208"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Wed Nov 17 20:46:20 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 12 20:16:44 2011 -0500"
      },
      "message": "Gfs2: fail if we try to use hole punch\n\nGfs2 doesn\u0027t have the ability to punch holes yet, so make sure we return\nEOPNOTSUPP if we try to use hole punching through fallocate.  This support can\nbe added later.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "41ced6dcf3dc6b901716fda0dc8de3536da4d39b",
      "tree": "cffec5e5bde8d8a580c03cef8eea2ddb9a821d8a",
      "parents": [
        "1c929cfe6d8f2087a337a868fbf6c38d56bb4889"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Dec 18 12:06:56 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 12 20:02:46 2011 -0500"
      },
      "message": "switch gfs2, close races\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b4a45f5fe8078bfc10837dbd5b98735058bc4698",
      "tree": "df6f13a27610a3ec7eb4a661448cd779a8f84c79",
      "parents": [
        "01539ba2a706ab7d35fc0667dff919ade7f87d63",
        "b3e19d924b6eaf2ca7d22cba99a517c5171007b6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 08:56:33 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 07 08:56:33 2011 -0800"
      },
      "message": "Merge branch \u0027vfs-scale-working\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/npiggin/linux-npiggin\n\n* \u0027vfs-scale-working\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/npiggin/linux-npiggin: (57 commits)\n  fs: scale mntget/mntput\n  fs: rename vfsmount counter helpers\n  fs: implement faster dentry memcmp\n  fs: prefetch inode data in dcache lookup\n  fs: improve scalability of pseudo filesystems\n  fs: dcache per-inode inode alias locking\n  fs: dcache per-bucket dcache hash locking\n  bit_spinlock: add required includes\n  kernel: add bl_list\n  xfs: provide simple rcu-walk ACL implementation\n  btrfs: provide simple rcu-walk ACL implementation\n  ext2,3,4: provide simple rcu-walk ACL implementation\n  fs: provide simple rcu-walk generic_check_acl implementation\n  fs: provide rcu-walk aware permission i_ops\n  fs: rcu-walk aware d_revalidate method\n  fs: cache optimise dentry and inode for rcu-walk\n  fs: dcache reduce branches in lookup path\n  fs: dcache remove d_mounted\n  fs: fs_struct use seqlock\n  fs: rcu-walk for path lookup\n  ...\n"
    },
    {
      "commit": "b74c79e99389cd79b31fcc08f82c24e492e63c7e",
      "tree": "763c6b412517306670bc625e90035f2d16bb739f",
      "parents": [
        "34286d6662308d82aed891852d04c7c3a2649b16"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:58 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: provide rcu-walk aware permission i_ops\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fb045adb99d9b7c562dc7fef834857f78249daa1",
      "tree": "1fd6a4024fffeec568abe100d730589bfdb81c38",
      "parents": [
        "5f57cbcc02cf18f6b22ef4066bb10afeb8f930ff"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:55 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:28 2011 +1100"
      },
      "message": "fs: dcache reduce branches in lookup path\n\nReduce some branches and memory accesses in dcache lookup by adding dentry\nflags to indicate common d_ops are set, rather than having to check them.\nThis saves a pointer memory access (dentry-\u003ed_op) in common path lookup\nsituations, and saves another pointer load and branch in cases where we\nhave d_op but not the particular operation.\n\nPatched with:\n\ngit grep -E \u0027[.\u003e]([[:space:]])*d_op([[:space:]])*\u003d\u0027 | xargs sed -e \u0027s/\\([^\\t ]*\\)-\u003ed_op \u003d \\(.*\\);/d_set_d_op(\\1, \\2);/\u0027 -e \u0027s/\\([^\\t ]*\\)\\.d_op \u003d \\(.*\\);/d_set_d_op(\\\u0026\\1, \\2);/\u0027 -i\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "2ae51ed7b548c1d943d080da617515e801ea5c3e",
      "tree": "b2ed48042eef41f89d8316b70bbbb6c936d3dc76",
      "parents": [
        "9e55cd53728719ac3a3234a6618259ab8e203a10"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Nov 10 15:14:57 2010 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 10:30:19 2010 +0000"
      },
      "message": "GFS2: Clean up duplicated setattr code\n\nWhile preparing the last patch I noticed that the gfs2_setattr_simple\ncode had been duplicated into two other places. This patch updates\nthose to call gfs2_setattr_simple rather than open coding it.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "9e55cd53728719ac3a3234a6618259ab8e203a10",
      "tree": "65888b1c6fafcc94520891c810384dbcd0e2ba0c",
      "parents": [
        "cc18152eb7c27653199546bd14e991a451ab8d1b"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 09 14:09:53 2010 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 10:22:48 2010 +0000"
      },
      "message": "GFS2: Remove unreachable calls to vmtruncate\n\nSuggested-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "7de9c6ee3ecffd99e1628e81a5ea5468f7581a1f",
      "tree": "88787e77ba8a253d0a26aeda4bd5e58532d592e0",
      "parents": [
        "646ec4615cd05972581c9c5342ed7a1e77df17bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 23 11:11:40 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "new helper: ihold()\n\nClones an existing reference to inode; caller must already hold one.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ebdec241d509cf69f6ebf1ecdc036359d3dbe154",
      "tree": "e3c23f9b213936cb8501c83f55522a01f4a69aca",
      "parents": [
        "56b0dacfa2b8416815a2f2a5f4f51e46be4cf14c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Oct 06 10:47:23 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:18:20 2010 -0400"
      },
      "message": "fs: kill block_prepare_write\n\n__block_write_begin and block_prepare_write are identical except for slightly\ndifferent calling conventions.  Convert all callers to the __block_write_begin\ncalling conventions and drop block_prepare_write.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "46290341cd649c2bfb69e5067c1804c0395c83a1",
      "tree": "1ef4a9c1d158ec182645d4be4cb3357a52a4404d",
      "parents": [
        "feb47ca9314666d920855b8a235032dea2b2caa4"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Thu Sep 30 10:34:00 2010 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 30 17:23:03 2010 +0100"
      },
      "message": "GFS2 fatal: filesystem consistency error on rename\n\nThis patch fixes a GFS2 problem whereby the first rename after a\nmount can result in a file system consistency error being flagged\nimproperly and cause the file system to withdraw.  The problem is\nthat the rename code tries to run the rgrp list with function\ngfs2_blk2rgrpd before the rgrp list is guaranteed to be read in\nfrom disk.  The patch makes the rename function hold the rindex\nglock (as the gfs2_unlink code does today) which reads in the rgrp\nlist if need be.  There were a total of three places in the rename\ncode that improperly referenced the rgrp list without the rindex\nglock and this patch fixes all three.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "bf97b6734e027cc18abad420ab88f861f65d7816",
      "tree": "74892640ed482487f3bc630ad4fd20e62dec2c54",
      "parents": [
        "d0795f912318f65b800c6b619d749c3bf7c930fb"
      ],
      "author": {
        "name": "Benjamin Marzinski",
        "email": "bmarzins@redhat.com",
        "time": "Mon Sep 27 16:00:04 2010 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Sep 28 09:44:24 2010 +0100"
      },
      "message": "GFS2: reserve more blocks for transactions\n\nSome of the functions in GFS2 were not reserving space in the transaction for\nthe resource group header and the resource groups bitblocks that get added\nwhen you do allocation. GFS2 now makes sure to reserve space for the\nresource group header and either all the bitblocks in the resource group, or\none for each block that it may allocate, whichever is smaller using the new\ngfs2_rg_blocks() inline function.\n\nSigned-off-by: Benjamin Marzinski \u003cbmarzins@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "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": "fe08d5a89726675a920b0e9bbbe849c46b27a6e5",
      "tree": "bb7b57316a91d3a3cb66649e910c9609f35a3167",
      "parents": [
        "3921120e757f9167f3fcd3a1781239824471b14d"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Aug 23 11:54:45 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:19:35 2010 +0100"
      },
      "message": "GFS2: Fix whitespace in previous patch\n\nRemoves the offending space\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "3921120e757f9167f3fcd3a1781239824471b14d",
      "tree": "4b5f8e9e5376ae6a64b9757a62392b89a6316e26",
      "parents": [
        "9a3f236d40a99ea8dca3df40d8ef67631057cad6"
      ],
      "author": {
        "name": "Benjamin Marzinski",
        "email": "bmarzins@redhat.com",
        "time": "Fri Aug 20 00:21:02 2010 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:19:17 2010 +0100"
      },
      "message": "GFS2: fallocate support\n\nThis patch adds support for fallocate to gfs2.  Since the gfs2 does not support\nuninitialized data blocks, it must write out zeros to all the blocks.  However,\nsince it does not need to lock any pages to read from, gfs2 can write out the\nzero blocks much more efficiently.  On a moderately full filesystem, fallocate\nworks around 5 times faster on average.  The fallocate call also allows gfs2 to\nadd blocks to the file without changing the filesize, which will make it\npossible for gfs2 to preallocate space for the rindex file, so that gfs2 can\ngrow a completely full filesystem.\n\nSigned-off-by: Benjamin Marzinski \u003cbmarzins@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "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": "ff8f33c8b30d7b7efdcf2548c7f6e64db6a89b29",
      "tree": "a21bad4d2b48f743dd96277b1c966c35aefe1ce2",
      "parents": [
        "2422084a94fcd5038406261b331672a13c92c050"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Aug 11 09:37:53 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:18:16 2010 +0100"
      },
      "message": "GFS2: New truncate sequence\n\nThis updates GFS2\u0027s truncate code to use the new truncate\nsequence correctly. This is a stepping stone to being\nable to remove ip-\u003ei_disksize in favour of using i_size\neverywhere now that the two sizes are always identical.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "2c27c65ed0696f0b5df2dad2cf6462d72164d547",
      "tree": "7d9036e3dea98938f7fd7074366ee73929e9b2e5",
      "parents": [
        "db78b877f7744bec4a9d9f9e7d10da3931d7cd39"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:30:04 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:39 2010 -0400"
      },
      "message": "check ATTR_SIZE contraints in inode_change_ok\n\nMake sure we check the truncate constraints early on in -\u003esetattr by adding\nthose checks to inode_change_ok.  Also clean up and document inode_change_ok\nto make this obvious.\n\nAs a fallout we don\u0027t have to call inode_newsize_ok from simple_setsize and\nsimplify it down to a truncate_setsize which doesn\u0027t return an error.  This\nsimplifies a lot of setattr implementations and means we use truncate_setsize\nalmost everywhere.  Get rid of fat_setsize now that it\u0027s trivial and mark\next2_setsize static to make the calling convention obvious.\n\nKeep the inode_newsize_ok in vmtruncate for now as all callers need an\naudit for its removal anyway.\n\nNote: setattr code in ecryptfs doesn\u0027t call inode_change_ok at all and\nneeds a deeper audit, but that is left for later.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1025774ce411f2bd4b059ad7b53f0003569b74fa",
      "tree": "2be221c205cb5579652a6063e8ee27d1c72d1bbd",
      "parents": [
        "eef2380c187890816b73b1a4cb89a09203759469"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:30:02 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:37 2010 -0400"
      },
      "message": "remove inode_setattr\n\nReplace inode_setattr with opencoded variants of it in all callers.  This\nmoves the remaining call to vmtruncate into the filesystem methods where it\ncan be replaced with the proper truncate sequence.\n\nIn a few cases it was obvious that we would never end up calling vmtruncate\nso it was left out in the opencoded variant:\n\n spufs: explicitly checks for ATTR_SIZE earlier\n btrfs,hugetlbfs,logfs,dlmfs: explicitly clears ATTR_SIZE earlier\n ufs: contains an opencoded simple_seattr + truncate that sets the filesize just above\n\nIn addition to that ncpfs called inode_setattr with handcrafted iattrs,\nwhich allowed to trim down the opencoded variant.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "15c6fd9786dfaab43547bf60df6fa63170fb64fc",
      "tree": "afd997b3402761e28b6c39f414fbd93c69fdcdce",
      "parents": [
        "7bb46a6734a7e1ad4beaecc11cae7ed3ff81d30f"
      ],
      "author": {
        "name": "npiggin@suse.de",
        "email": "npiggin@suse.de",
        "time": "Thu May 27 01:05:34 2010 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:15:42 2010 -0400"
      },
      "message": "kill spurious reference to vmtruncate\n\nLots of filesystems calls vmtruncate despite not implementing the old\n-\u003etruncate method.  Switch them to use simple_setsize and add some\ncomments about the truncate code where it seems fitting.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c177c2ac8c5aa83ed181db44543c3b38fd1f17a6",
      "tree": "76d0c342d83a8a24586dda2e39884bdf18c855df",
      "parents": [
        "8737c9305bd5602b11f7eb4655d5695d4a42a0c6"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jan 14 00:59:16 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 03 13:00:22 2010 -0500"
      },
      "message": "Switch gfs2 to nd_set_link()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0f585f14d4e34ab701283e9237ac7695cd7c9e31",
      "tree": "7ded56c8f9ddc84d4930a5a9f0f52c9b1464f6e1",
      "parents": [
        "066000dd856709b6980123eb39b957fe26993f7b"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Tue Jan 12 03:36:57 2010 +0900"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Jan 12 09:30:15 2010 +0000"
      },
      "message": "GFS2: Fix refcnt leak on gfs2_follow_link() error path\n\nIf -\u003efollow_link handler return the error, it should decrement\nnd-\u003epath refcnt.\n\nThis patch fix it.\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "24b977b5fdea09bf356428870d32c09a275c8a3e",
      "tree": "60b93ab4d8ac034952d658a35057d5e729bd331a",
      "parents": [
        "56aa616a03feca630d5afce647367a5d8cfc67b8"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Dec 09 13:55:12 2009 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jan 08 13:42:42 2010 +0000"
      },
      "message": "GFS2: Fix locking bug in rename\n\nThe rename code was taking a resource group lock in cases where\nit wasn\u0027t actually needed, this caused problems if the rename\nwas resulting in an inode being unlinked. The patch ensures that\nwe only take the rgrp lock early if it is really needed.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "2bcd57ab61e7cabed626226a3771617981c11ce1",
      "tree": "687c0c35fb2a632cb8c56b2729f9c3873c9461bd",
      "parents": [
        "95e0d86badc410d525ea7218fd32df7bfbf9c837"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Sep 24 04:22:25 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 23 18:13:10 2009 -0700"
      },
      "message": "headers: utsname.h redux\n\n* remove asm/atomic.h inclusion from linux/utsname.h --\n   not needed after kref conversion\n * remove linux/utsname.h inclusion from files which do not need it\n\nNOTE: it looks like fs/binfmt_elf.c do not need utsname.h, however\ndue to some personality stuff it _is_ needed -- cowardly leave ELF-related\nheaders and files alone.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "307cf6e63cfa5025589ea1a06db44439a43819ff",
      "tree": "a1c8be1c2af112dc055a16569487cdcd99ebfdb2",
      "parents": [
        "40b78a322365aa1d87770200f7fc7de3b361c11a"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Aug 26 18:51:04 2009 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Aug 26 18:51:04 2009 +0100"
      },
      "message": "GFS2: Rename eattr.[ch] as xattr.[ch]\n\nUse the more conventional name for the extended attribute\nsupport code. Update all the places which care.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "40b78a322365aa1d87770200f7fc7de3b361c11a",
      "tree": "9e33daa30113741d9ef716f3723ac1d9690e33cf",
      "parents": [
        "b6ed2e03df1e2c6ee41cf0e2e2699f2410671916"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Aug 26 18:41:32 2009 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Aug 26 18:41:32 2009 +0100"
      },
      "message": "GFS2: Clean up of extended attribute support\n\nThis has been on my list for some time. We need to change the way\nin which we handle extended attributes to allow faster file creation\ntimes (by reducing the number of transactions required) and the\nextended attribute code is the main obstacle to this.\n\nIn addition to that, the VFS provides a way to demultiplex the xattr\ncalls which we ought to be using, rather than rolling our own. This\npatch changes the GFS2 code to use that VFS feature and as a result\nthe code shrinks by a couple of hundred lines or so, and becomes\neasier to read.\n\nI\u0027m planning on doing further clean up work in this area, but this\npatch is a good start. The cleaned up code also uses the more usual\n\"xattr\" shorthand, I plan to eliminate the use of \"eattr\" eventually\nand in the mean time it serves as a flag as to which bits of the code\nhave been updated.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "cd0120751d631bc4b99f180c1c22de2caca98207",
      "tree": "b0f600750681c8f6bf8e0bd4d53901e5e9172271",
      "parents": [
        "970343cd49048446da4189986cf960273588d71a"
      ],
      "author": {
        "name": "Roel Kluin",
        "email": "roel.kluin@gmail.com",
        "time": "Sat Aug 22 19:26:42 2009 +0200"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Aug 24 10:41:44 2009 +0100"
      },
      "message": "GFS2: jumping to wrong label?\n\nAlso a gfs2_glock_dq() is required here.\n\nSigned-off-by: Roel Kluin \u003croel.kluin@gmail.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "87ec21741138bb42e7f943bb142b1d8567c10925",
      "tree": "d173754b440f7b14b2b29334ac7addc4b9621286",
      "parents": [
        "536baf02f650f4547f105386878b4736fbc181e8"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri May 22 10:54:50 2009 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri May 22 10:54:50 2009 +0100"
      },
      "message": "GFS2: Move gfs2_unlink_ok into ops_inode.c\n\nAnother function which is only called from one ops_inode.c so\nwe move it and make it static.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "536baf02f650f4547f105386878b4736fbc181e8",
      "tree": "eeb326e76515c074f6eb0ae63deb598605632523",
      "parents": [
        "2286dbfad1fb622ee2691537e5caaedee4618860"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri May 22 10:48:59 2009 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri May 22 10:48:59 2009 +0100"
      },
      "message": "GFS2: Move gfs2_readlinki into ops_inode.c\n\nMove gfs2_readlinki into ops_inode.c and make it static\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "2286dbfad1fb622ee2691537e5caaedee4618860",
      "tree": "da16646efb25515c3b6865b84bf3485a4714caee",
      "parents": [
        "9e6e0a128bca0a151d8d3fbd9459b22fc21cfebb"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri May 22 10:45:09 2009 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri May 22 10:45:09 2009 +0100"
      },
      "message": "GFS2: Move gfs2_rmdiri into ops_inode.c\n\nMove gfs2_rmdiri() into ops_inode.c and make it static.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "5cf32524de745c56e1411d63eccf23fef1709d73",
      "tree": "300c28954930875a4016d51fa7b7def93c7dc1bd",
      "parents": [
        "7fa5d20d1a5e60ef7e453993b67b26c87dc09f07"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Mar 31 16:06:27 2009 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Apr 15 10:15:38 2009 +0100"
      },
      "message": "GFS2: Fix symlink creation race\n\nIn certain cases symlinks can appear to have zero size if a lookup\non the inode occurs within a certain (very short) time after the\nsymlink has been created. The symlink is correctly created on disk\nbut appears to have zero size when stat()ed. This patch closes the\nrace and prevents incorrect sizes appearing.\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": "b276058371f5c2ad92f9f27373a72b219ed580ed",
      "tree": "a8a39f45c3bee6e523d043eecd636249bc180b1b",
      "parents": [
        "e9079cce201784632aed4b1a3121ee38c1ced0b6"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Oct 14 16:05:55 2008 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jan 05 07:38:48 2009 +0000"
      },
      "message": "GFS2: Rationalise header files\n\nMove the contents of some headers which contained very\nlittle into more sensible places, and remove the original\nheader files. This should make it easier to find things.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "e9079cce201784632aed4b1a3121ee38c1ced0b6",
      "tree": "6d99fc45afb3889e5835d713948226d7548d6750",
      "parents": [
        "fe0bdec68b77020281dc814805edfe594ae89e0f"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Oct 14 14:43:29 2008 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jan 05 07:38:46 2009 +0000"
      },
      "message": "GFS2: Support for FIEMAP ioctl\n\nThis patch implements the FIEMAP ioctl for GFS2. We can use the generic\ncode (aside from a lock order issue, solved as per Ted Tso\u0027s suggestion)\nfor which I\u0027ve introduced a new variant of the generic function. We also\nhave one exception to deal with, namely stuffed files, so we do that\n\"by hand\", setting all the required flags.\n\nThis has been tested with a modified (I could only find an old version) of\nEric\u0027s test program, and appears to work correctly.\n\nThis patch does not currently support FIEMAP of xattrs, but the plan is to add\nthat feature at some future point.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Theodore Tso \u003ctytso@mit.edu\u003e\nCc: Eric Sandeen \u003csandeen@redhat.com\u003e\n"
    },
    {
      "commit": "3516586a424ea5727be089da6541cbd5644f0497",
      "tree": "cb55c6262e066c393917735021aa2bd801f6dd16",
      "parents": [
        "2c552d81363e0dac66d478046cc8a3948a67eae9"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Aug 05 03:00:49 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 23 05:12:56 2008 -0400"
      },
      "message": "[PATCH] make O_EXCL in nd-\u003eintent.flags visible in nd-\u003eflags\n\nNew flag: LOOKUP_EXCL.  Set before doing the final step of pathname\nresolution on the paths that have LOOKUP_CREATE and O_EXCL.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0188d6c5807b65e2e20dcb75a668efbe5418b27e",
      "tree": "419ee0e74cded399d2e4b9adf4dacf9f9dd31a3e",
      "parents": [
        "72dbf4790fc6736f9cb54424245114acf0b0038c"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Aug 26 09:38:26 2008 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Aug 27 13:33:10 2008 +0100"
      },
      "message": "GFS2: Fix \u0026 clean up GFS2 rename\n\nThis patch fixes a locking issue in the rename code by ensuring that we hold\nthe per sb rename lock over both directory and \"other\" renames which involve\ndifferent parent directories.\n\nAt the same time, this moved the (only called from one place) function\ngfs2_ok_to_move into the file that its called from, so we can mark it\nstatic. This should make a code a bit easier to follow.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Peter Staubach \u003cstaubach@redhat.com\u003e\n"
    },
    {
      "commit": "72dbf4790fc6736f9cb54424245114acf0b0038c",
      "tree": "9ed5bd66844fa0950d947bc5673292114e58e9ac",
      "parents": [
        "9b8df98fc8973ad1c5f0d7c4cf71c7fb84fe22c5"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Tue Aug 12 13:39:29 2008 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Aug 13 10:00:12 2008 +0100"
      },
      "message": "GFS2: rm on multiple nodes causes panic\n\nThis patch fixes a problem whereby simultaneous unlink, rmdir,\nrename and link operations (e.g. rm -fR *) from multiple nodes\non the same GFS2 file system can cause kernel panics, hangs,\nand/or memory corruption.  It also gets rid of all the non-rgrp\ncalls to gfs2_glock_nq_m.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "a569c711f63995ad80c23918525111e0cdb0bc73",
      "tree": "38186f0201614b6b1e71bea0708ef35814825ea6",
      "parents": [
        "2ad94ae654f5eb72fd3260b706aea645cf4a7791"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 23 14:42:05 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 26 20:53:36 2008 -0400"
      },
      "message": "[PATCH] don\u0027t pass nameidata to gfs2_lookupi()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e6305c43eda10ebfd2ad9e35d6e172ccc7bb3695",
      "tree": "8a95bd0e27fb3ce895cca9ef91af2e1605e4cdab",
      "parents": [
        "1bd5191d9f5d1928c4efdf604c4164b04bb88dbe"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 15 21:03:57 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 26 20:53:14 2008 -0400"
      },
      "message": "[PATCH] sanitize -\u003epermission() prototype\n\n* kill nameidata * argument; map the 3 bits in -\u003eflags anybody cares\n  about to new MAY_... ones and pass with the mask.\n* kill redundant gfs2_iop_permission()\n* sanitize ecryptfs_permission()\n* fix remaining places where -\u003epermission() instances might barf on new\n  MAY_... found in mask.\n\nThe obvious next target in that direction is permission(9)\n\nfolded fix for nfs_permission() breakage from Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f58ba889106af60f52af792efbe1973e458a2138",
      "tree": "f81426c7f611b74dec685cd416d3da8e7fe647d2",
      "parents": [
        "f17172e00167238cc5e4f61ac4e78c68e5c558ec"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "miklos@szeredi.hu",
        "time": "Wed Jul 02 21:12:01 2008 +0200"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Jul 03 10:22:01 2008 +0100"
      },
      "message": "[GFS2] don\u0027t call permission()\n\nGFS2 calls permission() to verify permissions after locks on the files\nhave been taken.\n\nFor this it\u0027s sufficient to call gfs2_permission() instead.  This\nresults in the following changes:\n\n  - IS_RDONLY() check is not performed\n  - IS_IMMUTABLE() check is not performed\n  - devcgroup_inode_permission() is not called\n  - security_inode_permission() is not called\n\nIS_RDONLY() should be unnecessary anyway, as the per-mount read-only\nflag should provide protection against read-only remounts during\noperations.  do_gfs2_set_flags() has been fixed to perform\nmnt_want_write()/mnt_drop_write() to protect against remounting\nread-only.\n\nIS_IMMUTABLE has been added to gfs2_permission()\n\nRepeating the security checks seems to be pointless, as they don\u0027t\nnormally change, and if they do, it\u0027s independent of the filesystem\nstate.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "d82661d96993ac4efc1d54259ea85ffcd9b8bec6",
      "tree": "0a42b5a3ff34839673e0007fca4335f18078803a",
      "parents": [
        "860b25d4a913a00331d333f8e207a088c7a1b84a"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 10 15:34:50 2008 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 31 10:41:36 2008 +0100"
      },
      "message": "[GFS2] Streamline quota lock/check for no-quota case\n\nThis patch streamlines the quota checking in the \"no quota\" case by\nmaking the check inline in the calling function, thus reducing the\nnumber of function calls. Eventually we might be able to remove the\nchecks from the gfs2_quota_lock() and gfs2_quota_check() functions, but\ncurrently we can\u0027t as there are a very few places in the code which need\nto call these functions directly still.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Abhijith Das \u003cadas@redhat.com\u003e\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": "d83225d45d2b76175279abb2a3d7ee325a09aba8",
      "tree": "e6fc40998a7e7e0c7a22b2e0f29149ad47e0e2b0",
      "parents": [
        "7dc2cf1c8ffbd471722f1aa479bc68d4df1c9edc"
      ],
      "author": {
        "name": "Denis Cheng",
        "email": "crquan@gmail.com",
        "time": "Tue Feb 26 15:25:03 2008 +0800"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 31 10:41:20 2008 +0100"
      },
      "message": "[GFS2] remove gfs2_dev_iops\n\nstruct inode_operations gfs2_dev_iops is always the same as gfs2_file_iops,\nsince Jan 2006, when GFS2 merged into mainstream kernel.\n\nSo one of them could be removed.\n\nSigned-off-by: Denis Cheng \u003ccrquan@gmail.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "7afd88d9166a752b52517648bcbe923e05d393fc",
      "tree": "2fb945189e3cb1be7ad007088f8ec86e9f67ece6",
      "parents": [
        "60b779cfc1fa52034a996ee12a23b62d32e86000"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Feb 22 16:07:18 2008 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Mar 31 10:41:12 2008 +0100"
      },
      "message": "[GFS2] Fix a page lock / glock deadlock\n\nWe\u0027ve previously been using a \"try lock\" in readpage on the basis that\nit would prevent deadlocks due to the inverted lock ordering (our normal\nlock ordering is glock first and then page lock). Unfortunately tests\nhave shown that this isn\u0027t enough. If the glock has a demote request\nqueued such that run_queue() in the glock code tries to do a demote when\nits called under readpage then it will try and write out all the dirty\npages which requires locking them. This then deadlocks with the page\nlocked by readpage.\n\nThe solution is to always require two calls into readpage. The first\nunlocks the page, gets the glock and returns AOP_TRUNCATED_PAGE, the\nsecond does the actual readpage and unlocks the glock \u0026 page as\nrequired.\n\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": "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": "9656b2c14c6ee0806c90a6be41dec71117fc8f50",
      "tree": "3e093571e695bf780885f36caec9594392da31fc",
      "parents": [
        "0811a127cb83ad2e0355e5e3e30164d7ef0f2d65"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Jan 08 08:14:30 2008 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jan 25 08:17:31 2008 +0000"
      },
      "message": "[GFS2] Fix problems relating to execution of files on GFS2\n\nThis patch fixes a couple of problems which affected the execution of files\non GFS2. The first is that there was a corner case where inodes were not\nalways uptodate at the point at which permissions checks were being carried\nout, this was resulting in refusal of execute permission, but only on the\nfirst lookup, subsequent requests worked correctly. The second was a problem\nrelating to incorrect updating of file sizes which was introduced with the\nwrite_begin/end code for GFS2 a little while back.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Abhijith Das \u003cadas@redhat.com\u003e\n"
    },
    {
      "commit": "16615be18cadf53ee6f8a4f0bdd647f0753421b1",
      "tree": "670c75e931e6d606211f338ee5e8b1d603c96521",
      "parents": [
        "55c0c4ac0be144014651b19e77c9b77f367955de"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 17 10:59:52 2007 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Oct 10 08:56:24 2007 +0100"
      },
      "message": "[GFS2] Clean up journaled data writing\n\nThis patch cleans up the code for writing journaled data into the log.\nIt also removes the need to allocate a small \"tag\" structure for each\nblock written into the log. Instead we just keep count of the outstanding\nI/O so that we can be sure that its all been written at the correct time.\nAnother result of this patch is that a number of ll_rw_block() calls\nhave become submit_bh() calls, closing some races at the same time.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "8497a46e178addb27ad1c981befaa17ca788b5c3",
      "tree": "a2793792fb63da1aa582b66e9ae1f05dbb90c00c",
      "parents": [
        "e9bd2b3bafd29bf75522546207f0bba0ec4515c2"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Sun Aug 26 14:23:56 2007 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Oct 10 08:55:53 2007 +0100"
      },
      "message": "[GFS2] Correct lock ordering in unlink\n\nThis patch corrects the lock ordering in unlink to be the same as\nthat in the rest of GFS2, i.e. parent -\u003e child -\u003e rgrp.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "afd0942d98f74296b74993739e41d2ca7cb9fd5a",
      "tree": "bf2568363daa826db9a8c00eb9038f67b0ab0005",
      "parents": [
        "aa0481e58a9a97a97035725a712920b5fe32f348"
      ],
      "author": {
        "name": "Steve French",
        "email": "smfrench@gmail.com",
        "time": "Fri Jul 20 13:07:26 2007 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Oct 10 08:54:46 2007 +0100"
      },
      "message": "[GFS2] GFS2 not checking pointer on create when running under nfsd\n\nWhen looking at an unrelated problem, I noticed that nfsd does not\nset nameidata pointer on create (ie nd is NULL).  This should\ncause an oops in some cases in which when NFSd is mounted over GFS2.\n\nSigned-off-by: Steve French \u003csfrench@us.ibm.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "090ffaa55dacea774af9ee378d09e47fb7cea9ff",
      "tree": "5482762609a8c2e3a312434eb7e997e5b72912f3",
      "parents": [
        "97d848365e603def43c69e160937f073bf9cf02e"
      ],
      "author": {
        "name": "Wendy Cheng",
        "email": "wcheng@redhat.com",
        "time": "Wed Jun 27 11:00:03 2007 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jul 09 08:23:59 2007 +0100"
      },
      "message": "[GFS2] inode size inconsistency\n\nThis should have been part of the NFS patch #1 but somehow I missed it\nwhen packaging the patches. It is not a critical issue as the others (I\nhope). RHEL 5.1 31.el5 kernel runs fine without this change.\n\nOur truncate code is chopped into two parts, one for vfs inode changes\n(in vmtruncate()) and one of gfs inode (in gfs2_truncatei()). These two\noperatons are, unfortunately, not atomic. So it could happens that\nvmtruncate() succeeds (inode-\u003ei_size is changed) but gfs2_truncatei\nfails (say kernel temporarily out of memory). This would leave gfs inode\ni_di.di_size out of sync with vfs inode i_size. It will later confuse\ngfs2_commit_write() if a write is issued. Last time I checked, it will\ncause file corruption.\n\nSigned-off-by: S. Wendy Cheng \u003cwcheng@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "ffed8ab342e39b8b5f4d5c94c37a708e225ffcd8",
      "tree": "9252837c88f117abbd5f1f6252d116f022067531",
      "parents": [
        "44f487a5536a3afd96a9f571de24c36559e9ae82"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Jun 07 11:29:35 2007 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jul 09 08:23:19 2007 +0100"
      },
      "message": "[GFS2] Fix typo in rename of directories\n\nA typo caused us to pass a NULL pointer when renaming directories. It\nwas accidentally introduced in: [GFS2] Clean up inode number handling\n\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"
    }
  ],
  "next": "cd354f1ae75e6466a7e31b727faede57a1f89ca5"
}
