)]}'
{
  "log": [
    {
      "commit": "1316d4da3f632d5843d5a446203e73067dc40f09",
      "tree": "6ccaf36953d67749ab5943898cac345cf35ea738",
      "parents": [
        "4a33821236f2ef3af0081e8a5eec1301cbed3125"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Jul 04 05:27:36 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed Jul 06 15:44:40 2011 -0500"
      },
      "message": "xfs: unpin stale inodes directly in IOP_COMMITTED\n\nWhen inodes are marked stale in a transaction, they are treated\nspecially when the inode log item is being inserted into the AIL.\nIt tries to avoid moving the log item forward in the AIL due to a\nrace condition with the writing the underlying buffer back to disk.\nThe was \"fixed\" in commit de25c18 (\"xfs: avoid moving stale inodes\nin the AIL\").\n\nTo avoid moving the item forward, we return a LSN smaller than the\ncommit_lsn of the completing transaction, thereby trying to trick\nthe commit code into not moving the inode forward at all. I\u0027m not\nsure this ever worked as intended - it assumes the inode is already\nin the AIL, but I don\u0027t think the returned LSN would have been small\nenough to prevent moving the inode. It appears that the reason it\nworked is that the lower LSN of the inodes meant they were inserted\ninto the AIL and flushed before the inode buffer (which was moved to\nthe commit_lsn of the transaction).\n\nThe big problem is that with delayed logging, the returning of the\ndifferent LSN means insertion takes the slow, non-bulk path.  Worse\nyet is that insertion is to a position -before- the commit_lsn so it\nis doing a AIL traversal on every insertion, and has to walk over\nall the items that have already been inserted into the AIL. It\u0027s\nexpensive.\n\nTo compound the matter further, with delayed logging inodes are\nlikely to go from clean to stale in a single checkpoint, which means\nthey aren\u0027t even in the AIL at all when we come across them at AIL\ninsertion time. Hence these were all getting inserted into the AIL\nwhen they simply do not need to be as inodes marked XFS_ISTALE are\nnever written back.\n\nTransactional/recovery integrity is maintained in this case by the\nother items in the unlink transaction that were modified (e.g. the\nAGI btree blocks) and committed in the same checkpoint.\n\nSo to fix this, simply unpin the stale inodes directly in\nxfs_inode_item_committed() and return -1 to indicate that the AIL\ninsertion code does not need to do any further processing of these\ninodes.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "4a33821236f2ef3af0081e8a5eec1301cbed3125",
      "tree": "4bb7c6f9e8ceb2b3e6cdd8bea7a76bb73676b58f",
      "parents": [
        "df4368a146d2b350b8398babfe11e2088f741d67"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Thu Jun 23 01:35:01 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Jun 23 22:13:51 2011 -0500"
      },
      "message": "xfs: prevent bogus assert when trying to remove non-existent attribute\n\nIf the attribute fork on an inode is in btree format and has\nmultiple levels (i.e node format rather than leaf format), then a\nlookup failure will trigger an assert failure in xfs_da_path_shift\nif the flag XFS_DA_OP_OKNOENT is not set. This flag is used to\nindicate to the directory btree code that not finding an entry is\nnot a fatal error. In the case of doing a lookup for a directory\nname removal, this is valid as a user cannot insert an arbitrary\nname to remove from the directory btree.\n\nHowever, in the case of the attribute tree, a user has direct\ncontrol over the attribute name and can ask for any random name to\nbe removed without any validation. In this case, fsstress is asking\nfor a non-existent user.selinux attribute to be removed, and that is\ncausing xfs_da_path_shift() to fall off the bottom of the tree where\nit asserts that a lookup failure is allowed. Because the flag is not\nset, we die a horrible death on a debug enable kernel.\n\nPrevent this assert from firing on attribute removes by adding the\nop_flag XFS_DA_OP_OKNOENT to atribute removal operations.\n\nDiscovered when testing on a SELinux enabled system by fsstress in\ntest 070 by trying to remove a non-existent user.selinux attribute.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "df4368a146d2b350b8398babfe11e2088f741d67",
      "tree": "2e8137eeaac9528f29fbab770fdf078a7496d5b5",
      "parents": [
        "778e24bb6dd8682318bb496d4bfdc32b501a6420"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Thu Jun 23 01:35:00 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Jun 23 22:13:46 2011 -0500"
      },
      "message": "xfs: clear XFS_IDIRTY_RELEASE on truncate down\n\nWhen an inode is truncated down, speculative preallocation is\nremoved from the inode. This should also reset the state bits for\ncontrolling whether preallocation is subsequently removed when the\nfile is next closed. The flag is not being cleared, so repeated\noperations on a file that first involve a truncate (e.g. multiple\nrepeated dd invocations on a file) give different file layouts for\nthe second and subsequent invocations.\n\nFix this by clearing the XFS_IDIRTY_RELEASE state bit when the\nXFS_ITRUNCATED bit is detected in xfs_release() and hence ensure\nthat speculative delalloc is removed on files that have been\ntruncated down.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "778e24bb6dd8682318bb496d4bfdc32b501a6420",
      "tree": "f245e607bb2e999d046d777a6abd84c422c86f41",
      "parents": [
        "a27a263bae072a499acc77b632238a6dacccf888"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Thu Jun 23 01:34:59 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Jun 23 22:13:31 2011 -0500"
      },
      "message": "xfs: reset inode per-lifetime state when recycling it\n\nXFS inodes has several per-lifetime state fields that determine the\nbehaviour of the inode. These state fields are not all reset when an\ninode is reused from the reclaimable state.\n\nThis can lead to unexpected behaviour of the new inode such as\nspeculative preallocation not being truncated away in the expected\nmanner for local files until the inode is subsequently truncated,\nfreed or cycles out of the cache. It can also lead to an inode being\nconsidered to be a filestream inode or having been truncated when\nthat is not the case.\n\nRework the reinitialisation of the inode when it is recycled to\nensure that it is pristine before it is reused. While there, also\nfix the resetting of state flags in the recycling error paths so the\ninode does not become unreclaimable.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "a27a263bae072a499acc77b632238a6dacccf888",
      "tree": "b2728b2900c3926cba5833e171b56bc7371dbc07",
      "parents": [
        "c46a131c0c0f4c2457e6b1e430c578a5cb057334"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Jun 16 12:02:23 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Jun 16 10:52:39 2011 -0500"
      },
      "message": "xfs: make log devices with write back caches work\n\nThere\u0027s no reason not to support cache flushing on external log devices.\nThe only thing this really requires is flushing the data device first\nboth in fsync and log commits.  A side effect is that we also have to\nremove the barrier write test during mount, which has been superflous\nsince the new FLUSH+FUA code anyway.  Also use the chance to flush the\nRT subvolume write cache before the fsync commit, which is required\nfor correct semantics.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "c46a131c0c0f4c2457e6b1e430c578a5cb057334",
      "tree": "82a85e1ca871aa1c953f25659c4db8963bf7cc13",
      "parents": [
        "59c5f46fbe01a00eedf54a23789634438bb80603"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Sun Jun 05 11:12:31 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Jun 14 11:02:13 2011 -0500"
      },
      "message": "xfs: fix -\u003emknod() return value on xfs_get_acl() failure\n\n-\u003emknod() should return negative on errors and PTR_ERR() gives\nalready negative value...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "aa38572954ade525817fe88c54faebf85e5a61c0",
      "tree": "ef398ec06c97134592f62a49c99f3f80041b427c",
      "parents": [
        "d6e9bd256c88ce5f4b668249e363a74f51393daa"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri May 27 06:53:02 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 27 07:04:40 2011 -0400"
      },
      "message": "fs: pass exact type of data dirties to -\u003edirty_inode\n\nTell the filesystem if we just updated timestamp (I_DIRTY_SYNC) or\nanything else, so that the filesystem can track internally if it\nneeds to push out a transaction for fdatasync or not.\n\nThis is just the prototype change with no user for it yet.  I plan\nto push large XFS changes for the next merge window, and getting\nthis trivial infrastructure in this window would help a lot to avoid\ntree interdependencies.\n\nAlso remove incorrect comments that -\u003edirty_inode can\u0027t block.  That\nhas been changed a long time ago, and many implementations rely on it.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8a0599dd2471f2a2e409498c08a0ab339057ad06",
      "tree": "c23c72f3eb4a95d8854720be9d8a228d4adae54a",
      "parents": [
        "35806b4f7c5620b547f183e9d53f7cfaeabb582b",
        "233eebb9a96f956c541c0c9094fd321894bd93a7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 10:49:11 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 10:49:11 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs\n\n* \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs:\n  xfs: correctly decrement the extent buffer index in xfs_bmap_del_extent\n  xfs: check for valid indices in xfs_iext_get_ext and xfs_iext_idx_to_irec\n  xfs: fix up asserts in xfs_iflush_fork\n  xfs: do not do pointer arithmetic on extent records\n  xfs: do not use unchecked extent indices in xfs_bunmapi\n  xfs: do not use unchecked extent indices in xfs_bmapi\n  xfs: do not use unchecked extent indices in xfs_bmap_add_extent_*\n  xfs: remove if_lastex\n  xfs: remove the unused XFS_BMAPI_RSVBLOCKS flag\n  xfs: do not discard alloc btree blocks\n  xfs: add online discard support\n"
    },
    {
      "commit": "233eebb9a96f956c541c0c9094fd321894bd93a7",
      "tree": "fb7e2d79a0d79ae69e01023c525f6f11a6a07314",
      "parents": [
        "87bef1812d337beadfb1099e7361fd41264eb88e"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed May 11 15:04:05 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 25 10:48:38 2011 -0500"
      },
      "message": "xfs: correctly decrement the extent buffer index in xfs_bmap_del_extent\n\nThe code in xfs_bmap_del_extent does not correctly decrement the\nextent buffer index when deleting a whole extent.  Most of the time\nthis gets caught by checks in xfs_bmapi that work around it and\ndecrement it manually and thus wasn\u0027t noticed so far.\n\nBased on an earlier patch from Lachlan McIlroy.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Lachlan McIlroy \u003clmcilroy@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "87bef1812d337beadfb1099e7361fd41264eb88e",
      "tree": "707b3c2a623b4fc80ce790bb61bd5262d9396821",
      "parents": [
        "ab1908a5bb21a8eebf16e5d92d087fd9413cf67d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed May 11 15:04:11 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 25 10:48:37 2011 -0500"
      },
      "message": "xfs: check for valid indices in xfs_iext_get_ext and xfs_iext_idx_to_irec\n\nBased on an earlier patch from Lachlan McIlroy.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Lachlan McIlroy \u003clmcilroy@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "ab1908a5bb21a8eebf16e5d92d087fd9413cf67d",
      "tree": "7c8728635209cb8f463c97ba934875fa1388e370",
      "parents": [
        "f1c63b73cf60dc4800cde5ce7fd9466c419e5e36"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed May 11 15:04:10 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 25 10:48:37 2011 -0500"
      },
      "message": "xfs: fix up asserts in xfs_iflush_fork\n\nRemove asserts in xfs_iflush_fork that would call xfs_iext_get_ext\nwith a potentially invalid extent buffer index.\n\nBased on an earlier patch from Lachlan McIlroy.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Lachlan McIlroy \u003clmcilroy@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "f1c63b73cf60dc4800cde5ce7fd9466c419e5e36",
      "tree": "df9250617bbf4e7521c9b25a2d7b3a0ffb09c969",
      "parents": [
        "00239acf36d3bba8e7c0609e6c473d6e408a2135"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed May 11 15:04:09 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 25 10:48:37 2011 -0500"
      },
      "message": "xfs: do not do pointer arithmetic on extent records\n\nWe need to call xfs_iext_get_ext for the previous extent to get a\nvalid pointer, and can\u0027t just do pointer arithmetics as they might\nbe in different pages.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Lachlan McIlroy \u003clmcilroy@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "00239acf36d3bba8e7c0609e6c473d6e408a2135",
      "tree": "4bde73f37ebd42aeeb5cc8b5fa7f05364ef77659",
      "parents": [
        "5690f92199956c0f2a2d9f718b5031e1300a1de1"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed May 11 15:04:08 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 25 10:48:37 2011 -0500"
      },
      "message": "xfs: do not use unchecked extent indices in xfs_bunmapi\n\nMake sure to only call xfs_iext_get_ext after we\u0027ve validate the\nextent index when moving on to the next index in xfs_bunmapi.  Also\nremove the old workaround for too large indices that has been\nsuperceeded by the proper fix in xfs_bmap_del_extent.\n\nBased on an earlier patch from Lachlan McIlroy.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Lachlan McIlroy \u003clmcilroy@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "5690f92199956c0f2a2d9f718b5031e1300a1de1",
      "tree": "66ae28ac9f0fe4deae3452f81f244ae162a25fcb",
      "parents": [
        "2f2b3220b0566692da14e06ea5fc0d697a78dc7c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed May 11 15:04:07 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 25 10:48:37 2011 -0500"
      },
      "message": "xfs: do not use unchecked extent indices in xfs_bmapi\n\nMake sure to only call xfs_iext_get_ext after we\u0027ve validate the\nextent index when moving on to the next index in xfs_bmapi.\n\nBased on an earlier patch from Lachlan McIlroy.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Lachlan McIlroy \u003clmcilroy@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "2f2b3220b0566692da14e06ea5fc0d697a78dc7c",
      "tree": "714a8ac9b2bf41f4253eb340b550023f47d5d593",
      "parents": [
        "ec90c5563413ba6d29607397c54958d49c3461a3"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed May 11 15:04:06 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 25 10:48:37 2011 -0500"
      },
      "message": "xfs: do not use unchecked extent indices in xfs_bmap_add_extent_*\n\nMake sure to only call xfs_iext_get_ext after we\u0027ve validate the\nextent index in the various xfs_bmap_add_extent_* helpers.\n\nBased on an earlier patch from Lachlan McIlroy.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Lachlan McIlroy \u003clmcilroy@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "ec90c5563413ba6d29607397c54958d49c3461a3",
      "tree": "7ee1bb9428858d2f43b426ae71bab6a4703af6f7",
      "parents": [
        "548932739b16e623601f6d7dfb31a1fe28cda050"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon May 23 08:52:53 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 25 10:48:37 2011 -0500"
      },
      "message": "xfs: remove if_lastex\n\nThe if_lastex field in struct xfs_ifork is only used as a temporary\nindex during xfs_bmapi and xfs_bunmapi.  Instead of using the inode\nfork to store it keep it local in the callchain.  Fortunately this\nis very easy as we already pass a stack copy of it down the whole\nchain which can simplify be changed to be passed by reference.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "548932739b16e623601f6d7dfb31a1fe28cda050",
      "tree": "6966aeb6ad9c6e066e37b1b86c9a95df8f4f5957",
      "parents": [
        "55a7bc5a30ff2d30d8a34fea2af9fc601b32e61a"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed May 11 15:04:03 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 25 10:48:36 2011 -0500"
      },
      "message": "xfs: remove the unused XFS_BMAPI_RSVBLOCKS flag\n\nThe XFS_BMAPI_RSVBLOCKS is unused, and as far as I can see has\nalways been.  Remove it to simplify the bmapi implementation and\nconserve stack space.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "1495f230fa7750479c79e3656286b9183d662077",
      "tree": "e5e233bb9fe1916ccc7281e7dcc71b1572fb22c5",
      "parents": [
        "a09ed5e00084448453c8bada4dcd31e5fbfc2f21"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Tue May 24 17:12:27 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:26 2011 -0700"
      },
      "message": "vmscan: change shrinker API by passing shrink_control struct\n\nChange each shrinker\u0027s API by consolidating the existing parameters into\nshrink_control struct.  This will simplify any further features added w/o\ntouching each file of shrinker.\n\n[akpm@linux-foundation.org: fix build]\n[akpm@linux-foundation.org: fix warning]\n[kosaki.motohiro@jp.fujitsu.com: fix up new shrinker API]\n[akpm@linux-foundation.org: fix xfs warning]\n[akpm@linux-foundation.org: update gfs2]\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "55a7bc5a30ff2d30d8a34fea2af9fc601b32e61a",
      "tree": "a6cc677dc240ebfeec85b66a2669842dc3094461",
      "parents": [
        "e84661aa84e2e003738563f65155d4f12dc474e7"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed May 04 18:55:15 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue May 24 11:17:22 2011 -0500"
      },
      "message": "xfs: do not discard alloc btree blocks\n\nBlocks for the allocation btree are allocated from and released to\nthe AGFL, and thus frequently reused.  Even worse we do not have an\neasy way to avoid using an AGFL block when it is discarded due to\nthe simple FILO list of free blocks, and thus can frequently stall\non blocks that are currently undergoing a discard.\n\nAdd a flag to the busy extent tracking structure to skip the discard\nfor allocation btree blocks.  In normal operation these blocks are\nreused frequently enough that there is no need to discard them\nanyway, but if they spill over to the allocation btree as part of a\nbalance we \"leak\" blocks that we would otherwise discard.  We could\nfix this by adding another flag and keeping these block in the\nrbtree even after they aren\u0027t busy any more so that we could discard\nthem when they migrate out of the AGFL.  Given that this would cause\nsignificant overhead I don\u0027t think it\u0027s worthwile for now.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "e84661aa84e2e003738563f65155d4f12dc474e7",
      "tree": "9f9b6d2fac2048c5fb8c2728bcf2930435890d4f",
      "parents": [
        "bf59170a66bc3eaf3ee513aa6ce9774aa2ab5188"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri May 20 13:45:32 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue May 24 11:17:13 2011 -0500"
      },
      "message": "xfs: add online discard support\n\nNow that we have reliably tracking of deleted extents in a\ntransaction we can easily implement \"online\" discard support\nwhich calls blkdev_issue_discard once a transaction commits.\n\nThe actual discard is a two stage operation as we first have\nto mark the busy extent as not available for reuse before we\ncan start the actual discard.  Note that we don\u0027t bother\nsupporting discard for the non-delaylog mode.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "a77febbef105554c5a37241cf903f48ab7bc03c7",
      "tree": "d6f96d9d5837312ce6dc2db9f3fc93a243eec87b",
      "parents": [
        "42cd71bf1e3a081b3150018bbf448cb6c8a844a5",
        "bf59170a66bc3eaf3ee513aa6ce9774aa2ab5188"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 23 15:19:16 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 23 15:19:16 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs\n\n* \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs:\n  xfs: obey minleft values during extent allocation correctly\n  xfs: reset buffer pointers before freeing them\n  xfs: avoid getting stuck during async inode flushes\n  xfs: fix xfs_itruncate_start tracing\n  xfs: fix duplicate workqueue initialisation\n  xfs: kill off xfs_printk()\n  xfs: fix race condition in AIL push trigger\n  xfs: make AIL target updates and compares 32bit safe.\n  xfs: always push the AIL to the target\n  xfs: exit AIL push work correctly when AIL is empty\n  xfs: ensure reclaim cursor is reset correctly at end of AG\n  xfs: add an x86 compat handler for XFS_IOC_ZERO_RANGE\n  xfs: fix compiler warning in xfs_trace.h\n  xfs: cleanup duplicate initializations\n  xfs: reduce the number of pagb_lock roundtrips in xfs_alloc_clear_busy\n  xfs: exact busy extent tracking\n  xfs: do not immediately reuse busy extent ranges\n  xfs: optimize AGFL refills\n"
    },
    {
      "commit": "57d19e80f459dd845fb3cfeba8e6df8471bac142",
      "tree": "8254766715720228db3d50f1ef3c7fe003c06d65",
      "parents": [
        "ee9ec4f82049c678373a611ce20ac67fe9ad836e",
        "e64851f5a0ad6ec991f74ebb3108c35aa0323d5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 23 09:12:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 23 09:12:26 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (39 commits)\n  b43: fix comment typo reqest -\u003e request\n  Haavard Skinnemoen has left Atmel\n  cris: typo in mach-fs Makefile\n  Kconfig: fix copy/paste-ism for dell-wmi-aio driver\n  doc: timers-howto: fix a typo (\"unsgined\")\n  perf: Only include annotate.h once in tools/perf/util/ui/browsers/annotate.c\n  md, raid5: Fix spelling error in comment (\u0027Ofcourse\u0027 --\u003e \u0027Of course\u0027).\n  treewide: fix a few typos in comments\n  regulator: change debug statement be consistent with the style of the rest\n  Revert \"arm: mach-u300/gpio: Fix mem_region resource size miscalculations\"\n  audit: acquire creds selectively to reduce atomic op overhead\n  rtlwifi: don\u0027t touch with treewide double semicolon removal\n  treewide: cleanup continuations and remove logging message whitespace\n  ath9k_hw: don\u0027t touch with treewide double semicolon removal\n  include/linux/leds-regulator.h: fix syntax in example code\n  tty: fix typo in descripton of tty_termios_encode_baud_rate\n  xtensa: remove obsolete BKL kernel option from defconfig\n  m68k: fix comment typo \u0027occcured\u0027\n  arch:Kconfig.locks Remove unused config option.\n  treewide: remove extra semicolons\n  ...\n"
    },
    {
      "commit": "bf59170a66bc3eaf3ee513aa6ce9774aa2ab5188",
      "tree": "aae7b19e61ea88cddf4ba5508ef971c767f15b4d",
      "parents": [
        "44396476a0f24e5174768d3732f1958857c26d22"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Thu Apr 21 09:34:28 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu May 19 12:03:48 2011 -0500"
      },
      "message": "xfs: obey minleft values during extent allocation correctly\n\nWhen allocating an extent that is long enough to consume the\nremaining free space in an AG, we need to ensure that the allocation\nleaves enough space in the AG for any subsequent bmap btree blocks\nthat are needed to track the new extent. These have to be allocated\nin the same AG as we only reserve enough blocks in an allocation\ntransaction for modification of the freespace trees in a single AG.\n\nxfs_alloc_fix_minleft() has been considering blocks on the AGFL as\nfree blocks available for extent and bmbt block allocation, which is\nnot correct - blocks on the AGFL are there exclusively for the use\nof the free space btrees. As a result, when minleft is less than the\nnumber of blocks on the AGFL, xfs_alloc_fix_minleft() does not trim\nthe given extent to leave minleft blocks available for bmbt\nallocation, and hence we can fail allocation during bmbt record\ninsertion.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "44396476a0f24e5174768d3732f1958857c26d22",
      "tree": "2581ab960427ac915ad0684a7d921476097b1d0d",
      "parents": [
        "ee58abdfcc8201f500107c7ba03f738af8b49b85"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Thu Apr 21 09:34:27 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu May 19 12:03:45 2011 -0500"
      },
      "message": "xfs: reset buffer pointers before freeing them\n\nWhen we free a vmapped buffer, we need to ensure the vmap address\nand length we free is the same as when it was allocated. In various\nplaces in the log code we change the memory the buffer is pointing\nto before issuing IO, but we never reset the buffer to point back to\nit\u0027s original memory (or no memory, if that is the case for the\nbuffer).\n\nAs a result, when we free the buffer it points to memory that is\nowned by something else and attempts to unmap and free it. Because\nthe range does not match any known mapped range, it can trigger\nBUG_ON() traps in the vmap code, and potentially corrupt the vmap\narea tracking.\n\nFix this by always resetting these buffers to their original state\nbefore freeing them.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "ee58abdfcc8201f500107c7ba03f738af8b49b85",
      "tree": "626cb302906b221d676c8318a7082663c3e80fdb",
      "parents": [
        "e57375153d7376f2a923d98c388c1e20227b5731"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Thu Apr 21 09:34:26 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu May 19 12:03:42 2011 -0500"
      },
      "message": "xfs: avoid getting stuck during async inode flushes\n\nWhen the underlying inode buffer is locked and xfs_sync_inode_attr()\nis doing a non-blocking flush, xfs_iflush() can return EAGAIN.  When\nthis happens, clear the error rather than returning it to\nxfs_inode_ag_walk(), as returning EAGAIN will result in the AG walk\ndelaying for a short while and trying again. This can result in\nbackground walks getting stuck on the one AG until inode buffer is\nunlocked by some other means.\n\nThis behaviour was noticed when analysing event traces followed by\ncode inspection and verification of the fix via further traces.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "e57375153d7376f2a923d98c388c1e20227b5731",
      "tree": "3370de2711d88a792d573b0234b645c57a7289e4",
      "parents": [
        "1beb65ad45f29fa1d53c13c6a20056a190ac9060"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Thu Apr 21 09:34:25 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu May 19 12:03:36 2011 -0500"
      },
      "message": "xfs: fix xfs_itruncate_start tracing\n\nVariables are ordered incorrectly in trace call.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "1beb65ad45f29fa1d53c13c6a20056a190ac9060",
      "tree": "263eae9c94fd2ae77503322a3387c463475c922f",
      "parents": [
        "e69522a8cc51fbefbfe9d178ad177f7b6ca00ebd"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue May 10 02:05:50 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu May 19 12:03:24 2011 -0500"
      },
      "message": "xfs: fix duplicate workqueue initialisation\n\nThe workqueue initialisation function is called twice when\ninitialising the XFS subsystem. Remove the second initialisation\ncall.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "e69522a8cc51fbefbfe9d178ad177f7b6ca00ebd",
      "tree": "153a8fd226f368164d6b1f21e31e590396c37c9f",
      "parents": [
        "e4d3c4a43b595d5124ae824d300626e6489ae857"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Tue May 03 20:14:44 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu May 19 11:38:09 2011 -0500"
      },
      "message": "xfs: kill off xfs_printk()\n\nxfs_alert_tag() can be defined using xfs_alert(), and thereby avoid\nusing xfs_printk() altogether.  This is the only remaining use of\nxfs_printk(), so changing it this way means xfs_printk() can simply\nbe eliminated.can simply be eliminated.can simply be eliminated.can\nsimply be eliminated.can simply be eliminated.can simply be\neliminated.can simply be eliminated.can simply be eliminated.can\nsimply be eliminated.\n\nAlso add format checking to the non-debug inline function xfs_debug.\nMiscellaneous function prototype argument alignment.\n\n(Updated to delete the definition of xfs_printk(), which is\nno longer used or needed.)\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "70f23fd66bc821a0e99647f70a809e277cc93c4c",
      "tree": "3e768b77e63c6364ef32cf257c9449369afd215f",
      "parents": [
        "c719864f15676af92b705589c93ba1468b89cd24"
      ],
      "author": {
        "name": "Justin P. Mattock",
        "email": "justinmattock@gmail.com",
        "time": "Tue May 10 10:16:21 2011 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Tue May 10 10:16:21 2011 +0200"
      },
      "message": "treewide: fix a few typos in comments\n\n- kenrel -\u003e kernel\n- whetehr -\u003e whether\n- ttt -\u003e tt\n- sss -\u003e ss\n\nSigned-off-by: Justin P. Mattock \u003cjustinmattock@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "7ac956576d0ce8f97450a39c2f304db8eea01647",
      "tree": "614ad6b5923a8765a26e915dff1b218c69009227",
      "parents": [
        "fe0da767311933d1c1907cb8d326beea7a3cbd9c"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 06 02:54:08 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 09 18:35:04 2011 -0500"
      },
      "message": "xfs: fix race condition in AIL push trigger\n\nThe recent conversion of the xfsaild functionality to a work queue\nintroduced a hard-to-hit log space grant hang. One is caused by a\nrace condition in determining whether there is a psh in progress or\nnot.\n\nThe XFS_AIL_PUSHING_BIT is used to determine whether a push is\ncurrently in progress.  When the AIL push work completes, it checked\nwhether the target changed and cleared the PUSHING bit to allow a\nnew push to be requeued. The race condition is as follows:\n\n\tThread 1\t\tpush work\n\n\tsmp_wmb()\n\t\t\t\tsmp_rmb()\n\t\t\t\tcheck ailp-\u003exa_target unchanged\n\tupdate ailp-\u003exa_target\n\ttest/set PUSHING bit\n\tdoes not queue\n\t\t\t\tclear PUSHING bit\n\t\t\t\tdoes not requeue\n\nNow that the push target is updated, new attempts to push the AIL\nwill not trigger as the push target will be the same, and hence\ndespite trying to push the AIL we won\u0027t ever wake it again.\n\nThe fix is to ensure that the AIL push work clears the PUSHING bit\nbefore it checks if the target is unchanged.\n\nAs a result, both push triggers operate on the same test/set bit\ncriteria, so even if we race in the push work and miss the target\nupdate, the thread requesting the push will still set the PUSHING\nbit and queue the push work to occur. For safety sake, the same\nqueue check is done if the push work detects the target change,\nthough only one of the two will will queue new work due to the use\nof test_and_set_bit() checks.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n\n(cherry picked from commit e4d3c4a43b595d5124ae824d300626e6489ae857)\n"
    },
    {
      "commit": "fe0da767311933d1c1907cb8d326beea7a3cbd9c",
      "tree": "e48cc699e05b10c61b332023a3ab8107a5d5a01a",
      "parents": [
        "50e86686dfb287d720af8b0f977202d205c04215"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 06 02:54:07 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 09 18:35:04 2011 -0500"
      },
      "message": "xfs: make AIL target updates and compares 32bit safe.\n\nThe recent conversion of the xfsaild functionality to a work queue\nintroduced a hard-to-hit log space grant hang. One of the problems\nnoticed was that updates of the push target are not 32 bit safe as\nthe target is a 64 bit value.\n\nWe cannot copy a 64 bit LSN without the possibility of corrupting\nthe result when racing with another updating thread. We have\nfunction to do this update safely without needing to care about\n32/64 bit issues - xfs_trans_ail_copy_lsn() - so use that when\nupdating the AIL push target.\n\nAlso move the reading of the target in the push work inside the AIL\nlock, and use XFS_LSN_CMP() for the unlocked comparison during work\ntermination to close read holes as well.\n\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n\n(cherry picked from commit fd5670f22fce247754243cf2ed41941e5762d990)\n"
    },
    {
      "commit": "50e86686dfb287d720af8b0f977202d205c04215",
      "tree": "b939f86e61bb3b57a7db685671f97b3ac1c10d80",
      "parents": [
        "9e7004e741de0b2daabbbadafbaf11ff1a94e00c"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 06 02:54:06 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 09 18:35:03 2011 -0500"
      },
      "message": "xfs: always push the AIL to the target\n\nThe recent conversion of the xfsaild functionality to a work queue\nintroduced a hard-to-hit log space grant hang. One of the problems\ndiscovered is a target mismatch between the item pushing loop and\nthe target itself.\n\nThe push trigger checks for the target increasing (i.e. new target \u003e\ncurrent) while the push loop only pushes items that have a LSN \u003c\ncurrent. As a result, we can get the situation where the push target\nis X, the items at the tail of the AIL have LSN X and they don\u0027t get\npushed. The push work then completes thinking it is done, and cannot\nbe restarted until the push target increases to \u003e\u003d X + 1. If the\npush target then never increases (because the tail is not moving),\nthen we never run the push work again and we stall.\n\nFix it by making sure log items with a LSN that matches the target\nexactly are pushed during the loop.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n\n(cherry picked from commit cb64026b6e8af50db598ec7c3f59d504259b00bb)\n"
    },
    {
      "commit": "9e7004e741de0b2daabbbadafbaf11ff1a94e00c",
      "tree": "86ed6be6bd95114e6bf3a2680d21d35dcd0a335e",
      "parents": [
        "228d62dd3f74734b9801c789b5addc57fdfc208f"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 06 02:54:05 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 09 18:35:03 2011 -0500"
      },
      "message": "xfs: exit AIL push work correctly when AIL is empty\n\nThe recent conversion of the xfsaild functionality to a work queue\nintroduced a hard-to-hit log space grant hang. The main cause is a\nregression where a work exit path fails to clear the PUSHING state\nand recheck the target correctly.\n\nMake both exit paths do the same PUSHING bit clearing and target\nchecking when the \"no more work to be done\" condition is hit.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n\n(cherry picked from commit ea35a20021f8497390d05b93271b4d675516c654)\n"
    },
    {
      "commit": "228d62dd3f74734b9801c789b5addc57fdfc208f",
      "tree": "5ee966ac8b7960484700b1f57ef793e14b33d11e",
      "parents": [
        "26822eebb25500fb0776c7c256a6af041e9f538b"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 06 02:54:04 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 09 18:35:03 2011 -0500"
      },
      "message": "xfs: ensure reclaim cursor is reset correctly at end of AG\n\nOn a 32 bit highmem PowerPC machine, the XFS inode cache was growing\nwithout bound and exhausting low memory causing the OOM killer to be\ntriggered. After some effort, the problem was reproduced on a 32 bit\nx86 highmem machine.\n\nThe problem is that the per-ag inode reclaim index cursor was not\ngetting reset to the start of the AG if the radix tree tag lookup\nfound no more reclaimable inodes. Hence every further reclaim\nattempt started at the same index beyond where any reclaimable\ninodes lay, and no further background reclaim ever occurred from the\nAG.\n\nWithout background inode reclaim the VM driven cache shrinker\nsimply cannot keep up with cache growth, and OOM is the result.\n\nWhile the change that exposed the problem was the conversion of the\ninode reclaim to use work queues for background reclaim, it was not\nthe cause of the bug. The bug was introduced when the cursor code\nwas added, just waiting for some weird configuration to strike....\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nTested-By: Christian Kujau \u003clists@nerdbynature.de\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n\n(cherry picked from commit b223221956675ce8a7b436d198ced974bb388571)\n"
    },
    {
      "commit": "e4d3c4a43b595d5124ae824d300626e6489ae857",
      "tree": "e9bef16559fd47aa0bbea1d16ed13c2695f618b2",
      "parents": [
        "fd5670f22fce247754243cf2ed41941e5762d990"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 06 02:54:08 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 09 12:17:04 2011 -0500"
      },
      "message": "xfs: fix race condition in AIL push trigger\n\nThe recent conversion of the xfsaild functionality to a work queue\nintroduced a hard-to-hit log space grant hang. One is caused by a\nrace condition in determining whether there is a psh in progress or\nnot.\n\nThe XFS_AIL_PUSHING_BIT is used to determine whether a push is\ncurrently in progress.  When the AIL push work completes, it checked\nwhether the target changed and cleared the PUSHING bit to allow a\nnew push to be requeued. The race condition is as follows:\n\n\tThread 1\t\tpush work\n\n\tsmp_wmb()\n\t\t\t\tsmp_rmb()\n\t\t\t\tcheck ailp-\u003exa_target unchanged\n\tupdate ailp-\u003exa_target\n\ttest/set PUSHING bit\n\tdoes not queue\n\t\t\t\tclear PUSHING bit\n\t\t\t\tdoes not requeue\n\nNow that the push target is updated, new attempts to push the AIL\nwill not trigger as the push target will be the same, and hence\ndespite trying to push the AIL we won\u0027t ever wake it again.\n\nThe fix is to ensure that the AIL push work clears the PUSHING bit\nbefore it checks if the target is unchanged.\n\nAs a result, both push triggers operate on the same test/set bit\ncriteria, so even if we race in the push work and miss the target\nupdate, the thread requesting the push will still set the PUSHING\nbit and queue the push work to occur. For safety sake, the same\nqueue check is done if the push work detects the target change,\nthough only one of the two will will queue new work due to the use\nof test_and_set_bit() checks.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n\n"
    },
    {
      "commit": "fd5670f22fce247754243cf2ed41941e5762d990",
      "tree": "4574bf415df6d3c8a5c501ee3b02727dd573ba03",
      "parents": [
        "cb64026b6e8af50db598ec7c3f59d504259b00bb"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 06 02:54:07 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 09 12:17:04 2011 -0500"
      },
      "message": "xfs: make AIL target updates and compares 32bit safe.\n\nThe recent conversion of the xfsaild functionality to a work queue\nintroduced a hard-to-hit log space grant hang. One of the problems\nnoticed was that updates of the push target are not 32 bit safe as\nthe target is a 64 bit value.\n\nWe cannot copy a 64 bit LSN without the possibility of corrupting\nthe result when racing with another updating thread. We have\nfunction to do this update safely without needing to care about\n32/64 bit issues - xfs_trans_ail_copy_lsn() - so use that when\nupdating the AIL push target.\n\nAlso move the reading of the target in the push work inside the AIL\nlock, and use XFS_LSN_CMP() for the unlocked comparison during work\ntermination to close read holes as well.\n\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n\n"
    },
    {
      "commit": "cb64026b6e8af50db598ec7c3f59d504259b00bb",
      "tree": "e3c666aadc8f13ceabecbcd82b4bd2cb117ba984",
      "parents": [
        "ea35a20021f8497390d05b93271b4d675516c654"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 06 02:54:06 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 09 12:17:04 2011 -0500"
      },
      "message": "xfs: always push the AIL to the target\n\nThe recent conversion of the xfsaild functionality to a work queue\nintroduced a hard-to-hit log space grant hang. One of the problems\ndiscovered is a target mismatch between the item pushing loop and\nthe target itself.\n\nThe push trigger checks for the target increasing (i.e. new target \u003e\ncurrent) while the push loop only pushes items that have a LSN \u003c\ncurrent. As a result, we can get the situation where the push target\nis X, the items at the tail of the AIL have LSN X and they don\u0027t get\npushed. The push work then completes thinking it is done, and cannot\nbe restarted until the push target increases to \u003e\u003d X + 1. If the\npush target then never increases (because the tail is not moving),\nthen we never run the push work again and we stall.\n\nFix it by making sure log items with a LSN that matches the target\nexactly are pushed during the loop.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n\n"
    },
    {
      "commit": "ea35a20021f8497390d05b93271b4d675516c654",
      "tree": "f15c8f3b48b197430c8cac9238a7fccb20414ee1",
      "parents": [
        "b223221956675ce8a7b436d198ced974bb388571"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 06 02:54:05 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 09 12:17:03 2011 -0500"
      },
      "message": "xfs: exit AIL push work correctly when AIL is empty\n\nThe recent conversion of the xfsaild functionality to a work queue\nintroduced a hard-to-hit log space grant hang. The main cause is a\nregression where a work exit path fails to clear the PUSHING state\nand recheck the target correctly.\n\nMake both exit paths do the same PUSHING bit clearing and target\nchecking when the \"no more work to be done\" condition is hit.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n\n"
    },
    {
      "commit": "b223221956675ce8a7b436d198ced974bb388571",
      "tree": "39ec6f27ab10a4be2541dd1417e6355a989d370e",
      "parents": [
        "8c1fdd0be5498f852e00c5fbd9cb0c3969e46cc6"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 06 02:54:04 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 09 12:17:03 2011 -0500"
      },
      "message": "xfs: ensure reclaim cursor is reset correctly at end of AG\n\nOn a 32 bit highmem PowerPC machine, the XFS inode cache was growing\nwithout bound and exhausting low memory causing the OOM killer to be\ntriggered. After some effort, the problem was reproduced on a 32 bit\nx86 highmem machine.\n\nThe problem is that the per-ag inode reclaim index cursor was not\ngetting reset to the start of the AG if the radix tree tag lookup\nfound no more reclaimable inodes. Hence every further reclaim\nattempt started at the same index beyond where any reclaimable\ninodes lay, and no further background reclaim ever occurred from the\nAG.\n\nWithout background inode reclaim the VM driven cache shrinker\nsimply cannot keep up with cache growth, and OOM is the result.\n\nWhile the change that exposed the problem was the conversion of the\ninode reclaim to use work queues for background reclaim, it was not\nthe cause of the bug. The bug was introduced when the cursor code\nwas added, just waiting for some weird configuration to strike....\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nTested-By: Christian Kujau \u003clists@nerdbynature.de\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n\n"
    },
    {
      "commit": "8c1fdd0be5498f852e00c5fbd9cb0c3969e46cc6",
      "tree": "72b9653c312f5c379ea886db6e52b28d6f60a67e",
      "parents": [
        "1a18a29478a38e5df382cd299f636187fde773ab"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Apr 21 13:21:03 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Apr 28 13:27:46 2011 -0500"
      },
      "message": "xfs: add an x86 compat handler for XFS_IOC_ZERO_RANGE\n\nXFS_IOC_ZERO_RANGE uses struct xfs_flock64, and thus requires argument\ntranslation for 32-bit binaries on x86.  Add the required\nXFS_IOC_ZERO_RANGE_32 defined and add it to the list of commands that\nrequire xfs_flock64 translation.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "1a18a29478a38e5df382cd299f636187fde773ab",
      "tree": "8637c41c27c9b992026a91859394d3e3e86ff777",
      "parents": [
        "45c51b99943c4c74165b19dc2f96e8ba93bdecb9"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Apr 24 19:02:58 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Apr 28 13:27:06 2011 -0500"
      },
      "message": "xfs: fix compiler warning in xfs_trace.h\n\nxfs_fsblock_t may be a 32-bit type on if XFS_BIG_BLKNOS is not set,\nmake sure to cast a value of this type to an unsigned long long\nbefore using the ll printk qualifier.\n\nReported-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "45c51b99943c4c74165b19dc2f96e8ba93bdecb9",
      "tree": "4f0beaf22aaa7e931540f3a40a722ab4cfaefafe",
      "parents": [
        "8a072a4d4c6a5b6ec32836c467d2996393c76c6f"
      ],
      "author": {
        "name": "David Sterba",
        "email": "dsterba@suse.cz",
        "time": "Wed Apr 13 22:03:28 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Apr 28 13:25:29 2011 -0500"
      },
      "message": "xfs: cleanup duplicate initializations\n\nfollow these guidelines:\n- leave initialization in the declaration block if it fits the line\n- move to the code where it\u0027s more suitable (\u0027for\u0027 init block)\n\nThe last chunk was modified from David\u0027s original to be a correct\nfix for what appeared to be a duplicate initialization.\n\nSigned-off-by: David Sterba \u003cdsterba@suse.cz\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n"
    },
    {
      "commit": "8a072a4d4c6a5b6ec32836c467d2996393c76c6f",
      "tree": "b21dad1310e4351854b9e2e24feb86beed20d1f7",
      "parents": [
        "97d3ac75e5e0ebf7ca38ae74cebd201c09b97ab2"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Apr 24 19:06:17 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Apr 28 13:18:09 2011 -0500"
      },
      "message": "xfs: reduce the number of pagb_lock roundtrips in xfs_alloc_clear_busy\n\nInstead of finding the per-ag and then taking and releasing the pagb_lock\nfor every single busy extent completed sort the list of busy extents and\nonly switch betweens AGs where nessecary.  This becomes especially important\nwith the online discard support which will hit this lock more often.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "97d3ac75e5e0ebf7ca38ae74cebd201c09b97ab2",
      "tree": "e08af7a4bbb93c22dfeb1bcb2d3caf83aef717c9",
      "parents": [
        "e26f0501cf743a4289603501413f97ffcb4612f2"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Apr 24 19:06:16 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Apr 28 13:18:04 2011 -0500"
      },
      "message": "xfs: exact busy extent tracking\n\nUpdate the extent tree in case we have to reuse a busy extent, so that it\nalways is kept uptodate.  This is done by replacing the busy list searches\nwith a new xfs_alloc_busy_reuse helper, which updates the busy extent tree\nin case of a reuse.  This allows us to allow reusing metadata extents\nunconditionally, and thus avoid log forces especially for allocation btree\nblocks.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "e26f0501cf743a4289603501413f97ffcb4612f2",
      "tree": "6327f071c53ddb494d59ce04b3cf8a760aceb987",
      "parents": [
        "a870acd9b2671de56514a430edfa7867823c31c9"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Apr 24 19:06:15 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Apr 28 13:18:01 2011 -0500"
      },
      "message": "xfs: do not immediately reuse busy extent ranges\n\nEvery time we reallocate a busy extent, we cause a synchronous log force\nto occur to ensure the freeing transaction is on disk before we continue\nand use the newly allocated extent.  This is extremely sub-optimal as we\nhave to mark every transaction with blocks that get reused as synchronous.\n\nInstead of searching the busy extent list after deciding on the extent to\nallocate, check each candidate extent during the allocation decisions as\nto whether they are in the busy list.  If they are in the busy list, we\ntrim the busy range out of the extent we have found and determine if that\ntrimmed range is still OK for allocation. In many cases, this check can\nbe incorporated into the allocation extent alignment code which already\ndoes trimming of the found extent before determining if it is a valid\ncandidate for allocation.\n\nBased on earlier patches from Dave Chinner.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "a870acd9b2671de56514a430edfa7867823c31c9",
      "tree": "e288e41227c35c251a675e4901f0be35e0c26aa1",
      "parents": [
        "3eff1268994f72266b660782e87f215720c29639"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Apr 24 19:06:14 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Apr 28 13:17:56 2011 -0500"
      },
      "message": "xfs: optimize AGFL refills\n\nWhile we need to make sure we do not reuse busy extents, there is no need\nto force out busy extents when moving them between the AGFL and the\nfreespace btree as we still take care of that when doing the real allocation.\n\nTo avoid the log force when just moving extents from the different free\nspace tracking structures, move the busy search out of\nxfs_alloc_get_freelist into the callers that need it, and move the busy\nlist insert from xfs_free_ag_extent which is used both by AGFL refills\nand real allocation to xfs_free_extent, which is only used by the latter.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "3eff1268994f72266b660782e87f215720c29639",
      "tree": "8299f6a1e6c5eefcc8597f232146e11b06aad922",
      "parents": [
        "f0e615c3cb72b42191b558c130409335812621d8"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 12 13:34:20 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed Apr 20 11:36:49 2011 -0500"
      },
      "message": "xfs: fix duplicate message output\n\nCommit 957935dc (\"xfs: fix xfs_debug warnings\" broke the logic in\n__xfs_printk(). Instead of only printing one of two possible output\nstrings based on whether the fs has a name or not, it outputs both.\nFix it to only output one message again.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "1e05ff020f692de078226fd5480adc76317e37bb",
      "tree": "daae233648b0afc36cdab0de675d40e2b40042bd",
      "parents": [
        "a97b52022a73ec12e43f0b2c7d4bd1f40f89c81d",
        "39411f81eec7dc01677b14dda97684c0ce23ac1b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 11 15:48:57 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 11 15:48:57 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs\n\n* \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs:\n  xfs: use proper interfaces for on-stack plugging\n  xfs: fix xfs_debug warnings\n  xfs: fix variable set but not used warnings\n  xfs: convert log tail checking to a warning\n  xfs: catch bad block numbers freeing extents.\n  xfs: push the AIL from memory reclaim and periodic sync\n  xfs: clean up code layout in xfs_trans_ail.c\n  xfs: convert the xfsaild threads to a workqueue\n  xfs: introduce background inode reclaim work\n  xfs: convert ENOSPC inode flushing to use new syncd workqueue\n  xfs: introduce a xfssyncd workqueue\n  xfs: fix extent format buffer allocation size\n  xfs: fix unreferenced var error in xfs_buf.c\n\nAlso, applied patch from Tony Luck that fixes ia64:\n  xfs_destroy_workqueues() should not be tagged with__exit\nin the branch before merging.\n"
    },
    {
      "commit": "39411f81eec7dc01677b14dda97684c0ce23ac1b",
      "tree": "332cbcd641b09f25c35167b44bcd8fc70918c66e",
      "parents": [
        "a1b7ea5d58c53c13f082110e535d98bc4e8e5cfe"
      ],
      "author": {
        "name": "Luck, Tony",
        "email": "tony.luck@intel.com",
        "time": "Mon Apr 11 12:06:12 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 11 15:47:20 2011 -0700"
      },
      "message": "xfs_destroy_workqueues() should not be tagged with__exit\n\nia64 throws away .exit sections for the built-in CONFIG case, so routines\nthat are used in other circumstances should not be tagged as __exit.\n\nSigned-off-by: Tony Luck \u003ctony.luck@intel.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a1b7ea5d58c53c13f082110e535d98bc4e8e5cfe",
      "tree": "8238090fc86fa6198680012b9d65d272529ba44b",
      "parents": [
        "957935dcd8e11d6f789b4ed769b376040e15565b"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Mar 30 11:05:09 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Apr 08 08:09:28 2011 -0500"
      },
      "message": "xfs: use proper interfaces for on-stack plugging\n\nAdd proper blk_start_plug/blk_finish_plug pairs for the two places where\nwe issue buffer I/O, and remove the blk_flush_plug in xfs_buf_lock and\nxfs_buf_iowait, given that context switches already flush the per-process\nplugging lists.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "957935dcd8e11d6f789b4ed769b376040e15565b",
      "tree": "6f120bac2011bdba637f39d3704ec0272b883726",
      "parents": [
        "ecb697c16c1718ae97bb73ce41a5d5ac2aed29ec"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sat Apr 02 18:13:40 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Apr 08 08:09:24 2011 -0500"
      },
      "message": "xfs: fix xfs_debug warnings\n\nFor a CONFIG_XFS_DEBUG\u003dn build gcc complains about statements with no\neffect in xfs_debug:\n\nfs/xfs/quota/xfs_qm_syscalls.c: In function \u0027xfs_qm_scall_trunc_qfiles\u0027:\nfs/xfs/quota/xfs_qm_syscalls.c:291:3: warning: statement with no effect\n\nThe reason for that is that the various new xfs message functions have a\nreturn value which is never used, and in case of the non-debug build\nxfs_debug the macro evaluates to a plain 0 which produces the above\nwarnings.  This can be fixed by turning xfs_debug into an inline function\ninstead of a macro, but in addition to that I\u0027ve also changed all the\nmessage helpers to return void as we never use their return values.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "ecb697c16c1718ae97bb73ce41a5d5ac2aed29ec",
      "tree": "a4a54638bedf89e29fb8487b3493188d462b3fad",
      "parents": [
        "da8a1a4a4dfc1ead12c343b992fc8300a22d33d0"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Apr 04 12:55:44 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Apr 08 08:09:12 2011 -0500"
      },
      "message": "xfs: fix variable set but not used warnings\n\nGCC 4.6 now warnings about variables set but not used.  Fix the trivially\nfixable warnings of this sort.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "da8a1a4a4dfc1ead12c343b992fc8300a22d33d0",
      "tree": "903485755dcfdd4908cc1d33c1af0e69f45b79a5",
      "parents": [
        "be65b18a10e62321c5ba09a1dc0f70babeb0eba1"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "message": "xfs: convert log tail checking to a warning\n\nOn the Power platform, the log tail debug checks fire excessively\ncausing the system to panic early in testing. The debug checks are\nknown to be racy, though on x86_64 there is no evidence that they\ntrigger at all.\n\nWe want to keep the checks active on debug systems to alert us to\nproblems with log space accounting, but we need to reduce the impact\nof a racy check on testing on the Power platform.\n\nAs a result, convert the ASSERT conditions to warnings, and\nallow them to fire only once per filesystem mount. This will prevent\nfalse positives from interfering with testing, whilst still\nproviding us with the indication that they may be a problem with log\nspace accounting should that occur.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "be65b18a10e62321c5ba09a1dc0f70babeb0eba1",
      "tree": "512dba387c91b778c4e2b9fafa42bfef7f074bb7",
      "parents": [
        "fd074841cfe01b006465fb9388091012585e8dfb"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "message": "xfs: catch bad block numbers freeing extents.\n\nA fuzzed filesystem crashed a kernel when freeing an extent with a\nblock number beyond the end of the filesystem. Convert all the debug\nasserts in xfs_free_extent() to active checks so that we catch bad\nextents and return that the filesytsem is corrupted rather than\ncrashing.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "fd074841cfe01b006465fb9388091012585e8dfb",
      "tree": "7ec409fade00b6c18987e1cb2a62443c074ce274",
      "parents": [
        "cd4a3c503c185f5f0a20f04f90da0a6966dd03bd"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "message": "xfs: push the AIL from memory reclaim and periodic sync\n\nWhen we are short on memory, we want to expedite the cleaning of\ndirty objects.  Hence when we run short on memory, we need to kick\nthe AIL flushing into action to clean as many dirty objects as\nquickly as possible.  To implement this, sample the lsn of the log\nitem at the head of the AIL and use that as the push target for the\nAIL flush.\n\nFurther, we keep items in the AIL that are dirty that are not\ntracked any other way, so we can get objects sitting in the AIL that\ndon\u0027t get written back until the AIL is pushed. Hence to get the\nfilesystem to the idle state, we might need to push the AIL to flush\nout any remaining dirty objects sitting in the AIL. This requires\nthe same push mechanism as the reclaim push.\n\nThis patch also renames xfs_trans_ail_tail() to xfs_ail_min_lsn() to\nmatch the new xfs_ail_max_lsn() function introduced in this patch.\nSimilarly for xfs_trans_ail_push -\u003e xfs_ail_push.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "cd4a3c503c185f5f0a20f04f90da0a6966dd03bd",
      "tree": "18edb2203a85a778b2d88121430bcb3e2c3a9b4c",
      "parents": [
        "0bf6a5bd4b55b466964ead6fa566d8f346a828ee"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "message": "xfs: clean up code layout in xfs_trans_ail.c\n\nThis patch rearranges the location of functions in xfs_trans_ail.c\nto remove the need for forward declarations of those functions in\npreparation for adding new functions without the need for forward\ndeclarations.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "0bf6a5bd4b55b466964ead6fa566d8f346a828ee",
      "tree": "661f2bcc36458c807752243c6f2a76b43a64302c",
      "parents": [
        "a7b339f1b8698667eada006e717cdb4523be2ed5"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "message": "xfs: convert the xfsaild threads to a workqueue\n\nSimilar to the xfssyncd, the per-filesystem xfsaild threads can be\nconverted to a global workqueue and run periodically by delayed\nworks. This makes sense for the AIL pushing because it uses\nvariable timeouts depending on the work that needs to be done.\n\nBy removing the xfsaild, we simplify the AIL pushing code and\nremove the need to spread the code to implement the threading\nand pushing across multiple files.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "a7b339f1b8698667eada006e717cdb4523be2ed5",
      "tree": "77c44400c32284bdcf15829e10d01eb15ddd1d41",
      "parents": [
        "89e4cb550a492cfca038a555fcc1bdac58822ec3"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "message": "xfs: introduce background inode reclaim work\n\nBackground inode reclaim needs to run more frequently that the XFS\nsyncd work is run as 30s is too long between optimal reclaim runs.\nAdd a new periodic work item to the xfs syncd workqueue to run a\nfast, non-blocking inode reclaim scan.\n\nBackground inode reclaim is kicked by the act of marking inodes for\nreclaim.  When an AG is first marked as having reclaimable inodes,\nthe background reclaim work is kicked. It will continue to run\nperiodically untill it detects that there are no more reclaimable\ninodes. It will be kicked again when the first inode is queued for\nreclaim.\n\nTo ensure shrinker based inode reclaim throttles to the inode\ncleaning and reclaim rate but still reclaim inodes efficiently, make it kick the\nbackground inode reclaim so that when we are low on memory we are\ntrying to reclaim inodes as efficiently as possible. This kick shoul\nd not be necessary, but it will protect against failures to kick the\nbackground reclaim when inodes are first dirtied.\n\nTo provide the rate throttling, make the shrinker pass do\nsynchronous inode reclaim so that it blocks on inodes under IO. This\nmeans that the shrinker will reclaim inodes rather than just\nskipping over them, but it does not adversely affect the rate of\nreclaim because most dirty inodes are already under IO due to the\nbackground reclaim work the shrinker kicked.\n\nThese two modifications solve one of the two OOM killer invocations\nChris Mason reported recently when running a stress testing script.\nThe particular workload trigger for the OOM killer invocation is\nwhere there are more threads than CPUs all unlinking files in an\nextremely memory constrained environment. Unlike other solutions,\nthis one does not have a performance impact on performance when\nmemory is not constrained or the number of concurrent threads\noperating is \u003c\u003d to the number of CPUs.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "89e4cb550a492cfca038a555fcc1bdac58822ec3",
      "tree": "ab688a1849d6361c92b9f60ae0586045908010da",
      "parents": [
        "c6d09b666de11eb272326a6eb6cd3246da571014"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "message": "xfs: convert ENOSPC inode flushing to use new syncd workqueue\n\nOn of the problems with the current inode flush at ENOSPC is that we\nqueue a flush per ENOSPC event, regardless of how many are already\nqueued. Thi can result in    hundreds of queued flushes, most of\nwhich simply burn CPU scanned and do no real work. This simply slows\ndown allocation at ENOSPC.\n\nWe really only need one active flush at a time, and we can easily\nimplement that via the new xfs_syncd_wq. All we need to do is queue\na flush if one is not already active, then block waiting for the\ncurrently active flush to complete. The result is that we only ever\nhave a single ENOSPC inode flush active at a time and this greatly\nreduces the overhead of ENOSPC processing.\n\nOn my 2p test machine, this results in tests exercising ENOSPC\nconditions running significantly faster - 042 halves execution time,\n083 drops from 60s to 5s, etc - while not introducing test\nregressions.\n\nThis allows us to remove the old xfssyncd threads and infrastructure\nas they are no longer used.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "c6d09b666de11eb272326a6eb6cd3246da571014",
      "tree": "74951ec04191b47a1fb75f9e79de6c00837a7c17",
      "parents": [
        "e828776a8abe6b9bae7ed9638710bff7642c568a"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "message": "xfs: introduce a xfssyncd workqueue\n\nAll of the work xfssyncd does is background functionality. There is\nno need for a thread per filesystem to do this work - it can al be\nmanaged by a global workqueue now they manage concurrency\neffectively.\n\nIntroduce a new gglobal xfssyncd workqueue, and convert the periodic\nwork to use this new functionality. To do this, use a delayed work\nconstruct to schedule the next running of the periodic sync work\nfor the filesystem. When the sync work is complete, queue a new\ndelayed work for the next running of the sync work.\n\nFor laptop mode, we wait on completion for the sync works, so ensure\nthat the sync work queuing interface can flush and wait for work to\ncomplete to enable the work queue infrastructure to replace the\ncurrent sequence number and wakeup that is used.\n\nBecause the sync work does non-trivial amounts of work, mark the\nnew work queue as CPU intensive.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "e828776a8abe6b9bae7ed9638710bff7642c568a",
      "tree": "978a74827e670e2aab8dec943944e63ce43afc2d",
      "parents": [
        "89b3600ccfb01aed6873bc499442fc0bed00bbdd"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Fri Apr 08 12:45:07 2011 +1000"
      },
      "message": "xfs: fix extent format buffer allocation size\n\nWhen formatting an inode item, we have to allocate a separate buffer\nto hold extents when there are delayed allocation extents on the\ninode and it is in extent format. The allocation size is derived\nfrom the in-core data fork representation, which accounts for\ndelayed allocation extents, while the on-disk representation does\nnot contain any delalloc extents.\n\nAs a result of this mismatch, the allocated buffer can be far larger\nthan needed to hold the real extent list which, due to the fact the\ninode is in extent format, is limited to the size of the literal\narea of the inode. However, we can have thousands of delalloc\nextents, resulting in an allocation size orders of magnitude larger\nthan is needed to hold all the real extents.\n\nFix this by limiting the size of the buffer being allocated to the\nsize of the literal area of the inodes in the filesystem (i.e. the\nmaximum size an inode fork can grow to).\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "89b3600ccfb01aed6873bc499442fc0bed00bbdd",
      "tree": "d1aff97d157bb06597cef080ebd9fc06a8aec6c6",
      "parents": [
        "0ce790e7d736cedc563e1fb4e998babf5a4dbc3d"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 29 07:09:20 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed Mar 30 23:34:20 2011 -0500"
      },
      "message": "xfs: fix unreferenced var error in xfs_buf.c\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "c5850150d0b9ae16840c5d9846f9d5a759996a15",
      "tree": "6e3f66bff48916af728aa4173f2b7657b31c2600",
      "parents": [
        "243b422af9ea9af4ead07a8ad54c90d4f9b6081a",
        "0e6e847ffe37436e331c132639f9f872febce82e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 15:51:02 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 15:51:02 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs\n\n* \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs:\n  xfs: stop using the page cache to back the buffer cache\n  xfs: register the inode cache shrinker before quotachecks\n  xfs: xfs_trans_read_buf() should return an error on failure\n  xfs: introduce inode cluster buffer trylocks for xfs_iflush\n  vmap: flush vmap aliases when mapping fails\n  xfs: preallocation transactions do not need to be synchronous\n\nFix up trivial conflicts in fs/xfs/linux-2.6/xfs_buf.c due to plug removal.\n"
    },
    {
      "commit": "0e6e847ffe37436e331c132639f9f872febce82e",
      "tree": "eb440ef910af695eafef787e12badc64fac0f8fe",
      "parents": [
        "704b2907c2d47ceb187c0e25a6bbc2174b198f2f"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Sat Mar 26 09:16:45 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Sat Mar 26 09:16:45 2011 +1100"
      },
      "message": "xfs: stop using the page cache to back the buffer cache\n\nNow that the buffer cache has it\u0027s own LRU, we do not need to use\nthe page cache to provide persistent caching and reclaim\ninfrastructure. Convert the buffer cache to use alloc_pages()\ninstead of the page cache. This will remove all the overhead of page\ncache management from setup and teardown of the buffers, as well as\nneeding to mark pages accessed as we find buffers in the buffer\ncache.\n\nBy avoiding the page cache, we also remove the need to keep state in\nthe page_private(page) field for persistant storage across buffer\nfree/buffer rebuild and so all that code can be removed. This also\nfixes the long-standing problem of not having enough bits in the\npage_private field to track all the state needed for a 512\nsector/64k page setup.\n\nIt also removes the need for page locking during reads as the pages\nare unique to the buffer and nobody else will be attempting to\naccess them.\n\nFinally, it removes the buftarg address space lock as a point of\nglobal contention on workloads that allocate and free buffers\nquickly such as when creating or removing large numbers of inodes in\nparallel. This remove the 16TB limit on filesystem size on 32 bit\nmachines as the page index (32 bit) is no longer used for lookups\nof metadata buffers - the buffer cache is now solely indexed by disk\naddress which is stored in a 64 bit field in the buffer.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "704b2907c2d47ceb187c0e25a6bbc2174b198f2f",
      "tree": "0ca2703390a5ba43998eca28d85d77ee49a790f6",
      "parents": [
        "7401aafd5019d32a888e5f27332cf580945574bf"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Sat Mar 26 09:14:57 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Sat Mar 26 09:14:57 2011 +1100"
      },
      "message": "xfs: register the inode cache shrinker before quotachecks\n\nDuring mount, we can do a quotacheck that involves a bulkstat pass\non all inodes. If there are more inodes in the filesystem than can\nbe held in memory, we require the inode cache shrinker to run to\nensure that we don\u0027t run out of memory.\n\nUnfortunately, the inode cache shrinker is not registered until we\nget to the end of the superblock setup process, which is after a\nquotacheck is run if it is needed. Hence we need to register the\ninode cache shrinker earlier in the mount process so that we don\u0027t\nOOM during mount. This requires that we also initialise the syncd\nwork before we register the shrinker, so we nee dto juggle that\naround as well.\n\nWhile there, make sure that we have set up the block sizes in the\nVFS superblock correctly before the quotacheck is run so that any\ninodes that are cached as a result of the quotacheck have their\nblock size fields set up correctly.\n\nCc: stable@kernel.org\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "7401aafd5019d32a888e5f27332cf580945574bf",
      "tree": "6a09fb6c38e6e96e239873bdefd24a890da09c9d",
      "parents": [
        "1bfd8d04190c615bb8d1d98188dead0c09702208"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Sat Mar 26 09:14:44 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Sat Mar 26 09:14:44 2011 +1100"
      },
      "message": "xfs: xfs_trans_read_buf() should return an error on failure\n\nWhen inside a transaction and we fail to read a buffer,\nxfs_trans_read_buf returns a null buffer pointer and no error.\nxfs_do_da_buf() checks the error return, but not the buffer, and as\na result this read failure condition causes a panic when it attempts\nto dereference the non-existant buffer.\n\nMake xfs_trans_read_buf() return the same error for this situation\nregardless of whether it is in a transaction or not. This means\nevery caller does not need to check both the error return and the\nbuffer before proceeding to use the buffer.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "1bfd8d04190c615bb8d1d98188dead0c09702208",
      "tree": "f2eb5d4e9b730b7ecef25bcc1cc26caa2b306339",
      "parents": [
        "a19fb380961f209a3a406443686647bcd01bb9a6"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Sat Mar 26 09:13:55 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Sat Mar 26 09:13:55 2011 +1100"
      },
      "message": "xfs: introduce inode cluster buffer trylocks for xfs_iflush\n\nThere is an ABBA deadlock between synchronous inode flushing in\nxfs_reclaim_inode and xfs_icluster_free. xfs_icluster_free locks the\nbuffer, then takes inode ilocks, whilst synchronous reclaim takes\nthe ilock followed by the buffer lock in xfs_iflush().\n\nTo avoid this deadlock, separate the inode cluster buffer locking\nsemantics from the synchronous inode flush semantics, allowing\ncallers to attempt to lock the buffer but still issue synchronous IO\nif it can get the buffer. This requires xfs_iflush() calls that\ncurrently use non-blocking semantics to pass SYNC_TRYLOCK rather\nthan 0 as the flags parameter.\n\nThis allows xfs_reclaim_inode to avoid the deadlock on the buffer\nlock and detect the failure so that it can drop the inode ilock and\nrestart the reclaim attempt on the inode. This allows\nxfs_ifree_cluster to obtain the inode lock, mark the inode stale and\nrelease it and hence defuse the deadlock situation. It also has the\npleasant side effect of avoiding IO in xfs_reclaim_inode when it\ntries to next reclaim the inode as it is now marked stale.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "a19fb380961f209a3a406443686647bcd01bb9a6",
      "tree": "304baceb45f2b40991900a546c39663bb37814ea",
      "parents": [
        "8287889742940cf3c416e755322090d09f2829be"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Sat Mar 26 09:13:42 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Sat Mar 26 09:13:42 2011 +1100"
      },
      "message": "vmap: flush vmap aliases when mapping fails\n\nOn 32 bit systems, vmalloc space is limited and XFS can chew through\nit quickly as the vmalloc space is lazily freed. This can result in\nfailure to map buffers, even when there is apparently large amounts\nof vmalloc space available. Hence, if we fail to map a buffer, purge\nthe aliases that have not yet been freed to hopefuly free up enough\nvmalloc space to allow a retry to succeed.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "8287889742940cf3c416e755322090d09f2829be",
      "tree": "50d67d48b4375a80b5ed04cc6d4cc88912c270f6",
      "parents": [
        "0c9ba97318fc9a905bcc1419b6966de061203a70"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Sat Mar 26 09:13:08 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Sat Mar 26 09:13:08 2011 +1100"
      },
      "message": "xfs: preallocation transactions do not need to be synchronous\n\nPreallocation and hole punch transactions are currently synchronous\nand this is causing performance problems in some cases. The\ntransactions don\u0027t need to be synchronous as we don\u0027t need to\nguarantee the preallocation is persistent on disk until a\nfdatasync, fsync, sync operation occurs. If the file is opened\nO_SYNC or O_DATASYNC, only then should the transaction be issued\nsynchronously.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "6c5103890057b1bb781b26b7aae38d33e4c517d8",
      "tree": "e6e57961dcddcb5841acb34956e70b9dc696a880",
      "parents": [
        "3dab04e6978e358ad2307bca563fabd6c5d2c58b",
        "9d2e157d970a73b3f270b631828e03eb452d525e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "message": "Merge branch \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block: (65 commits)\n  Documentation/iostats.txt: bit-size reference etc.\n  cfq-iosched: removing unnecessary think time checking\n  cfq-iosched: Don\u0027t clear queue stats when preempt.\n  blk-throttle: Reset group slice when limits are changed\n  blk-cgroup: Only give unaccounted_time under debug\n  cfq-iosched: Don\u0027t set active queue in preempt\n  block: fix non-atomic access to genhd inflight structures\n  block: attempt to merge with existing requests on plug flush\n  block: NULL dereference on error path in __blkdev_get()\n  cfq-iosched: Don\u0027t update group weights when on service tree\n  fs: assign sb-\u003es_bdi to default_backing_dev_info if the bdi is going away\n  block: Require subsystems to explicitly allocate bio_set integrity mempool\n  jbd2: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  jbd: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  fs: make fsync_buffers_list() plug\n  mm: make generic_writepages() use plugging\n  blk-cgroup: Add unaccounted time to timeslice_used.\n  block: fixup plugging stubs for !CONFIG_BLOCK\n  block: remove obsolete comments for blkdev_issue_zeroout.\n  blktrace: Use rq-\u003ecmd_flags directly in blk_add_trace_rq.\n  ...\n\nFix up conflicts in fs/{aio.c,super.c}\n"
    },
    {
      "commit": "3155fe6df553472fd7c07e7788b0e542cd828c91",
      "tree": "ef8179acf58cdeaa54bc7a219168fa98bb5b29c8",
      "parents": [
        "da48524eb20662618854bb3df2db01fc65f3070c",
        "0c9ba97318fc9a905bcc1419b6966de061203a70"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 21 14:24:56 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 21 14:24:56 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs\n\n* \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs: (23 commits)\n  xfs: don\u0027t name variables \"panic\"\n  xfs: factor agf counter updates into a helper\n  xfs: clean up the xfs_alloc_compute_aligned calling convention\n  xfs: kill support/debug.[ch]\n  xfs: Convert remaining cmn_err() callers to new API\n  xfs: convert the quota debug prints to new API\n  xfs: rename xfs_cmn_err_fsblock_zero()\n  xfs: convert xfs_fs_cmn_err to new error logging API\n  xfs: kill xfs_fs_mount_cmn_err() macro\n  xfs: kill xfs_fs_repair_cmn_err() macro\n  xfs: convert xfs_cmn_err to xfs_alert_tag\n  xfs: Convert xlog_warn to new logging interface\n  xfs: Convert linux-2.6/ files to new logging interface\n  xfs: introduce new logging API.\n  xfs: zero proper structure size for geometry calls\n  xfs: enable delaylog by default\n  xfs: more sensible inode refcounting for ialloc\n  xfs: stop using xfs_trans_iget in the RT allocator\n  xfs: check if device support discard in xfs_ioc_trim()\n  xfs: prevent leaking uninitialized stack memory in FSGEOMETRY_V1\n  ...\n"
    },
    {
      "commit": "a44f99c7efdb88fa41128065c9a9445c19894e34",
      "tree": "9d9dc6026b2c0409eca05e360c98b8a688ccdb1e",
      "parents": [
        "b87a2d3e3147bd140da2eae584772c353d11421b",
        "22942c00a6ad6e9e93b53811a6de72c821c15d22"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 20 18:14:55 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 20 18:14:55 2011 -0700"
      },
      "message": "Merge branch \u0027trivial\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6\n\n* \u0027trivial\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6: (25 commits)\n  video: change to new flag variable\n  scsi: change to new flag variable\n  rtc: change to new flag variable\n  rapidio: change to new flag variable\n  pps: change to new flag variable\n  net: change to new flag variable\n  misc: change to new flag variable\n  message: change to new flag variable\n  memstick: change to new flag variable\n  isdn: change to new flag variable\n  ieee802154: change to new flag variable\n  ide: change to new flag variable\n  hwmon: change to new flag variable\n  dma: change to new flag variable\n  char: change to new flag variable\n  fs: change to new flag variable\n  xtensa: change to new flag variable\n  um: change to new flag variables\n  s390: change to new flag variable\n  mips: change to new flag variable\n  ...\n\nFix up trivial conflict in drivers/hwmon/Makefile\n"
    },
    {
      "commit": "0ccd234ca04b09a156f8771af316ac9de2fa7312",
      "tree": "b4b990acd2bca0c755b630e7ffe4a7bf08cd4882",
      "parents": [
        "3996eabbab5597d27d5140e1d8f9e3f1145f8b40"
      ],
      "author": {
        "name": "matt mooney",
        "email": "mfm@muteddisk.com",
        "time": "Fri Jan 14 06:12:35 2011 -0800"
      },
      "committer": {
        "name": "Michal Marek",
        "email": "mmarek@suse.cz",
        "time": "Thu Mar 17 14:02:57 2011 +0100"
      },
      "message": "fs: change to new flag variable\n\nReplace EXTRA_CFLAGS with ccflags-y. And change ntfs-objs to ntfs-y\nfor cleaner conditional inclusion.\n\nSigned-off-by: matt mooney \u003cmfm@muteddisk.com\u003e\nAcked-by: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nSigned-off-by: Michal Marek \u003cmmarek@suse.cz\u003e\n"
    },
    {
      "commit": "0f6e0e8448a16d8d22119ce91d8dd24b44865b51",
      "tree": "7c295c02db035fc6a0b867465911a2bc9dc6b1ef",
      "parents": [
        "0d2ecee2bdb2a19d04bc5cefac0f86e790f1aad4",
        "a002951c97ff8da49938c982a4c236bf2fafdc9f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 09:15:43 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 09:15:43 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6: (33 commits)\n  AppArmor: kill unused macros in lsm.c\n  AppArmor: cleanup generated files correctly\n  KEYS: Add an iovec version of KEYCTL_INSTANTIATE\n  KEYS: Add a new keyctl op to reject a key with a specified error code\n  KEYS: Add a key type op to permit the key description to be vetted\n  KEYS: Add an RCU payload dereference macro\n  AppArmor: Cleanup make file to remove cruft and make it easier to read\n  SELinux: implement the new sb_remount LSM hook\n  LSM: Pass -o remount options to the LSM\n  SELinux: Compute SID for the newly created socket\n  SELinux: Socket retains creator role and MLS attribute\n  SELinux: Auto-generate security_is_socket_class\n  TOMOYO: Fix memory leak upon file open.\n  Revert \"selinux: simplify ioctl checking\"\n  selinux: drop unused packet flow permissions\n  selinux: Fix packet forwarding checks on postrouting\n  selinux: Fix wrong checks for selinux_policycap_netpeer\n  selinux: Fix check for xfrm selinux context algorithm\n  ima: remove unnecessary call to ima_must_measure\n  IMA: remove IMA imbalance checking\n  ...\n"
    },
    {
      "commit": "bd2895eeade5f11f3e5906283c630bbdb4b57454",
      "tree": "4d98f4fcd80c7d062afce28823d08aee53e66f82",
      "parents": [
        "016aa2ed1cc9cf704cf76d8df07751b6daa9750f",
        "24d51add7438f9696a7205927bf9de3c5c787a58"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 08:20:19 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 08:20:19 2011 -0700"
      },
      "message": "Merge branch \u0027for-2.6.39\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\n* \u0027for-2.6.39\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:\n  workqueue: fix build failure introduced by s/freezeable/freezable/\n  workqueue: add system_freezeable_wq\n  rds/ib: use system_wq instead of rds_ib_fmr_wq\n  net/9p: replace p9_poll_task with a work\n  net/9p: use system_wq instead of p9_mux_wq\n  xfs: convert to alloc_workqueue()\n  reiserfs: make commit_wq use the default concurrency level\n  ocfs2: use system_wq instead of ocfs2_quota_wq\n  ext4: convert to alloc_workqueue()\n  scsi/scsi_tgt_lib: scsi_tgtd isn\u0027t used in memory reclaim path\n  scsi/be2iscsi,qla2xxx: convert to alloc_workqueue()\n  misc/iwmc3200top: use system_wq instead of dedicated workqueues\n  i2o: use alloc_workqueue() instead of create_workqueue()\n  acpi: kacpi*_wq don\u0027t need WQ_MEM_RECLAIM\n  fs/aio: aio_wq isn\u0027t used in memory reclaim path\n  input/tps6507x-ts: use system_wq instead of dedicated workqueue\n  cpufreq: use system_wq instead of dedicated workqueues\n  wireless/ipw2x00: use system_wq instead of dedicated workqueues\n  arm/omap: use system_wq in mailbox\n  workqueue: use WQ_MEM_RECLAIM instead of WQ_RESCUER\n"
    },
    {
      "commit": "5fe0c2378884e68beb532f5890cc0e3539ac747b",
      "tree": "be25414052184e146049ea6466854366559d5528",
      "parents": [
        "c8b91accfa1059d5565443193d89572eca2f5dd6"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sat Jan 29 18:43:25 2011 +0530"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 14 09:15:28 2011 -0400"
      },
      "message": "exportfs: Return the minimum required handle size\n\nThe exportfs encode handle function should return the minimum required\nhandle size. This helps user to find out the handle size by passing 0\nhandle size in the first step and then redoing to the call again with\nthe returned handle size value.\n\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0c9ba97318fc9a905bcc1419b6966de061203a70",
      "tree": "f802ac837ce6b444a472c94be400e0f1373f2572",
      "parents": [
        "ecb6928fcf969b302929f109e175981df1dba697"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Mar 11 12:39:51 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Mar 11 16:34:51 2011 -0600"
      },
      "message": "xfs: don\u0027t name variables \"panic\"\n\nThe new xfs_alert_tag() used a variable named \"panic\",\nand that is to be avoided.  Rename it.\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n"
    },
    {
      "commit": "4c63f5646e405b5010cc9499419060bf2e838f5b",
      "tree": "df91ba315032c8ec4aafeb3ab96fdfa7c6c656e1",
      "parents": [
        "cafb0bfca1a73efd6d8a4a6a6a716e6134b96c24",
        "69d60eb96ae8a73cf9b79cf28051caf973006011"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:58:35 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:58:35 2011 +0100"
      },
      "message": "Merge branch \u0027for-2.6.39/stack-plug\u0027 into for-2.6.39/core\n\nConflicts:\n\tblock/blk-core.c\n\tblock/blk-flush.c\n\tdrivers/md/raid1.c\n\tdrivers/md/raid10.c\n\tdrivers/md/raid5.c\n\tfs/nilfs2/btnode.c\n\tfs/nilfs2/mdt.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "721a9602e6607417c6bc15b18e97a2f35266c690",
      "tree": "4987991e43f35b8b3b685fea0040c5265b578996",
      "parents": [
        "cf15900e1209d5b46ec2d24643adbf561830935f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Mar 09 11:56:30 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:27 2011 +0100"
      },
      "message": "block: kill off REQ_UNPLUG\n\nWith the plugging now being explicitly controlled by the\nsubmitter, callers need not pass down unplugging hints\nto the block layer. If they want to unplug, it\u0027s because they\nmanually plugged on their own - in which case, they should just\nunplug at will.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7eaceaccab5f40bbfda044629a6298616aeaed50",
      "tree": "33954d12f63e25a47eb6d86ef3d3d0a5e62bf752",
      "parents": [
        "73c101011926c5832e6e141682180c4debe2cf45"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "message": "block: remove per-queue plugging\n\nCode has been converted over to the new explicit on-stack plugging,\nand delay users have been converted to use the new API for that.\nSo lets kill off the old plugging along with aops-\u003esync_page().\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "ecb6928fcf969b302929f109e175981df1dba697",
      "tree": "7cb8ecaa05615c3a1f445088e74ea89e896dfabe",
      "parents": [
        "86fa8af69d8e90b7b40b8dab84d168527143ae20"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Mar 04 12:59:55 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed Mar 09 08:23:47 2011 -0600"
      },
      "message": "xfs: factor agf counter updates into a helper\n\nUpdating the AGF and transactions counters is duplicated between allocating\nand freeing extents.  Factor the code into a common helper.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "86fa8af69d8e90b7b40b8dab84d168527143ae20",
      "tree": "ed2b3b20570556a296c4be015d0e78a1fb527d66",
      "parents": [
        "9130090b5f04f7e7bc29b944e0b1ba494fff3f98"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Mar 04 12:59:54 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed Mar 09 08:23:33 2011 -0600"
      },
      "message": "xfs: clean up the xfs_alloc_compute_aligned calling convention\n\nPass a xfs_alloc_arg structure to xfs_alloc_compute_aligned and derive\nthe alignment and minlen paramters from it.  This cleans up the existing\ncallers, and we\u0027ll need even more information from the xfs_alloc_arg\nin subsequent patches.  Based on a patch from Dave Chinner.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "fe3fa43039d47ee4e22caf460b79b62a14937f79",
      "tree": "9eab8d00f1227b9fe0959f32a62d892ed35803ba",
      "parents": [
        "ee009e4a0d4555ed522a631bae9896399674f064",
        "026eb167ae77244458fa4b4b9fc171209c079ba7"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Mar 08 11:38:10 2011 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Mar 08 11:38:10 2011 +1100"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.infradead.org/users/eparis/selinux into next\n"
    },
    {
      "commit": "9130090b5f04f7e7bc29b944e0b1ba494fff3f98",
      "tree": "54fafe352489be96c1796c022e431b97a5f48268",
      "parents": [
        "0b932cccbdc09a72aa370456a59b40ecd6b10baf"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 07 10:09:35 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Mon Mar 07 10:09:35 2011 +1100"
      },
      "message": "xfs: kill support/debug.[ch]\n\nThe remaining functionality in debug.[ch] is effectively just assert\nhandling, conditional debug definitions and hex dumping. The hex\ndumping and assert function can be moved into the new printk module,\nwhile the rest can be moved into top-level header files. This allows\nfs/xfs/support/debug.[ch] to be completely removed from the\ncodebase.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "0b932cccbdc09a72aa370456a59b40ecd6b10baf",
      "tree": "e13910b0589804e7e56e765e931c781829bafe8c",
      "parents": [
        "8221112b4377a3b69f2016b5cc3c550d51dd3139"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 07 10:08:35 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Mon Mar 07 10:08:35 2011 +1100"
      },
      "message": "xfs: Convert remaining cmn_err() callers to new API\n\nOnce converted, kill the remainder of the cmn_err() interface.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "8221112b4377a3b69f2016b5cc3c550d51dd3139",
      "tree": "4f2f29917a57338ba6069f723d0d899aca8d7f4f",
      "parents": [
        "6d4a8ecb344bddbbb8c71deb4dcea0be6955cfc3"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 07 10:07:35 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Mon Mar 07 10:07:35 2011 +1100"
      },
      "message": "xfs: convert the quota debug prints to new API\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "6d4a8ecb344bddbbb8c71deb4dcea0be6955cfc3",
      "tree": "c23892e838370e56c66949dee90df02e3315285e",
      "parents": [
        "5348778699bba92bf28b79863e09e7181d8cf95c"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 07 10:06:35 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Mon Mar 07 10:06:35 2011 +1100"
      },
      "message": "xfs: rename xfs_cmn_err_fsblock_zero()\n\nThe \"cmn_err\" part of the function name is no longer relevant. Rename\nthe function to xfs_alert_fsblock_zero() to match the new logging\nAPI.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "5348778699bba92bf28b79863e09e7181d8cf95c",
      "tree": "77f5349bc85bf4d35b73a9a66de304535e507bf4",
      "parents": [
        "af34e09da42801c97f39f768c715f5511d914b52"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 07 10:05:35 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Mon Mar 07 10:05:35 2011 +1100"
      },
      "message": "xfs: convert xfs_fs_cmn_err to new error logging API\n\nContinue to clean up the error logging code by converting all the\ncallers of xfs_fs_cmn_err() to the new API. Once done, remove the\nunused old API function.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "af34e09da42801c97f39f768c715f5511d914b52",
      "tree": "998f2d3d7e0dced4f401dd00073b1de411027ae7",
      "parents": [
        "65333b4c3d46909872796321d15f179cb0e32028"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 07 10:04:35 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Mon Mar 07 10:04:35 2011 +1100"
      },
      "message": "xfs: kill xfs_fs_mount_cmn_err() macro\n\nThe xfs_fs_mount_cmn_err() hides a simple check as to whether the\nmount path should output an error or not. Remove the macro and open\ncode the check.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "65333b4c3d46909872796321d15f179cb0e32028",
      "tree": "8273ccd922f1b9f977b9223636bdd018d977c16a",
      "parents": [
        "6a19d9393a5402e69fc52f5da8a828b8499a8265"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 07 10:03:35 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Mon Mar 07 10:03:35 2011 +1100"
      },
      "message": "xfs: kill xfs_fs_repair_cmn_err() macro\n\nIn certain cases of inode corruption, the xfs_fs_repair_cmn_err()\nmacro is used to output an extra message in the corruption report.\nThat extra message is \"unmount and run xfs_repair\", which really\napplies to any corruption report. Each case that this macro is\ncalled (except one) a following call to xfs_corruption_error() is\nmade to optionally dump more information about the error.\n\nHence, move the output of \"run xfs_repair\" to xfs_corruption_error()\nso that it is output on all corruption reports.  Also, convert the\ncallers of the repair macro that don\u0027t call xfs_corruption_error()\nto call it, hence provide consiѕtent error reporting for all cases\nwhere xfs_fs_repair_cmn_err() used to be called.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "6a19d9393a5402e69fc52f5da8a828b8499a8265",
      "tree": "069f5cacc45194ee8e28e0cd59ac817918296f98",
      "parents": [
        "a0fa2b679ecd15b4bdbb46cd2420b6affde91cf9"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 07 10:02:35 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Mon Mar 07 10:02:35 2011 +1100"
      },
      "message": "xfs: convert xfs_cmn_err to xfs_alert_tag\n\nContinue the conversion of the old cmn_err interface be converting\nall the conditional panic tag errors to xfs_alert_tag() and then\nremoving xfs_cmn_err().\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "a0fa2b679ecd15b4bdbb46cd2420b6affde91cf9",
      "tree": "48f905b8e795933e21f61c8248df5d9196f0bbe0",
      "parents": [
        "4f10700a2e4bb2ff3d3a80f08412e21109e6d4b5"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 07 10:01:35 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Mon Mar 07 10:01:35 2011 +1100"
      },
      "message": "xfs: Convert xlog_warn to new logging interface\n\nConvert the xfs log operations to use the new error logging\ninterfaces. This removes the xlog_{warn,panic} wrappers and makes\nalmost all errors emit the device they belong to instead of just\nrefering to \"XFS\".\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "4f10700a2e4bb2ff3d3a80f08412e21109e6d4b5",
      "tree": "b530112e7c04f1c7c62b8eec2b850508905fc42a",
      "parents": [
        "10e38391c0e242e53e30094f6c00553418ab2f2e"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 07 10:00:35 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Mon Mar 07 10:00:35 2011 +1100"
      },
      "message": "xfs: Convert linux-2.6/ files to new logging interface\n\nConvert the files in fs/xfs/linux-2.6/ to use the new xfs_\u003clevel\u003e\nlogging format that replaces the old Irix inherited cmn_err()\ninterfaces. While there, also convert naked printk calls to use the\nrelevant xfs logging function to standardise output format.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "af24ee9ea8d532e16883251a6684dfa1be8eec29",
      "tree": "0c6da066dd656121c077ba6b595503e0b6a41180",
      "parents": [
        "dd9c1549edef02290edced639f67b54a25abbe0e"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Mar 01 17:50:00 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Mar 01 21:21:13 2011 -0600"
      },
      "message": "xfs: zero proper structure size for geometry calls\n\nCommit 493f3358cb289ccf716c5a14fa5bb52ab75943e5 added this call to\nxfs_fs_geometry() in order to avoid passing kernel stack data back\nto user space:\n\n+       memset(geo, 0, sizeof(*geo));\n\nUnfortunately, one of the callers of that function passes the\naddress of a smaller data type, cast to fit the type that\nxfs_fs_geometry() requires.  As a result, this can happen:\n\nKernel panic - not syncing: stack-protector: Kernel stack is corrupted\nin: f87aca93\n\nPid: 262, comm: xfs_fsr Not tainted 2.6.38-rc6-493f3358cb2+ #1\nCall Trace:\n\n[\u003cc12991ac\u003e] ? panic+0x50/0x150\n[\u003cc102ed71\u003e] ? __stack_chk_fail+0x10/0x18\n[\u003cf87aca93\u003e] ? xfs_ioc_fsgeometry_v1+0x56/0x5d [xfs]\n\nFix this by fixing that one caller to pass the right type and then\ncopy out the subset it is interested in.\n\nNote: This patch is an alternative to one originally proposed by\nEric Sandeen.\n\nReported-by: Jeffrey Hundstad \u003cjeffrey.hundstad@mnsu.edu\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nTested-by: Jeffrey Hundstad \u003cjeffrey.hundstad@mnsu.edu\u003e\n"
    },
    {
      "commit": "10e38391c0e242e53e30094f6c00553418ab2f2e",
      "tree": "350ddd700ba3a5b00377eeccc7885975f900f63d",
      "parents": [
        "eeb2036b8a148629b762ae6d85cff0be8106f081"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Mar 02 14:20:59 2011 +1100"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Wed Mar 02 14:20:59 2011 +1100"
      },
      "message": "xfs: introduce new logging API.\n\nMost of the logging infrastructure in XFS is unneccessary and\ndesigned around the infrastructure supplied by Irix rather than\nLinux. To rationalise the logging interfaces, start by introducing\nsimple printk wrappers similar to the dev_printk() infrastructure.\nLater patches will convert code to use this new interface.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "eeb2036b8a148629b762ae6d85cff0be8106f081",
      "tree": "c5fca77c46f9493ed02621a1dcd3bb89367b3807",
      "parents": [
        "20ad9ea9becd34a3c16252ca9d815f2c74f8f30f"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Mar 01 17:50:00 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Mar 01 21:19:59 2011 -0600"
      },
      "message": "xfs: zero proper structure size for geometry calls\n\nCommit 493f3358cb289ccf716c5a14fa5bb52ab75943e5 added this call to\nxfs_fs_geometry() in order to avoid passing kernel stack data back\nto user space:\n\n+       memset(geo, 0, sizeof(*geo));\n\nUnfortunately, one of the callers of that function passes the\naddress of a smaller data type, cast to fit the type that\nxfs_fs_geometry() requires.  As a result, this can happen:\n\nKernel panic - not syncing: stack-protector: Kernel stack is corrupted\nin: f87aca93\n\nPid: 262, comm: xfs_fsr Not tainted 2.6.38-rc6-493f3358cb2+ #1\nCall Trace:\n\n[\u003cc12991ac\u003e] ? panic+0x50/0x150\n[\u003cc102ed71\u003e] ? __stack_chk_fail+0x10/0x18\n[\u003cf87aca93\u003e] ? xfs_ioc_fsgeometry_v1+0x56/0x5d [xfs]\n\nFix this by fixing that one caller to pass the right type and then\ncopy out the subset it is interested in.\n\nNote: This patch is an alternative to one originally proposed by\nEric Sandeen.\n\nReported-by: Jeffrey Hundstad \u003cjeffrey.hundstad@mnsu.edu\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nTested-by: Jeffrey Hundstad \u003cjeffrey.hundstad@mnsu.edu\u003e\n"
    },
    {
      "commit": "20ad9ea9becd34a3c16252ca9d815f2c74f8f30f",
      "tree": "384c15486152f422298139379dc8fc56c8f78d38",
      "parents": [
        "ec3ba85f4083d10e32fe58b46db02d78ef71f6b8"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Feb 13 12:06:34 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Feb 22 20:33:25 2011 -0600"
      },
      "message": "xfs: enable delaylog by default\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "ec3ba85f4083d10e32fe58b46db02d78ef71f6b8",
      "tree": "bf8e3b41e913c80f24673b87fb390ce6903d82ac",
      "parents": [
        "1050c71e2925ab0cb025e4c89e08b15529a1ee36"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Feb 13 13:26:42 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Feb 22 20:32:28 2011 -0600"
      },
      "message": "xfs: more sensible inode refcounting for ialloc\n\nCurrently we return iodes from xfs_ialloc with just a single reference held.\nBut we need two references, as one is dropped during transaction commit and\nthe second needs to be transfered to the VFS.  Change xfs_ialloc to use\nxfs_iget plus xfs_trans_ijoin_ref to grab two references to the inode,\nand remove the now superflous IHOLD calls from all callers.  This also\ngreatly simplifies the error handling in xfs_create and also allow to remove\nxfs_trans_iget as no other callers are left.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "1050c71e2925ab0cb025e4c89e08b15529a1ee36",
      "tree": "eacaa53e025ab0da4793f1c3c09fc9e15ebee6a5",
      "parents": [
        "5d15765594eeb5d82c5630b3428ea0ac4f7d3c31"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Feb 13 13:25:31 2011 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Feb 22 20:30:21 2011 -0600"
      },
      "message": "xfs: stop using xfs_trans_iget in the RT allocator\n\nDuring mount we establish references to the RT inodes, which we keep for\nthe lifetime of the filesystem.  Instead of using xfs_trans_iget to grab\nadditional references when adding RT inodes to transactions use the\ncombination of xfs_ilock and xfs_trans_ijoin_ref, which archives the same\nend result with less overhead.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    }
  ],
  "next": "be715140b5c3baf8ab6708060cfab80bef279d18"
}
