)]}'
{
  "log": [
    {
      "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": "275220f0fcff1adf28a717076e00f575edf05fda",
      "tree": "d249bccc80c64443dab211639050c4fb14332648",
      "parents": [
        "fe3c560b8a22cb28e54fe8950abef38e88d75831",
        "81c5e2ae33c4b19e53966b427e33646bf6811830"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "message": "Merge branch \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block: (43 commits)\n  block: ensure that completion error gets properly traced\n  blktrace: add missing probe argument to block_bio_complete\n  block cfq: don\u0027t use atomic_t for cfq_group\n  block cfq: don\u0027t use atomic_t for cfq_queue\n  block: trace event block fix unassigned field\n  block: add internal hd part table references\n  block: fix accounting bug on cross partition merges\n  kref: add kref_test_and_get\n  bio-integrity: mark kintegrityd_wq highpri and CPU intensive\n  block: make kblockd_workqueue smarter\n  Revert \"sd: implement sd_check_events()\"\n  block: Clean up exit_io_context() source code.\n  Fix compile warnings due to missing removal of a \u0027ret\u0027 variable\n  fs/block: type signature of major_to_index(int) to major_to_index(unsigned)\n  block: convert !IS_ERR(p) \u0026\u0026 p to !IS_ERR_NOR_NULL(p)\n  cfq-iosched: don\u0027t check cfqg in choose_service_tree()\n  fs/splice: Pull buf-\u003eops-\u003econfirm() from splice_from_pipe actors\n  cdrom: export cdrom_check_events()\n  sd: implement sd_check_events()\n  sr: implement sr_check_events()\n  ...\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": "57cc7215b70856dc6bae8e55b00ecd7b1d7429b1",
      "tree": "f6dedefd41e6745a9b801166b99af7d830e41ef2",
      "parents": [
        "37721e1b0cf98cb65895f234d8c500d270546529"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Jan 10 08:18:25 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 10 08:51:44 2011 -0800"
      },
      "message": "headers: kobject.h redux\n\nRemove kobject.h from files which don\u0027t need it, notably,\nsched.h and fs.h.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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": "34286d6662308d82aed891852d04c7c3a2649b16",
      "tree": "c4b7311404d302e7cb94df7a4690298e1059910a",
      "parents": [
        "44a7d7a878c9cbb74f236ea755b25b6b2e26a9a9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:57 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: rcu-walk aware d_revalidate method\n\nRequire filesystems be aware of .d_revalidate being called in rcu-walk\nmode (nd-\u003eflags \u0026 LOOKUP_RCU). For now do a simple push down, returning\n-ECHILD from all implementations.\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": "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9",
      "tree": "203e0f73883e4c26b5597e36042386a1237dab35",
      "parents": [
        "77812a1ef139d84270d27faacc0630c887411013"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:49 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: icache RCU free inodes\n\nRCU free the struct inode. This will allow:\n\n- Subsequent store-free path walking patch. The inode must be consulted for\n  permissions when walking, so an RCU inode reference is a must.\n- sb_inode_list_lock to be moved inside i_lock because sb list walkers who want\n  to take i_lock no longer need to take sb_inode_list_lock to walk the list in\n  the first place. This will simplify and optimize locking.\n- Could remove some nested trylock loops in dcache code\n- Could potentially simplify things a bit in VM land. Do not need to take the\n  page lock to follow page-\u003emapping.\n\nThe downsides of this is the performance cost of using RCU. In a simple\ncreat/unlink microbenchmark, performance drops by about 10% due to inability to\nreuse cache-hot slab objects. As iterations increase and RCU freeing starts\nkicking over, this increases to about 20%.\n\nIn cases where inode lifetimes are longer (ie. many inodes may be allocated\nduring the average life span of a single inode), a lot of this cache reuse is\nnot applicable, so the regression caused by this patch is smaller.\n\nThe cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,\nhowever this adds some complexity to list walking and store-free path walking,\nso I prefer to implement this at a later date, if it is shown to be a win in\nreal situations. I haven\u0027t found a regression in any non-micro benchmark so I\ndoubt it will be a problem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "b1e6a015a580ad145689ad1d6b4aa0e03e6c868b",
      "tree": "57a10ef164e4d2f798d9b832dbeaf973aca2ab83",
      "parents": [
        "621e155a3591962420eacdd39f6f0aa29ceb221e"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:28 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:20 2011 +1100"
      },
      "message": "fs: change d_hash for rcu-walk\n\nChange d_hash so it may be called from lock-free RCU lookups. See similar\npatch for d_compare for details.\n\nFor in-tree filesystems, this is just a mechanical change.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fe15ce446beb3a33583af81ffe6c9d01a75314ed",
      "tree": "bc8af66b6dd2d0f21a2a3f48a19975ae2cdbae4e",
      "parents": [
        "5eef7fa905c814826f518aca2d414ca77508ce30"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:23 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:18 2011 +1100"
      },
      "message": "fs: change d_delete semantics\n\nChange d_delete from a dentry deletion notification to a dentry caching\nadvise, more like -\u003edrop_inode. Require it to be constant and idempotent,\nand not take d_lock. This is how all existing filesystems use the callback\nanyway.\n\nThis makes fine grained dentry locking of dput and dentry lru scanning\nmuch simpler.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "846f40455276617275284a4b76b89311b4aed0b9",
      "tree": "c8bd64c7e87554e79ab5f37d9c857c8efe91d4cc",
      "parents": [
        "bcd7278d8a423a255e45f4d10afe564328f1885f"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Dec 16 15:18:48 2010 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Dec 16 15:18:48 2010 +0000"
      },
      "message": "GFS2: Don\u0027t flush delete workqueue when releasing the transaction lock\n\nThere is no requirement to flush the delete workqueue before a\ngfs2 filesystem is suspended. The workqueue\u0027s work will just\nbe suspended along with the rest of the tasks on the filesystem.\n\nThe resolves a deadlock situation where the transaction lock\u0027s\ndemotion code was trying to flush the delete workqueue while at\nthe same time, the workqueue was waiting for the transaction\nlock.\n\nThe delete workqueue is flushed by gfs2_make_fs_ro() already, so\nthat umount/remount are correctly protected anyway.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "bcd7278d8a423a255e45f4d10afe564328f1885f",
      "tree": "fe577aaa2b6c042978ae2b3e2306ab8a0cadcddd",
      "parents": [
        "47a25380e37f44db7202093ca92e4af569c34f55"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Tue Dec 07 13:58:56 2010 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Dec 07 18:55:07 2010 +0000"
      },
      "message": "GFS2: fsck.gfs2 reported statfs error after gfs2_grow\n\nWhen you do gfs2_grow it failed to take the very last\nrgrp into account when adding up the new free space due\nto an off-by-one error.  It was not reading the last\nrgrp from the rindex because of a check for \"\u003c\u003d\" that\nshould have been \"\u003c\".  Therefore, fsck.gfs2 was finding\n(and fixing) an error with the system statfs file.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\n"
    },
    {
      "commit": "47a25380e37f44db7202093ca92e4af569c34f55",
      "tree": "db3e6dba3859c5562b9a86f6d4059519fa7a1c52",
      "parents": [
        "e06dfc492870e1d380f02722cde084b724dc197b"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 15:49:31 2010 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 15:49:31 2010 +0000"
      },
      "message": "GFS2: Merge glock state fields into a bitfield\n\nWe can only merge the fields into a bitfield if the locking\nrules for them are the same. In this case gl_spin covers all\nof the fields (write side) but a couple of them are used\nwith GLF_LOCK as the read side lock, which should be ok\nsince we know that the field in question won\u0027t be changing\nat the time.\n\nThe gl_req setting has to be done earlier (in glock.c) in order\nto place it under gl_spin. The gl_reply setting also has to be\nbrought under gl_spin in order to comply with the new rules.\n\nThis saves 4*sizeof(unsigned int) per glock.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Bob Peterson \u003crpeterso@redhat.com\u003e\n"
    },
    {
      "commit": "e06dfc492870e1d380f02722cde084b724dc197b",
      "tree": "8fca288f44f494b64ad9eaa2d09f5b23b1633a4d",
      "parents": [
        "086d8334cf73b3bb695b82dd864a7a8b00d96b7e"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 15:46:02 2010 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 15:46:02 2010 +0000"
      },
      "message": "GFS2: Fix uninitialised error value in previous patch\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "086d8334cf73b3bb695b82dd864a7a8b00d96b7e",
      "tree": "acadf5458a2ccfde44049bcb7ba63e136844f875",
      "parents": [
        "0489b3f5eba735413ccedd425651cf41d6b1f7c5"
      ],
      "author": {
        "name": "Benjamin Marzinski",
        "email": "bmarzins@redhat.com",
        "time": "Tue Nov 23 23:52:55 2010 -0600"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 15:41:54 2010 +0000"
      },
      "message": "GFS2: fix recursive locking during rindex truncates\n\nWhen you truncate the rindex file, you need to avoid calling gfs2_rindex_hold,\nsince you already hold it.  However, if you haven\u0027t already read in the\nresource groups, you need to do that.\n\nSigned-off-by: Benjamin Marzinski \u003cbmarzins@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "0489b3f5eba735413ccedd425651cf41d6b1f7c5",
      "tree": "08f09b54c4ec3f6f42fcfe83d435f6023e0eb386",
      "parents": [
        "0b1246e6776c79719ff4a3afd9c38fba99b99d5a"
      ],
      "author": {
        "name": "Benjamin Marzinski",
        "email": "bmarzins@redhat.com",
        "time": "Tue Nov 30 09:38:35 2010 -0600"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 15:34:18 2010 +0000"
      },
      "message": "GFS2: reread rindex when necessary to grow rindex\n\nWhen GFS2 grew the filesystem, it was never rereading the rindex file during\nthe grow. This is necessary for large grows when the filesystem is almost full,\nand GFS2 needs to use some of the space allocated earlier in the grow to\ncomplete it.  Now, if GFS2 fails to reserve the necessary space and the rindex\nfile is not uptodate, it rereads it.  Also, the only difference between\ngfs2_ri_update() and gfs2_ri_update_special() was that gfs2_ri_update_special()\ndidn\u0027t clear out the existing resource groups, since you knew that it was only\ncalled when there were no resource groups.  Attempting to clear out the\nresource groups when there are none takes almost no time, and rarely happens,\nso I simply removed gfs2_ri_update_special().\n\nSigned-off-by: Benjamin Marzinski \u003cbmarzins@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "0b1246e6776c79719ff4a3afd9c38fba99b99d5a",
      "tree": "23f029c525e33e856f3d890054309589323d7892",
      "parents": [
        "921169ca2f7c8a0a2ccda2ce33c465dfe3ae30ef"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 15:33:04 2010 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 15:33:04 2010 +0000"
      },
      "message": "GFS2: Remove duplicate #defines from glock.h\n\nThere are a number of duplicated #defines in glock.h\nplus one which is unused. This removes the extra\ndefinitions.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "921169ca2f7c8a0a2ccda2ce33c465dfe3ae30ef",
      "tree": "f40f00721426eb992d75493defefb8de8a71b7e1",
      "parents": [
        "802ec9b6682349d9d9c92a9e55f44324d2954f41"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Nov 29 12:50:38 2010 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 10:31:48 2010 +0000"
      },
      "message": "GFS2: Clean up of gdlm_lock function\n\nThe DLM never returns -EAGAIN in response to dlm_lock(), and even\nif it did, the test in gdlm_lock() was wrong anyway. Once that\ntest is removed, it is possible to greatly simplify this code\nby simply using a \"normal\" error return code (0 for success).\n\nWe then no longer need the LM_OUT_ASYNC return code which can\nbe removed.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "802ec9b6682349d9d9c92a9e55f44324d2954f41",
      "tree": "25e69625588e936e3cdc93dd648d07fcbfe73ce0",
      "parents": [
        "edc221d00bd5c6da0e5c67701f3782b72796619f"
      ],
      "author": {
        "name": "Abhijith Das",
        "email": "adas@redhat.com",
        "time": "Thu Nov 18 11:26:46 2010 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 10:31:27 2010 +0000"
      },
      "message": "GFS2: Allow gfs2 to update quota usage values through the quotactl interface\n\nWith this patch the gfs2_set_dqblk() function will be able to update the\nquota usage block count (FS_DQ_BCOUNT) in addition to the already supported\nFS_DQ_BHARD (limit) and FS_DQ_BSOFT (warn) fields of the dquot structure.\n\nSigned-off-by: Abhi Das \u003cadas@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "edc221d00bd5c6da0e5c67701f3782b72796619f",
      "tree": "2376c53981a815716955659331d8956b46e95805",
      "parents": [
        "5e69069c1afb655b5f1a154856ccdb4bb7327b81"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Wed Nov 10 13:19:06 2010 -0800"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 10:31:05 2010 +0000"
      },
      "message": "GFS2: fs/gfs2/glock.h: Add __attribute__((format(printf,2,3)) to gfs2_print_dbg\n\nFunctions that use printf formatting, especially\nthose that use %pV, should have their uses of\nprintf format and arguments checked by the compiler.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "5e69069c1afb655b5f1a154856ccdb4bb7327b81",
      "tree": "f6bddfefc266a534b3a2879aa83f2c82ff3b3d81",
      "parents": [
        "2ae51ed7b548c1d943d080da617515e801ea5c3e"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Tue Nov 09 16:35:20 2010 -0800"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 10:30:41 2010 +0000"
      },
      "message": "GFS2: fs/gfs2/glock.c: Use printf extension %pV\n\nUsing %pV reduces the number of printk calls and\neliminates any possible message interleaving from\nother printk calls.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\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": "cc18152eb7c27653199546bd14e991a451ab8d1b",
      "tree": "495d008f321dbc455a8c8765dacf1834171b704e",
      "parents": [
        "d2115778c7ea0df2201f1ad9aab948c49ffa1078"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Fri Nov 05 16:12:36 2010 -0700"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 10:22:19 2010 +0000"
      },
      "message": "GFS2: fs/gfs2/glock.c: Convert sprintf_symbol to %pS\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "d2115778c7ea0df2201f1ad9aab948c49ffa1078",
      "tree": "d987b54d5a982e58ce4ae7c4ec8a32a04cddd367",
      "parents": [
        "e8a7e48bb248a1196484d3f8afa53bded2b24e71"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Nov 03 19:58:53 2010 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Nov 30 10:21:55 2010 +0000"
      },
      "message": "GFS2: Change two WQ_RESCUERs into WQ_MEM_RECLAIM\n\nThe WQ_RESCUER flag should only be used internally to the\nworkqueue implementation.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "f30195c50245d8ace628e1978b1daa8df86e7224",
      "tree": "edf4f91c4356c41d50fb07f15cebd1e6442538ad",
      "parents": [
        "d07335e51df0c6dec202d315fc4f1f7e100eec4e",
        "d4d77629953eabd3c14f6fa5746f6b28babfc55f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Nov 27 19:49:18 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Nov 27 19:49:18 2010 +0100"
      },
      "message": "Merge branch \u0027cleanup-bd_claim\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into for-2.6.38/core\n"
    },
    {
      "commit": "14870b457524e745f1a118e17873d104b1a47b70",
      "tree": "db7a3d2c20ada60c8bbbc14d71481b036a082b9f",
      "parents": [
        "e53beacd23d9cb47590da6a7a7f6d417b941a994"
      ],
      "author": {
        "name": "Abhijith Das",
        "email": "adas@redhat.com",
        "time": "Thu Nov 18 11:24:24 2010 -0500"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Nov 19 11:20:29 2010 +0000"
      },
      "message": "GFS2: Userland expects quota limit/warn/usage in 512b blocks\n\nUserland programs using the quotactl() syscall assume limit/warn/usage\nblock counts in 512b basic blocks which were instead being read/written\nin fs blocksize in gfs2. With this patch, gfs2 correctly interacts with\nthe syscall using 512b blocks.\n\nSigned-off-by: Abhi Das \u003cadas@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "044b9414c7caf9a26192c73a5b88fa1a8a32a1c1",
      "tree": "9596bb669a68b04eebc40864c3b3fd71d3d1e273",
      "parents": [
        "0143832cc96d0bf78486297aad5c8fb2c2ead02a"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Nov 03 20:01:07 2010 +0000"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Nov 15 12:44:42 2010 +0000"
      },
      "message": "GFS2: Fix inode deallocation race\n\nThis area of the code has always been a bit delicate due to the\nsubtleties of lock ordering. The problem is that for \"normal\"\nalloc/dealloc, we always grab the inode locks first and the rgrp lock\nlater.\n\nIn order to ensure no races in looking up the unlinked, but still\nallocated inodes, we need to hold the rgrp lock when we do the lookup,\nwhich means that we can\u0027t take the inode glock.\n\nThe solution is to borrow the technique already used by NFS to solve\nwhat is essentially the same problem (given an inode number, look up\nthe inode carefully, checking that it really is in the expected\nstate).\n\nWe cannot do that directly from the allocation code (lock ordering\nagain) so we give the job to the pre-existing delete workqueue and\ncarry on with the allocation as normal.\n\nIf we find there is no space, we do a journal flush (required anyway\nif space from a deallocation is to be released) which should block\nagainst the pending deallocations, so we should always get the space\nback.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "d4d77629953eabd3c14f6fa5746f6b28babfc55f",
      "tree": "38cce0d4764ecb34a9f7f49332959780e28bb786",
      "parents": [
        "75f1dc0d076d1c1168f2115f1941ea627d38bd5a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:18 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:18 2010 +0100"
      },
      "message": "block: clean up blkdev_get() wrappers and their users\n\nAfter recent blkdev_get() modifications, open_by_devnum() and\nopen_bdev_exclusive() are simple wrappers around blkdev_get().\nReplace them with blkdev_get_by_dev() and blkdev_get_by_path().\n\nblkdev_get_by_dev() is identical to open_by_devnum().\nblkdev_get_by_path() is slightly different in that it doesn\u0027t\nautomatically add %FMODE_EXCL to @mode.\n\nAll users are converted.  Most conversions are mechanical and don\u0027t\nintroduce any behavior difference.  There are several exceptions.\n\n* btrfs now sets FMODE_EXCL in btrfs_device-\u003emode, so there\u0027s no\n  reason to OR it explicitly on blkdev_put().\n\n* gfs2, nilfs2 and the generic mount_bdev() now set FMODE_EXCL in\n  sb-\u003es_mode.\n\n* With the above changes, sb-\u003es_mode now always should contain\n  FMODE_EXCL.  WARN_ON_ONCE() added to kill_block_super() to detect\n  errors.\n\nThe new blkdev_get_*() functions are with proper docbook comments.\nWhile at it, add function description to blkdev_get() too.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: Joern Engel \u003cjoern@lazybastard.org\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: KONISHI Ryusuke \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: reiserfs-devel@vger.kernel.org\nCc: xfs-masters@oss.sgi.com\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e525fd89d380c4a94c0d63913a1dd1a593ed25e7",
      "tree": "d226ef40d3f99e42fcf272ad432585cbd641ebec",
      "parents": [
        "e09b457bdb7e8d23fc54dcef0930ac697d8de895"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "message": "block: make blkdev_get/put() handle exclusive access\n\nOver time, block layer has accumulated a set of APIs dealing with bdev\nopen, close, claim and release.\n\n* blkdev_get/put() are the primary open and close functions.\n\n* bd_claim/release() deal with exclusive open.\n\n* open/close_bdev_exclusive() are combination of open and claim and\n  the other way around, respectively.\n\n* bd_link/unlink_disk_holder() to create and remove holder/slave\n  symlinks.\n\n* open_by_devnum() wraps bdget() + blkdev_get().\n\nThe interface is a bit confusing and the decoupling of open and claim\nmakes it impossible to properly guarantee exclusive access as\nin-kernel open + claim sequence can disturb the existing exclusive\nopen even before the block layer knows the current open if for another\nexclusive access.  Reorganize the interface such that,\n\n* blkdev_get() is extended to include exclusive access management.\n  @holder argument is added and, if is @FMODE_EXCL specified, it will\n  gain exclusive access atomically w.r.t. other exclusive accesses.\n\n* blkdev_put() is similarly extended.  It now takes @mode argument and\n  if @FMODE_EXCL is set, it releases an exclusive access.  Also, when\n  the last exclusive claim is released, the holder/slave symlinks are\n  removed automatically.\n\n* bd_claim/release() and close_bdev_exclusive() are no longer\n  necessary and either made static or removed.\n\n* bd_link_disk_holder() remains the same but bd_unlink_disk_holder()\n  is no longer necessary and removed.\n\n* open_bdev_exclusive() becomes a simple wrapper around lookup_bdev()\n  and blkdev_get().  It also has an unexpected extra bdev_read_only()\n  test which probably should be moved into blkdev_get().\n\n* open_by_devnum() is modified to take @holder argument and pass it to\n  blkdev_get().\n\nMost of bdev open/close operations are unified into blkdev_get/put()\nand most exclusive accesses are tested atomically at the open time (as\nit should).  This cleans up code and removes some, both valid and\ninvalid, but unnecessary all the same, corner cases.\n\nopen_bdev_exclusive() and open_by_devnum() can use further cleanup -\nrename to blkdev_get_by_path() and blkdev_get_by_devt() and drop\nspecial features.  Well, let\u0027s leave them for another day.\n\nMost conversions are straight-forward.  drbd conversion is a bit more\ninvolved as there was some reordering, but the logic should stay the\nsame.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nCc: Peter Osterlund \u003cpetero2@telia.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Andreas Dilger \u003cadilger.kernel@dilger.ca\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: dm-devel@redhat.com\nCc: drbd-dev@lists.linbit.com\nCc: Leo Chen \u003cleochen@broadcom.com\u003e\nCc: Scott Branden \u003csbranden@broadcom.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nCc: Joern Engel \u003cjoern@logfs.org\u003e\nCc: reiserfs-devel@vger.kernel.org\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "51ee4b84f5c86935b438d6636f34b523edb415a8",
      "tree": "c60e0da8f8b6393477d79ef6d6ce321ee3b8ecaa",
      "parents": [
        "96f935934591b72f5b05fd6923bc8cdcae92f2e5"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Oct 31 08:35:10 2010 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 31 06:35:15 2010 -0700"
      },
      "message": "locks: let the caller free file_lock on -\u003esetlease failure\n\nThe caller allocated it, the caller should free it.\n\nThe only issue so far is that we could change the flp pointer even on an\nerror return if the fl_change callback failed.  But we can simply move\nthe flp assignment after the fl_change invocation, as the callers don\u0027t\ncare about the flp return value if the setlease call failed.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "05fa3135fdc7b9b510b502a35b6b97d2b38c6f48",
      "tree": "d533e8112111202ae890b2061c0386669002d080",
      "parents": [
        "096657b65e1ac197e20be5ce7cff6b6ca2532787"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Sat Oct 30 17:31:15 2010 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 30 18:08:15 2010 -0700"
      },
      "message": "locks: fix setlease methods to free passed-in lock\n\nWe modified setlease to require the caller to allocate the new lease in\nthe case of creating a new lease, but forgot to fix up the filesystem\nmethods.\n\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Steve French \u003csfrench@samba.org\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8bcbbf0009dd467afd6bed1fedfcb1d2463f55a7",
      "tree": "0913df26841e57371f44133aa95272981a78ed52",
      "parents": [
        "f7442b3be65bfcabbb5d6e896e65d69e8b261583"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 26 16:03:58 2010 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 29 04:17:16 2010 -0400"
      },
      "message": "convert gfs2\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "426e1f5cec4821945642230218876b0e89aafab1",
      "tree": "2728ace018d0698886989da586210ef1543a7098",
      "parents": [
        "9e5fca251f44832cb996961048ea977f80faf6ea",
        "63997e98a3be68d7cec806d22bf9b02b2e1daabb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (52 commits)\n  split invalidate_inodes()\n  fs: skip I_FREEING inodes in writeback_sb_inodes\n  fs: fold invalidate_list into invalidate_inodes\n  fs: do not drop inode_lock in dispose_list\n  fs: inode split IO and LRU lists\n  fs: switch bdev inode bdi\u0027s correctly\n  fs: fix buffer invalidation in invalidate_list\n  fsnotify: use dget_parent\n  smbfs: use dget_parent\n  exportfs: use dget_parent\n  fs: use RCU read side protection in d_validate\n  fs: clean up dentry lru modification\n  fs: split __shrink_dcache_sb\n  fs: improve DCACHE_REFERENCED usage\n  fs: use percpu counter for nr_dentry and nr_dentry_unused\n  fs: simplify __d_free\n  fs: take dcache_lock inside __d_path\n  fs: do not assign default i_ino in new_inode\n  fs: introduce a per-cpu last_ino allocator\n  new helper: ihold()\n  ...\n"
    },
    {
      "commit": "1b430beee5e388605dfb092b214ef0320f752cf6",
      "tree": "c1b1ece282aab771fd1386a3fe0c6e82cb5c5bfe",
      "parents": [
        "d19d5476f4b9f91d2de92b91588bb118beba6c0d"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Oct 26 14:21:26 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:05 2010 -0700"
      },
      "message": "writeback: remove nonblocking/encountered_congestion references\n\nThis removes more dead code that was somehow missed by commit 0d99519efef\n(writeback: remove unused nonblocking and congestion checks).  There are\nno behavior change except for the removal of two entries from one of the\next4 tracing interface.\n\nThe nonblocking checks in -\u003ewritepages are no longer used because the\nflusher now prefer to block on get_request_wait() than to skip inodes on\nIO congestion.  The latter will lead to more seeky IO.\n\nThe nonblocking checks in -\u003ewritepage are no longer used because it\u0027s\nredundant with the WB_SYNC_NONE check.\n\nWe no long set -\u003enonblocking in VM page out and page migration, because\na) it\u0027s effectively redundant with WB_SYNC_NONE in current code\nb) it\u0027s old semantic of \"Don\u0027t get stuck on request queues\" is mis-behavior:\n   that would skip some dirty inodes on congestion and page out others, which\n   is unfair in terms of LRU age.\n\nInspired by Christoph Hellwig. Thanks!\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: Steve French \u003csfrench@samba.org\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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": "9dcefee508d547eed88f3c578dc92819bdeaa952",
      "tree": "7d63df92ba654ee4a9840099156588472ec1044d",
      "parents": [
        "8e3b9a072d071700e83e88b0bf59115c59042885"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Oct 24 09:46:50 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:23:01 2010 -0400"
      },
      "message": "gfs2: invalidate_inodes() is no-op there\n\nIn fill_super() we hadn\u0027t MS_ACTIVE set yet, so there won\u0027t\nbe any inodes with zero i_count sitting around.\n\nIn put_super() we already have MS_ACTIVE removed *and* we\nhad called invalidate_inodes() since then.  So again there\nwon\u0027t be any inodes with zero i_count...\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": "91b745016c12d440386c40fb76ab69c8e08cbc06",
      "tree": "881a26a43b3ee924c0979a54b38c7a87d79d7f1a",
      "parents": [
        "04cc69768e7d1f40d98b79d23d203674553b4da2",
        "daaae6b010ac0f60c9c35e481589966f9f1fcc22"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:13:10 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:13:10 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:\n  workqueue: remove in_workqueue_context()\n  workqueue: Clarify that schedule_on_each_cpu is synchronous\n  memory_hotplug: drop spurious calls to flush_scheduled_work()\n  shpchp: update workqueue usage\n  pciehp: update workqueue usage\n  isdn/eicon: don\u0027t call flush_scheduled_work() from diva_os_remove_soft_isr()\n  workqueue: add and use WQ_MEM_RECLAIM flag\n  workqueue: fix HIGHPRI handling in keep_working()\n  workqueue: add queue_work and activate_work trace points\n  workqueue: prepare for more tracepoints\n  workqueue: implement flush[_delayed]_work_sync()\n  workqueue: factor out start_flush_work()\n  workqueue: cleanup flush/cancel functions\n  workqueue: implement alloc_ordered_workqueue()\n\nFix up trivial conflict in fs/gfs2/main.c as per Tejun\n"
    },
    {
      "commit": "a2887097f25cd38cadfc11d10769e2b349fb5eca",
      "tree": "cd4adcb305365d6ba9acd2c02d4eb9d0125c6f8d",
      "parents": [
        "8abfc6e7a45eb74e51904bbae676fae008b11366",
        "005a1d15f5a6b2bb4ada80349513effbf22b4588"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block: (46 commits)\n  xen-blkfront: disable barrier/flush write support\n  Added blk-lib.c and blk-barrier.c was renamed to blk-flush.c\n  block: remove BLKDEV_IFL_WAIT\n  aic7xxx_old: removed unused \u0027req\u0027 variable\n  block: remove the BH_Eopnotsupp flag\n  block: remove the BLKDEV_IFL_BARRIER flag\n  block: remove the WRITE_BARRIER flag\n  swap: do not send discards as barriers\n  fat: do not send discards as barriers\n  ext4: do not send discards as barriers\n  jbd2: replace barriers with explicit flush / FUA usage\n  jbd2: Modify ASYNC_COMMIT code to not rely on queue draining on barrier\n  jbd: replace barriers with explicit flush / FUA usage\n  nilfs2: replace barriers with explicit flush / FUA usage\n  reiserfs: replace barriers with explicit flush / FUA usage\n  gfs2: replace barriers with explicit flush / FUA usage\n  btrfs: replace barriers with explicit flush / FUA usage\n  xfs: replace barriers with explicit flush / FUA usage\n  block: pass gfp_mask and flags to sb_issue_discard\n  dm: convey that all flushes are processed as empty\n  ...\n"
    },
    {
      "commit": "092e0e7e520a1fca03e13c9f2d157432a8657ff2",
      "tree": "451897252c4c08c4b5a8ef535da156f1e817e80b",
      "parents": [
        "79f14b7c56d3b3ba58f8b43d1f70b9b71477a800",
        "776c163b1b93c8dfa5edba885bc2bfbc2d228a5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "message": "Merge branch \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:\n  vfs: make no_llseek the default\n  vfs: don\u0027t use BKL in default_llseek\n  llseek: automatically add .llseek fop\n  libfs: use generic_file_llseek for simple_attr\n  mac80211: disallow seeks in minstrel debug code\n  lirc: make chardev nonseekable\n  viotape: use noop_llseek\n  raw: use explicit llseek file operations\n  ibmasmfs: use generic_file_llseek\n  spufs: use llseek in all file operations\n  arm/omap: use generic_file_llseek in iommu_debug\n  lkdtm: use generic_file_llseek in debugfs\n  net/wireless: use generic_file_llseek in debugfs\n  drm: use noop_llseek\n"
    },
    {
      "commit": "79f14b7c56d3b3ba58f8b43d1f70b9b71477a800",
      "tree": "3bb53b7806c1baba6cc24b91724a9264cceccd39",
      "parents": [
        "c37927d4359e81b85de644f8fb08878717cf5f3f",
        "6d7bccc2215c37205ede6c9cf84db64e7c4f9443"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:01 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:01 2010 -0700"
      },
      "message": "Merge branch \u0027vfs\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027vfs\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl: (30 commits)\n  BKL: remove BKL from freevxfs\n  BKL: remove BKL from qnx4\n  autofs4: Only declare function when CONFIG_COMPAT is defined\n  autofs: Only declare function when CONFIG_COMPAT is defined\n  ncpfs: Lock socket in ncpfs while setting its callbacks\n  fs/locks.c: prepare for BKL removal\n  BKL: Remove BKL from ncpfs\n  BKL: Remove BKL from OCFS2\n  BKL: Remove BKL from squashfs\n  BKL: Remove BKL from jffs2\n  BKL: Remove BKL from ecryptfs\n  BKL: Remove BKL from afs\n  BKL: Remove BKL from USB gadgetfs\n  BKL: Remove BKL from autofs4\n  BKL: Remove BKL from isofs\n  BKL: Remove BKL from fat\n  BKL: Remove BKL from ext2 filesystem\n  BKL: Remove BKL from do_new_mount()\n  BKL: Remove BKL from cgroup\n  BKL: Remove BKL from NTFS\n  ...\n"
    },
    {
      "commit": "fa251f89903d73989e2f63e13d0eaed1e07ce0da",
      "tree": "3f7fe779941e3b6d67754dd7c44a32f48ea47c74",
      "parents": [
        "dd3932eddf428571762596e17b65f5dc92ca361b",
        "cd07202cc8262e1669edff0d97715f3dd9260917"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "message": "Merge branch \u0027v2.6.36-rc8\u0027 into for-2.6.37/barrier\n\nConflicts:\n\tblock/blk-core.c\n\tdrivers/block/loop.c\n\tmm/swapfile.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "33027af637da3f69bd17488cc3e68493c9052a7d",
      "tree": "1c0d5508131e259f8dc9dcde2cf6e7860c9a8f29",
      "parents": [
        "134669854e3a680d8aad9a4047891c653715f4c0"
      ],
      "author": {
        "name": "Andrea Gelmini",
        "email": "andrea.gelmini@gelma.net",
        "time": "Sat Oct 16 15:19:22 2010 +0200"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Oct 18 14:38:07 2010 +0100"
      },
      "message": "GFS2: fixed typo\n\nSigned-off-by: Andrea Gelmini \u003candrea.gelmini@gelma.net\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "6370a6ad3b53df90b4700977f7718118a2cd524a",
      "tree": "2d1f45a19e66329813ce133b18f920d8c450b0c0",
      "parents": [
        "30310045dd20a286cf3800f063f79b468e132fb1"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Oct 11 15:12:27 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Oct 11 15:20:26 2010 +0200"
      },
      "message": "workqueue: add and use WQ_MEM_RECLAIM flag\n\nAdd WQ_MEM_RECLAIM flag which currently maps to WQ_RESCUER, mark\nWQ_RESCUER as internal and replace all external WQ_RESCUER usages to\nWQ_MEM_RECLAIM.\n\nThis makes the API users express the intent of the workqueue instead\nof indicating the internal mechanism used to guarantee forward\nprogress.  This is also to make it cleaner to add more semantics to\nWQ_MEM_RECLAIM.  For example, if deemed necessary, memory reclaim\nworkqueues can be made highpri.\n\nThis patch doesn\u0027t introduce any functional change.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "134669854e3a680d8aad9a4047891c653715f4c0",
      "tree": "8c6f6b2615fc7bf84c69b02bde33065aaa8688c9",
      "parents": [
        "46290341cd649c2bfb69e5067c1804c0395c83a1"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Oct 06 09:58:44 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Oct 06 09:58:44 2010 +0100"
      },
      "message": "GFS2: Fix type mapping for demote_rq interface\n\nMostly the glock operations follow the type of the glock. The\none exception is the transaction glock, so we need to check for\nthat directly.\n\nReported-by: Dr. David Alan Gilbert \u003clinux@treblig.org\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "b89f432133851a01c0d28822f11cbdcc15781a75",
      "tree": "a3e9ba638a9b746985148f4525335d360ec7da56",
      "parents": [
        "2e54eb96e2c801f33d95b5dade15212ac4d6c4a5"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sat Sep 18 15:09:31 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Tue Oct 05 11:02:04 2010 +0200"
      },
      "message": "fs/locks.c: prepare for BKL removal\n\nThis prepares the removal of the big kernel lock from the\nfile locking code. We still use the BKL as long as fs/lockd\nuses it and ceph might sleep, but we can flip the definition\nto a private spinlock as soon as that\u0027s done.\nAll users outside of fs/lockd get converted to use\nlock_flocks() instead of lock_kernel() where appropriate.\n\nBased on an earlier patch to use a spinlock from Matthew\nWilcox, who has attempted this a few times before, the\nearliest patch from over 10 years ago turned it into\na semaphore, which ended up being slower than the BKL\nand was subsequently reverted.\n\nSomeone should do some serious performance testing when\nthis becomes a spinlock, since this has caused problems\nbefore. Using a spinlock should be at least as good\nas the BKL in theory, but who knows...\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: Matthew Wilcox \u003cwilly@linux.intel.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: John Kacur \u003cjkacur@redhat.com\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nCc: linux-kernel@vger.kernel.org\nCc: linux-fsdevel@vger.kernel.org\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": "feb47ca9314666d920855b8a235032dea2b2caa4",
      "tree": "163a391bda495826747eb249cf74b42ad35bd5ec",
      "parents": [
        "43f74c199563a4273e528e2166d0650625a1e05f"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Sep 29 15:04:18 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Sep 29 15:04:18 2010 +0100"
      },
      "message": "GFS2: Improve journal allocation via sysfs\n\nRecently a feature was added to GFS2 to allow journal id allocation\nvia sysfs. This patch builds upon that so that a negative journal id\nwill be treated as an error code to be passed back as the return code\nfrom mount. This allows termination of the mount process if there is\na failure.\n\nAlso, the process has been updated so that the kernel will wait\nfor a journal id, even in the \"spectator\" case. This is required\nin order to avoid mounting a filesystem in case there is an error\nwhile joining the cluster. In the spectator case, 0 is written into\nthe file to indicate that all is well, and that mount should continue.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "43f74c199563a4273e528e2166d0650625a1e05f",
      "tree": "cef4b1af71fde827a81f1f88bb13b0b75c6a99ab",
      "parents": [
        "c741c4551237f9c1bdcd3b1b39b0883bd19a3723"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Sep 29 14:24:41 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Sep 29 14:24:41 2010 +0100"
      },
      "message": "GFS2: Add \"norecovery\" mount option as a synonym for \"spectator\"\n\nXFS supports the \"norecovery\" mount option which is basically the\nsame as the GFS2 spectator mode. This adds support for \"norecovery\"\nas a synonym for spectator mode, which is hopefully a more obvious\ndescription of what it actually does.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "c741c4551237f9c1bdcd3b1b39b0883bd19a3723",
      "tree": "f3d39633f5e63ad40dd5a7375090b239bde3368c",
      "parents": [
        "d594845106f34c079a6b05be01a37e4883c3bf4c"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Sep 29 14:20:52 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Sep 29 14:20:52 2010 +0100"
      },
      "message": "GFS2: Fix spectator umount issue\n\nThe tests further down the recovery function relating to\nunlocking the journal need to be updated to match the\nintial test. Also, a test in the umount code which was\nsurplus to requirements has been removed. Umounting\nspectator mounts now works correctly, as expected.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "d594845106f34c079a6b05be01a37e4883c3bf4c",
      "tree": "15065bde22128cdf5d82f9c5a8fdce4beae04ea2",
      "parents": [
        "bf97b6734e027cc18abad420ab88f861f65d7816"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Sep 28 10:17:47 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Tue Sep 28 10:17:47 2010 +0100"
      },
      "message": "GFS2: Fix compiler warning from previous patch\n\nThis shouldn\u0027t really be required, but gcc can\u0027t tell that\n\"al\" is only accessed when initialised.\n\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": "d0795f912318f65b800c6b619d749c3bf7c930fb",
      "tree": "c3d13ab5e4864306cc215d4dd6b6cecb1e33d77b",
      "parents": [
        "c80dbb58f9c3f84372e37dfe80b41810052ad62f"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 27 15:58:11 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 27 15:58:11 2010 +0100"
      },
      "message": "GFS2: Fix journal check for spectator mounts\n\nWhen checking journals for spectator mounts, we cannot rely on the\njournal being locked, whatever its jid might be. This patch\nensures that we always get the journal locks when checking\njournals for a spectator mount.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "c80dbb58f9c3f84372e37dfe80b41810052ad62f",
      "tree": "138e1683dbac848c2563a03509207f8981b059ed",
      "parents": [
        "c2048b003cfb840ad81bdc6eb55beb12a19a222e"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Sep 24 09:55:07 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Sep 24 09:55:07 2010 +0100"
      },
      "message": "GFS2: Remove upgrade mount option\n\nThis option has never done anything useful. Also at the same time\nthis cleans up the sb checks which are done at mount time. The\ndebug option will be accepted, but ignored in future. Since it\ndidn\u0027t do anything, there didn\u0027t seem much point in retaining it.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "c2048b003cfb840ad81bdc6eb55beb12a19a222e",
      "tree": "17b3b09141cfb1c2ca13759bac365ef5050e5dc9",
      "parents": [
        "f57a024ed2ee00d62515ffd4040f5ded3e0eb853"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 23 14:00:31 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 23 14:00:31 2010 +0100"
      },
      "message": "GFS2: Remove localcaching mount option\n\nThis option defaulted to on for lock_nolock mounts and off\notherwise. The only function was to avoid the revalidation of\ndentries. In the cluster case, that is entirely pointless and\nliable to cause coherency problems.\n\nThe patch changes the revalidation to depend upon whether the\nfs is a local or cluster fs (i.e. it follows the existing default\nbehaviour). I very much doubt anybody ever used this option as\nthere is no reason to. Even so we will continue to accept it\non the mount command line, but ignore it.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "f57a024ed2ee00d62515ffd4040f5ded3e0eb853",
      "tree": "7f253cd03070d5b6d8af2330cecd2f0f70ac6870",
      "parents": [
        "8d1235852b462cfb66aa036bd4a2686763c69ed4"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 23 13:41:42 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 23 13:41:42 2010 +0100"
      },
      "message": "GFS2: Remove ignore_local_fs mount argument\n\nThis is been a no-op for a very long time now. I\u0027m pretty sure\nnobody uses it, but just in case we\u0027ll still accept it on the\ncommand line, but ignore it.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "8d1235852b462cfb66aa036bd4a2686763c69ed4",
      "tree": "9ac348ed6183c4dc509dba3d2ef750043266c82c",
      "parents": [
        "9fa0ea9f26f64fbfc3dfd51d1dc2c230b65ffb19"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Sep 17 12:30:23 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:21:09 2010 +0100"
      },
      "message": "GFS2: Make . and .. qstrs constant\n\nRather than calculating the qstrs for . and .. each time\nwe need them, its better to keep a constant version of\nthese and just refer to them when required.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "9fa0ea9f26f64fbfc3dfd51d1dc2c230b65ffb19",
      "tree": "39d893961545394f1a504ed3d63fe900f76b95ef",
      "parents": [
        "1fea7c25a05d388c0cdbe02cbdaf3a2e70885581"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 13 16:23:00 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:20:36 2010 +0100"
      },
      "message": "GFS2: Use new workqueue scheme\n\nThe recovery workqueue can be freezable since\nwe want it to finish what it is doing if the system is to\nbe frozen (although why you\u0027d want to freeze a cluster node\nis beyond me since it will result in it being ejected from\nthe cluster). It does still make sense for single node\nGFS2 filesystems though.\n\nThe glock workqueue will benefit from being able to run more\nwork items concurrently. A test running postmark shows\nimproved performance and multi-threaded workloads are likely\nto benefit even more. It needs to be high priority because\nthe latency directly affects the latency of filesystem glock\noperations.\n\nThe delete workqueue is similar to the recovery workqueue in\nthat it must not get blocked by memory allocations, and may\nrun for a long time.\n\nPotentially other GFS2 threads might also be converted to\nworkqueues, but I\u0027ll leave that for a later patch.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "1fea7c25a05d388c0cdbe02cbdaf3a2e70885581",
      "tree": "4cb485254d7d3eb42b2dc0c3de140a21f586d511",
      "parents": [
        "7b5e3d5fcf0d6fce66050bd0313a7dc2ae4abc62"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Sep 08 10:09:25 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:20:12 2010 +0100"
      },
      "message": "GFS2: Update handling of DLM return codes to match reality\n\nGFS2\u0027s idea of which return codes it needs to handle was based\nupon those listed in dlm.h. Those didn\u0027t cover all the possible\ncodes and listed some which never happen. This updates GFS2 to\nhandle all the codes which can actually be returned from the\nDLM under various circumstances.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "7b5e3d5fcf0d6fce66050bd0313a7dc2ae4abc62",
      "tree": "2121e7587c5bb73faeaba6e438178ea8aff570ee",
      "parents": [
        "fe08d5a89726675a920b0e9bbbe849c46b27a6e5"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Sep 03 09:39:20 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:19:50 2010 +0100"
      },
      "message": "GFS2: Don\u0027t enforce min hold time when two demotes occur in rapid succession\n\nDue to the design of the VFS, it is quite usual for operations on GFS2\nto consist of a lookup (requiring a shared lock) followed by an\noperation requiring an exclusive lock. If a remote node has cached an\nexclusive lock, then it will receive two demote events in rapid succession\nfirstly for a shared lock and then to unlocked. The existing min hold time\ncode was triggering in this case, even if the node was otherwise idle\nsince the state change time was being updated by the initial demote.\n\nThis patch introduces logic to skip the min hold timer in the case that\na \"double demote\" of this kind has occurred. The min hold timer will\nstill be used in all other cases.\n\nA new glock flag is introduced which is used to keep track of whether\nthere have been any newly queued holders since the last glock state\nchange. The min hold time is only applied if the flag is set.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nTested-by: Abhijith Das \u003cadas@redhat.com\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": "9a3f236d40a99ea8dca3df40d8ef67631057cad6",
      "tree": "9249794a803c7df5bcef90038199351f14f09b1d",
      "parents": [
        "820969f353587281d645735c83c7f07d606e67ba"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Aug 23 11:49:34 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:18:59 2010 +0100"
      },
      "message": "GFS2: Add a bug trap in allocation code\n\nThis adds a check to ensure that if we reach the block allocator\nthat we don\u0027t try and proceed if there is no alloc structure\nhanging off the inode. This should only happen if there is a bug\nin GFS2. The error return code is distinctive in order that it\nwill be easily spotted.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "820969f353587281d645735c83c7f07d606e67ba",
      "tree": "538f8806639b757334ebc399a82170d7f0bf2d3b",
      "parents": [
        "a2e0f79939e09e74698564b88dee709db208e1e2"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Aug 11 09:53:47 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Sep 20 11:18:46 2010 +0100"
      },
      "message": "GFS2: No longer experimental\n\nI think the time has arrvied to remove the experimental tag\nfrom GFS2.\n\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": "5f4874903df3562b9d5649fc1cf7b8c6bb238e42",
      "tree": "b66dbafa2fd3f32c6df72752d95cad260abd35bd",
      "parents": [
        "03a7ab083e4d619136d6f07ce70fa9de0bc436fc"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Sep 09 14:45:00 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Sep 17 14:00:10 2010 +0100"
      },
      "message": "GFS2: gfs2_logd should be using interruptible waits\n\nLooks like this crept in, in a recent update.\n\nReported-by:  Krzysztof Urbaniak \u003curban@bash.org.pl\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "dd3932eddf428571762596e17b65f5dc92ca361b",
      "tree": "57cec5ae2f862037f78b7e993323d77955bb6463",
      "parents": [
        "8786fb70ccb36c7cff64680bb80c46d3a09d44db"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Sep 16 20:51:46 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Sep 16 20:52:58 2010 +0200"
      },
      "message": "block: remove BLKDEV_IFL_WAIT\n\nAll the blkdev_issue_* helpers can only sanely be used for synchronous\ncaller.  To issue cache flushes or barriers asynchronously the caller needs\nto set up a bio by itself with a completion callback to move the asynchronous\nstate machine ahead.  So drop the BLKDEV_IFL_WAIT flag that is always\nspecified when calling blkdev_issue_* and also remove the now unused flags\nargument to blkdev_issue_flush and blkdev_issue_zeroout.  For\nblkdev_issue_discard we need to keep it for the secure discard flag, which\ngains a more descriptive name and loses the bitops vs flag confusion.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f1e4d518c3beddf67f7722f3548eda0ec7006204",
      "tree": "eafc3939ae2941ce8c543383a2e7cf569076e362",
      "parents": [
        "c3b9a62c8f932f32a733d6b628f61f3f28345727"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Aug 18 05:29:13 2010 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:39 2010 +0200"
      },
      "message": "gfs2: replace barriers with explicit flush / FUA usage\n\nSwitch to the WRITE_FLUSH_FUA flag for log writes, remove the EOPNOTSUPP\ndetection for barriers and stop setting the barrier flag for discards.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nAcked-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "2f9e825d3e0e2b407ae8f082de5c00afcf7378fb",
      "tree": "f8b3ee40674ce4acd5508a0a0bf52a30904caf6c",
      "parents": [
        "7ae0dea900b027cd90e8a3e14deca9a19e17638b",
        "de75d60d5ea235e6e09f4962ab22541ce0fe176a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 15:22:42 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 15:22:42 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.36\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.36\u0027 of git://git.kernel.dk/linux-2.6-block: (149 commits)\n  block: make sure that REQ_* types are seen even with CONFIG_BLOCK\u003dn\n  xen-blkfront: fix missing out label\n  blkdev: fix blkdev_issue_zeroout return value\n  block: update request stacking methods to support discards\n  block: fix missing export of blk_types.h\n  writeback: fix bad _bh spinlock nesting\n  drbd: revert \"delay probes\", feature is being re-implemented differently\n  drbd: Initialize all members of sync_conf to their defaults [Bugz 315]\n  drbd: Disable delay probes for the upcomming release\n  writeback: cleanup bdi_register\n  writeback: add new tracepoints\n  writeback: remove unnecessary init_timer call\n  writeback: optimize periodic bdi thread wakeups\n  writeback: prevent unnecessary bdi threads wakeups\n  writeback: move bdi threads exiting logic to the forker thread\n  writeback: restructure bdi forker loop a little\n  writeback: move last_active to bdi\n  writeback: do not remove bdi from bdi_list\n  writeback: simplify bdi code a little\n  writeback: do not lose wake-ups in bdi threads\n  ...\n\nFixed up pretty trivial conflicts in drivers/block/virtio_blk.c and\ndrivers/scsi/scsi_error.c as per Jens.\n"
    },
    {
      "commit": "5f248c9c251c60af3403902b26e08de43964ea0b",
      "tree": "6d3328e72a7e4015a64017eb30be18095c6a3c64",
      "parents": [
        "f6cec0ae58c17522a7bc4e2f39dae19f199ab534",
        "dca332528bc69e05f67161e1ed59929633d5e63d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (96 commits)\n  no need for list_for_each_entry_safe()/resetting with superblock list\n  Fix sget() race with failing mount\n  vfs: don\u0027t hold s_umount over close_bdev_exclusive() call\n  sysv: do not mark superblock dirty on remount\n  sysv: do not mark superblock dirty on mount\n  btrfs: remove junk sb_dirt change\n  BFS: clean up the superblock usage\n  AFFS: wait for sb synchronization when needed\n  AFFS: clean up dirty flag usage\n  cifs: truncate fallout\n  mbcache: fix shrinker function return value\n  mbcache: Remove unused features\n  add f_flags to struct statfs(64)\n  pass a struct path to vfs_statfs\n  update VFS documentation for method changes.\n  All filesystems that need invalidate_inode_buffers() are doing that explicitly\n  convert remaining -\u003eclear_inode() to -\u003eevict_inode()\n  Make -\u003edrop_inode() just return whether inode needs to be dropped\n  fs/inode.c:clear_inode() is gone\n  fs/inode.c:evict() doesn\u0027t care about delete vs. non-delete paths now\n  ...\n\nFix up trivial conflicts in fs/nilfs2/super.c\n"
    },
    {
      "commit": "45321ac54316eaeeebde0b5f728a1791e500974c",
      "tree": "c3989dd1a8b4a50168d696aa608941de88da9ade",
      "parents": [
        "30140837f256558c943636245ab90897a9455a70"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 07 13:43:19 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:35 2010 -0400"
      },
      "message": "Make -\u003edrop_inode() just return whether inode needs to be dropped\n\n... and let iput_final() do the actual eviction or retention\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d5c1515cf374951f07e5bf97b6ff3718d3401b6f",
      "tree": "2cc3f7c930b7c7398737c2639b001305f0afe15c",
      "parents": [
        "066d92dcbfa5842d98f6c4c671220cef50a9720f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 07 11:05:19 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:21 2010 -0400"
      },
      "message": "switch gfs2 to -\u003eevict_inode()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a4ffdde6e56fdf8c34ddadc2674d6eb978083369",
      "tree": "0fa07df92d804cb7d0482135195e4835cb16403a",
      "parents": [
        "b5fc510c48f631882ccec3c0f02a25d5b67de09f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 02 17:38:30 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:44 2010 -0400"
      },
      "message": "simplify checks for I_CLEAR/I_FREEING\n\nadd I_CLEAR instead of replacing I_FREEING with it.  I_CLEAR is\nequivalent to I_FREEING for almost all code looking at either;\nit\u0027s there to keep track of having called clear_inode() exactly\nonce per inode lifetime, at some point after having set I_FREEING.\nI_CLEAR and I_FREEING never get set at the same time with the\ncurrent code, so we can switch to setting i_flags to I_FREEING | I_CLEAR\ninstead of I_CLEAR without loss of information.  As the result of\nsuch change, checks become simpler and the amount of code that needs\nto know about I_CLEAR shrinks a lot.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\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": "eafdc7d190a944c755a9fe68573c193e6e0217e7",
      "tree": "915c3cc8004706fabf88eae1ab123a3fa0147516",
      "parents": [
        "256249584bda1a9357e2d29987a37f5b2df035f6"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:29:53 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:29 2010 -0400"
      },
      "message": "sort out blockdev_direct_IO variants\n\nMove the call to vmtruncate to get rid of accessive blocks to the callers\nin prepearation of the new truncate calling sequence.  This was only done\nfor DIO_LOCKING filesystems, so the __blockdev_direct_IO_newtrunc variant\nwas not needed anyway.  Get rid of blockdev_direct_IO_no_locking and\nits _newtrunc variant while at it as just opencoding the two additional\nparamters is shorted than the name suffix.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "90e0c225968f0878e090c7ff3f88323973476cee",
      "tree": "30fff5a5cb18b08d40e4d496489be6ce714a6cde",
      "parents": [
        "938a73b959cf77aadc41bded3bf416b618aa20b3",
        "5f11e6a44059f728dddd8d0dbe5b4368ea93575b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 12:57:07 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 12:57:07 2010 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6:\n  ext3: Fix dirtying of journalled buffers in data\u003djournal mode\n  ext3: default to ordered mode\n  quota: Use mark_inode_dirty_sync instead of mark_inode_dirty\n  quota: Change quota error message to print out disk and function name\n  MAINTAINERS: Update entries of ext2 and ext3\n  MAINTAINERS: Update address of Andreas Dilger\n  ext3: Avoid filesystem corruption after a crash under heavy delete load\n  ext3: remove vestiges of nobh support\n  ext3: Fix set but unused variables\n  quota: clean up quota active checks\n  quota: Clean up the namespace in dqblk_xfs.h\n  quota: check quota reservation on remove_dquot_ref\n"
    },
    {
      "commit": "3b7433b8a8a83c87972065b1852b7dcae691e464",
      "tree": "93fa2c003f8baef5ab0733b53bac77961ed5240c",
      "parents": [
        "4a386c3e177ca2fbc70c9283d0b46537844763a0",
        "6ee0578b4daaea01c96b172c6aacca43fd9807a6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 12:42:58 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 07 12:42:58 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq: (55 commits)\n  workqueue: mark init_workqueues() as early_initcall()\n  workqueue: explain for_each_*cwq_cpu() iterators\n  fscache: fix build on !CONFIG_SYSCTL\n  slow-work: kill it\n  gfs2: use workqueue instead of slow-work\n  drm: use workqueue instead of slow-work\n  cifs: use workqueue instead of slow-work\n  fscache: drop references to slow-work\n  fscache: convert operation to use workqueue instead of slow-work\n  fscache: convert object to use workqueue instead of slow-work\n  workqueue: fix how cpu number is stored in work-\u003edata\n  workqueue: fix mayday_mask handling on UP\n  workqueue: fix build problem on !CONFIG_SMP\n  workqueue: fix locking in retry path of maybe_create_worker()\n  async: use workqueue for worker pool\n  workqueue: remove WQ_SINGLE_CPU and use WQ_UNBOUND instead\n  workqueue: implement unbound workqueue\n  workqueue: prepare for WQ_UNBOUND implementation\n  libata: take advantage of cmwq and remove concurrency limitations\n  workqueue: fix worker management invocation without pending works\n  ...\n\nFixed up conflicts in fs/cifs/* as per Tejun. Other trivial conflicts in\ninclude/linux/workqueue.h, kernel/trace/Kconfig and kernel/workqueue.c\n"
    },
    {
      "commit": "7b6d91daee5cac6402186ff224c3af39d79f4a0e",
      "tree": "b1518cf0b6c301178e0a320f80610cd5b3aa7625",
      "parents": [
        "33659ebbae262228eef4e0fe990f393d1f0ed941"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "message": "block: unify flags for struct bio and struct request\n\nRemove the current bio flags and reuse the request flags for the bio, too.\nThis allows to more easily trace the type of I/O from the filesystem\ndown to the block driver.  There were two flags in the bio that were\nmissing in the requests:  BIO_RW_UNPLUG and BIO_RW_AHEAD.  Also I\u0027ve\nrenamed two request flags that had a superflous RW in them.\n\nNote that the flags are in bio.h despite having the REQ_ name - as\nblkdev.h includes bio.h that is the only way to go for now.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "41f2df62894bfcd3bf868af916b32b90aa7168dc",
      "tree": "b582399975cd1cf19aa8b6e67623f252b7cada85",
      "parents": [
        "01b6b67edabe864391163dc6405e2cb454f108db"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Jun 17 08:54:16 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:15:44 2010 +0200"
      },
      "message": "block: BARRIER request should imply SYNC\n\nA barrier request should by defintion have priority in get_request\nand let the queue be unplugged immediately as it\u0027s blocking all forward\nprogress due to the queue draining.\n\nMost filesystems already get this implicitly by the way how submit_bh\ntreats the buffer_ordered flag, and gfs2 sets it explicitly.  But btrfs\nand XFS are still forgetting to set the flag, as is blkdev_issue_flush\nand some places in DM/MD.\n\nFor XFS on metadata heavy workloads this gives a consistent speedup\nin the 2-3% range.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "0809f6ec18bbce54c996f5c36f4b9d371075c98b",
      "tree": "66aa0c523f0e7ab5b35504123b5238e5f81ea309",
      "parents": [
        "c639d5d8f69f37e24ed0354373f61fcbde4b9354"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Aug 02 10:15:17 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Aug 02 10:15:17 2010 +0100"
      },
      "message": "GFS2: Fix recovery stuck bug (try #2)\n\nThis is a clean up of the code which deals with LM_FLAG_NOEXP\nwhich aims to remove any possible race conditions by using\ngl_spin to cover the gap between testing for the LM_FLAG_NOEXP\nand the GL_FROZEN flag.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "c639d5d8f69f37e24ed0354373f61fcbde4b9354",
      "tree": "02f16a487bc88d98fe25766307bf688cf7771f36",
      "parents": [
        "7cdee5dbf477409e4afc6c9063492dc2577b41ea"
      ],
      "author": {
        "name": "Abhijith Das",
        "email": "adas@redhat.com",
        "time": "Fri Jul 30 11:34:52 2010 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jul 30 16:34:06 2010 +0100"
      },
      "message": "GFS2: Fix typo in stuffed file data copy handling\n\ntrunc_start() in bmap.c incorrectly uses sizeof(struct gfs2_inode) instead of\nsizeof(struct gfs2_dinode).\n\nSigned-off-by: Abhi Das \u003cadas@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n\n"
    },
    {
      "commit": "7cdee5dbf477409e4afc6c9063492dc2577b41ea",
      "tree": "cfa14683839870e542666cc3630dcb900e11ef01",
      "parents": [
        "d5341a92416706808dc5cd847826f28c08063c8c"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Jul 29 14:39:29 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Jul 29 14:39:29 2010 +0100"
      },
      "message": "Revert \"GFS2: recovery stuck on transaction lock\"\n\nThis reverts commit b7dc2df5725fe7355fd76000ead7e39728e1b8a9.\n\nThe initial patch didn\u0027t quite work since it doesn\u0027t cover all\nthe possible routes by which the GLF_FROZEN flag might be set.\nA revised fix is coming up in the next patch.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "d5341a92416706808dc5cd847826f28c08063c8c",
      "tree": "48f6680c25d2fab956c52cd5021110f47f2ddf54",
      "parents": [
        "4244b52e18be959ced77b984f268e46a0a7654e3"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Fri Jul 23 14:05:51 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Jul 29 09:37:38 2010 +0100"
      },
      "message": "GFS2: Make \"try\" lock not try quite so hard\n\nThis looks like a big change, but in reality its only a single line of actual\ncode change, the rest is just moving a function to before its new caller.\nThe \"try\" flag for glocks is a rather subtle and delicate setting since it\nrequires that the state machine tries just hard enough to ensure that it has\na good chance of getting the requested lock, but no so hard that the\nrequest can land up blocked behind another.\n\nThe patch adds in an additional check which will fail any queued try\nlocks if there is another request blocking the try lock request which\nis not granted and compatible, nor in progress already. The check is made\nonly after all pending locks which may be granted have been granted.\n\nI\u0027ve checked this with the reproducer for the reported flock bug which\nthis is intended to fix, and it now passes.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "4244b52e18be959ced77b984f268e46a0a7654e3",
      "tree": "ec53a38549c964743d23224a6f34042175e04c30",
      "parents": [
        "461cb419f074aab16836a660efb8e855b6c1609c"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Jul 20 19:45:03 2010 -0700"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Jul 29 09:37:18 2010 +0100"
      },
      "message": "GFS2: remove dependency on __GFP_NOFAIL\n\nThe k[mc]allocs in dr_split_leaf() and dir_double_exhash() are failable,\nso remove __GFP_NOFAIL from their masks.\n\nCc: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "461cb419f074aab16836a660efb8e855b6c1609c",
      "tree": "0b4ca5ab5c01efc37505a43ad96dbc94ae2bb95b",
      "parents": [
        "ba6e93645f039bd357e04b7b9d18f4e67757725e"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Thu Jun 24 19:21:20 2010 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Jul 29 09:36:56 2010 +0100"
      },
      "message": "GFS2: Simplify gfs2_write_alloc_required\n\nFunction gfs2_write_alloc_required always returned zero as its\nreturn code.  Therefore, it doesn\u0027t need to return a return code\nat all.  Given that, we can use the return value to return whether\nor not the dinode needs block allocations rather than passing\nthat value in, which in turn simplifies a bunch of error checking.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "ba6e93645f039bd357e04b7b9d18f4e67757725e",
      "tree": "11d2d4491255cd9a298fe098f6ec52e0f3d8b577",
      "parents": [
        "30116ff6c6d140bc696cc624e6d8e38f018c886e"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jun 14 10:01:30 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Jul 29 09:36:35 2010 +0100"
      },
      "message": "GFS2: Wait for journal id on mount if not specified on mount command line\n\nThis patch implements a wait for the journal id in the case that it has\nnot been specified on the command line. This is to allow the future\nremoval of the mount.gfs2 helper. The journal id would instead be\ndirectly communicated by gfs_controld to the file system. Here is a\ncomparison of the two systems:\n\nCurrent:\n1. mount calls mount.gfs2\n2. mount.gfs2 connects to gfs_controld to retrieve the journal id\n3. mount.gfs2 adds the journal id to the mount command line and calls\nthe mount system call\n4. gfs_controld receives the status of the mount request via a uevent\n\nProposed:\n1. mount calls the mount system call (no mount.gfs2 helper)\n2. gfs_controld receives a uevent for a gfs2 fs which it doesn\u0027t know\nabout already\n3. gfs_controld assigns a journal id to it via sysfs\n4. the mount system call then completes as normal (sending a uevent\naccording to status)\n\nThe advantage of the proposed system is that it is completely backward\ncompatible with the current system both at the kernel and at the\nuserland levels. The \"first\" parameter can also be set the same way,\nwith the restriction that it must be set before the journal id is\nassigned.\n\nIn addition, if mount becomes stuck waiting for a reply from\ngfs_controld which never arrives, then it is killable and will abort the\nmount gracefully.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "30116ff6c6d140bc696cc624e6d8e38f018c886e",
      "tree": "d6a69965d025c9de83ff0611a6c5eda913da0430",
      "parents": [
        "540ad6b62b3a188a53b51cac81d8a60d40e29fbd"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Mon Jun 14 09:58:41 2010 +0100"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Jul 29 09:36:14 2010 +0100"
      },
      "message": "GFS2: Use nobh_writepage\n\nUse nobh_writepage rather than calling mpage_writepage directly.\n\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "d2a97a4e99ff0ffdccd1fc46f22fb34270ef1e56",
      "tree": "f9ac90f438bb3221a6e383e7f1c9c817e95ad44b",
      "parents": [
        "fc0f5ac8fe693d1b05f5a928cc48135d1c8b7f2e"
      ],
      "author": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Wed Jul 28 17:56:23 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 28 11:10:03 2010 -0700"
      },
      "message": "GFS2: Use kmalloc when possible for -\u003ereaddir()\n\nIf we don\u0027t need a huge amount of memory in -\u003ereaddir() then\nwe can use kmalloc rather than vmalloc to allocate it. This\nshould cut down on the greater overheads associated with\nvmalloc for smaller directories.\n\nWe may be able to eliminate vmalloc entirely at some stage,\nbut this is easy to do right away.\n\nAlso using GFP_NOFS to avoid any issues wrt to deleting inodes\nwhile under a glock, and suggestion from Linus to factor out\nthe alloc/dealloc.\n\nI\u0027ve given this a test with a variety of different sized\ndirectories and it seems to work ok.\n\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Prarit Bhargava \u003cprarit@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6ecd7c2dd9f5dd4f6e8f65c8027159f9c73b0e4c",
      "tree": "ba12b0b9ba00e21ff73eee82714be448c5a7c6e9",
      "parents": [
        "991ea75cb1df7188d209274b3d51c105b4f18ffe"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jul 20 22:09:02 2010 +0200"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jul 23 13:14:25 2010 +0200"
      },
      "message": "gfs2: use workqueue instead of slow-work\n\nWorkqueue can now handle high concurrency.  Convert gfs to use\nworkqueue instead of slow-work.\n\n* Steven pointed out that recovery path might be run from allocation\n  path and thus requires forward progress guarantee without memory\n  allocation.  Create and use gfs_recovery_wq with rescuer.  Please\n  note that forward progress wasn\u0027t guaranteed with slow-work.\n\n* Updated to use non-reentrant workqueue.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "ade7ce31c22e961dfbe1a6d57fd362c90c187cbd",
      "tree": "96a64a3ae76a182e80db8457e49aa30355b54ae3",
      "parents": [
        "7af9cce8ae467bb2fcf3b0b6be3898835bdb984c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 10:56:01 2010 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Jul 21 16:01:46 2010 +0200"
      },
      "message": "quota: Clean up the namespace in dqblk_xfs.h\n\nAlmost all identifiers use the FS_* namespace, so rename the missing few\nXFS_* ones to FS_* as well.  Without this some people might get upset\nabout having too many XFS names in generic code.\n\nAcked-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "7f8275d0d660c146de6ee3017e1e2e594c49e820",
      "tree": "884db927118b44102750b5168ee36ef4b8b5cb4e",
      "parents": [
        "d0c6f6258478e1dba532bf7c28e2cd6e1047d3a4"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Jul 19 14:56:17 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Mon Jul 19 14:56:17 2010 +1000"
      },
      "message": "mm: add context argument to shrinker callback\n\nThe current shrinker implementation requires the registered callback\nto have global state to work from. This makes it difficult to shrink\ncaches that are not global (e.g. per-filesystem caches). Pass the shrinker\nstructure to the callback so that users can embed the shrinker structure\nin the context the shrinker needs to operate on and get back to it in the\ncallback via container_of().\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "728a756b8fcd22d80e2dbba8117a8a3aafd3f203",
      "tree": "82662dc27aaf1e277df977e57d778939be8ddb4a",
      "parents": [
        "8b4216018bdbfbb1b76150d202b15ee68c38e991"
      ],
      "author": {
        "name": "Bob Peterson",
        "email": "rpeterso@redhat.com",
        "time": "Wed Jul 14 18:12:26 2010 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Jul 15 09:07:56 2010 +0100"
      },
      "message": "GFS2: rename causes kernel Oops\n\nThis patch fixes a kernel Oops in the GFS2 rename code.\n\nThe problem was in the way the gfs2 directory code was trying\nto re-use sentinel directory entries.\n\nIn the failing case, gfs2\u0027s rename function was renaming a\nfile to another name that had the same non-trivial length.\nThe file being renamed happened to be the first directory\nentry on the leaf block.\n\nFirst, the rename code (gfs2_rename in ops_inode.c) found the\noriginal directory entry and decided it could do its job by\nsimply replacing the directory entry with another.  Therefore\nit determined correctly that no block allocations were needed.\n\nNext, the rename code deleted the old directory entry prior to\nreplacing it with the new name.  Therefore, the soon-to-be\nreplaced directory entry was temporarily made into a directory\nentry \"sentinel\" or a place holder at the start of a leaf block.\n\nLastly, it went to re-add the replacement directory entry in\nthat leaf block.  However, when gfs2_dirent_find_space was\nlooking for space in the leaf block, it used the wrong value\nfor the sentinel.  That threw off its calculations so later\nit decides it can\u0027t really re-use the sentinel and therefore\nmust allocate a new leaf block.  But because it previously decided\nto re-use the directory entry, it didn\u0027t waste the time to\ngrab a new block allocation for the inode.  Therefore, the\ninode\u0027s i_alloc pointer was still NULL and it crashes trying to\nreference it.\n\nIn the case of sentinel directory entries, the entire dirent is\nreused, not just the \"free space\" portion of it, and therefore\nthe function gfs2_dirent_find_space should use the value 0\nrather than GFS2_DIRENT_SIZE(0) for the actual dirent size.\n\nFixing this calculation enables the reproducer programs to work\nproperly.\n\nSigned-off-by: Bob Peterson \u003crpeterso@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    },
    {
      "commit": "8b4216018bdbfbb1b76150d202b15ee68c38e991",
      "tree": "c13bd1db68ca135b6362ee8e67e558fe87bfb93c",
      "parents": [
        "b1becbdee776b447f203aa8da9a40488d5a75e1d"
      ],
      "author": {
        "name": "Abhijith Das",
        "email": "adas@redhat.com",
        "time": "Sun Jul 04 01:33:24 2010 -0400"
      },
      "committer": {
        "name": "Steven Whitehouse",
        "email": "swhiteho@redhat.com",
        "time": "Thu Jul 15 09:07:16 2010 +0100"
      },
      "message": "GFS2: BUG in gfs2_adjust_quota\n\nHighMem pages on i686 do not get mapped to the buffer_heads and this was\ncausing a NULL pointer dereference when we were trying to memset page buffers\nto zero.\nWe now use zero_user() that kmaps the page and directly manipulates page data.\nThis patch also fixes a boundary condition that was incorrect.\n\nSigned-off-by: Abhi Das \u003cadas@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n"
    }
  ],
  "next": "b1becbdee776b447f203aa8da9a40488d5a75e1d"
}
