)]}'
{
  "log": [
    {
      "commit": "7b6259e7a83647948fa33a736cc832310c8d85aa",
      "tree": "99bb872b179a93f5e32b51f312029abb1237b055",
      "parents": [
        "1920779e67cbf5ea8afef317777c5bf2b8096188"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Thu Jun 24 11:35:17 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Thu Jun 24 11:35:17 2010 +1000"
      },
      "message": "xfs: remove block number from inode lookup code\n\nThe block number comes from bulkstat based inode lookups to shortcut\nthe mapping calculations. We ar enot able to trust anything from\nbulkstat, so drop the block number as well so that the correct\nlookups and mappings are always done.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "1920779e67cbf5ea8afef317777c5bf2b8096188",
      "tree": "f3450e4075162ef5ec360446c301513a5adf316e",
      "parents": [
        "7124fe0a5b619d65b739477b3b55a20bf805b06d"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Thu Jun 24 11:15:47 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Thu Jun 24 11:15:47 2010 +1000"
      },
      "message": "xfs: rename XFS_IGET_BULKSTAT to XFS_IGET_UNTRUSTED\n\nInode numbers may come from somewhere external to the filesystem\n(e.g. file handles, bulkstat information) and so are inherently\nuntrusted. Rename the flag we use for these lookups to make it\nobvious we are doing a lookup of an untrusted inode number and need\nto verify it completely before trying to read it from disk.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "7124fe0a5b619d65b739477b3b55a20bf805b06d",
      "tree": "be333ebdcc7df735070dbc1441c1d59682d06132",
      "parents": [
        "7dce11dbac54fce777eea0f5fb25b2694ccd7900"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Thu Jun 24 11:15:33 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Thu Jun 24 11:15:33 2010 +1000"
      },
      "message": "xfs: validate untrusted inode numbers during lookup\n\nWhen we decode a handle or do a bulkstat lookup, we are using an\ninode number we cannot trust to be valid. If we are deleting inode\nchunks from disk (default noikeep mode), then we cannot trust the on\ndisk inode buffer for any given inode number to correctly reflect\nwhether the inode has been unlinked as the di_mode nor the\ngeneration number may have been updated on disk.\n\nThis is due to the fact that when we delete an inode chunk, we do\nnot write the clusters back to disk when they are removed - instead\nwe mark them stale to avoid them being written back potentially over\nthe top of something that has been subsequently allocated at that\nlocation. The result is that we can have locations of disk that look\nlike they contain valid inodes but in reality do not. Hence we\ncannot simply convert the inode number to a block number and read\nthe location from disk to determine if the inode is valid or not.\n\nAs a result, and XFS_IGET_BULKSTAT lookup needs to actually look the\ninode up in the inode allocation btree to determine if the inode\nnumber is valid or not.\n\nIt should be noted even on ikeep filesystems, there is the\npossibility that blocks on disk may look like valid inode clusters.\ne.g. if there are filesystem images hosted on the filesystem. Hence\neven for ikeep filesystems we really need to validate that the inode\nnumber is valid before issuing the inode buffer read.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "7dce11dbac54fce777eea0f5fb25b2694ccd7900",
      "tree": "90d6d109ca110bcbf47a954a8283ec250be07003",
      "parents": [
        "1817176a86352f65210139d4c794ad2d19fc6b63"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Jun 23 18:11:11 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Wed Jun 23 18:11:11 2010 +1000"
      },
      "message": "xfs: always use iget in bulkstat\n\nThe non-coherent bulkstat versionsthat look directly at the inode\nbuffers causes various problems with performance optimizations that\nmake increased use of just logging inodes.  This patch makes bulkstat\nalways use iget, which should be fast enough for normal use with the\nradix-tree based inode cache introduced a while ago.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n"
    },
    {
      "commit": "1817176a86352f65210139d4c794ad2d19fc6b63",
      "tree": "59ccbcb634d87882fc899b0d21438c4bb86f8632",
      "parents": [
        "7e27d6e778cd87b6f2415515d7127eba53fe5d02"
      ],
      "author": {
        "name": "Dan Rosenberg",
        "email": "dan.j.rosenberg@gmail.com",
        "time": "Thu Jun 24 12:07:47 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Thu Jun 24 12:07:47 2010 +1000"
      },
      "message": "xfs: prevent swapext from operating on write-only files\n\nThis patch prevents user \"foo\" from using the SWAPEXT ioctl to swap\na write-only file owned by user \"bar\" into a file owned by \"foo\" and\nsubsequently reading it.  It does so by checking that the file\ndescriptors passed to the ioctl are also opened for reading.\n\nSigned-off-by: Dan Rosenberg \u003cdan.j.rosenberg@gmail.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "254c8c2dbf0e06a560a5814eb90cb628adb2de66",
      "tree": "6bcd10add0b85cf43cad8e72b6d4525c5a63b264",
      "parents": [
        "0b5649278e39a068aaf91399941bab1b4a4a3cc2"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Jun 09 10:37:19 2010 +1000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 08 18:12:44 2010 -0700"
      },
      "message": "xfs: remove nr_to_write writeback windup.\n\nNow that the background flush code has been fixed, we shouldn\u0027t need to\nsilently multiply the wbc-\u003enr_to_write to get good writeback. Remove\nthat code.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1bf7dbfde8fe7ddaa8e2e1b4e0fc41a9fc6aa7a5",
      "tree": "fdb99e686fa40e79cc53f80dfed58e9b548ed4eb",
      "parents": [
        "ad8456361fa19068cf49b50a4f98e41b73c08e76",
        "f9369729496a0f4c607a4cc1ea4dfeddbbfc505a"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Jun 04 13:22:30 2010 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Jun 04 13:22:30 2010 -0500"
      },
      "message": "Merge branch \u0027master\u0027 into for-linus\n"
    },
    {
      "commit": "f9369729496a0f4c607a4cc1ea4dfeddbbfc505a",
      "tree": "05d463cd3c40514f09c01553cfd40ea3ea784f37",
      "parents": [
        "070ecdca54dde9577d2697088e74e45568f48efb"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Jun 03 16:22:29 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Thu Jun 03 16:22:29 2010 +1000"
      },
      "message": "xfs: improve xfs_isilocked\n\nUse rwsem_is_locked to make the assertations for shared locks work.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n\n"
    },
    {
      "commit": "070ecdca54dde9577d2697088e74e45568f48efb",
      "tree": "6f70d1fd43231866ad6b54e2e5c011700ef3b072",
      "parents": [
        "99a4d54620264a614c89597bc5aaab22ec83f89c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu Jun 03 16:22:29 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Thu Jun 03 16:22:29 2010 +1000"
      },
      "message": "xfs: skip writeback from reclaim context\n\nAllowing writeback from reclaim context causes massive problems with stack\noverflows as we can call into the writeback code which tends to be a heavy\nstack user both in the generic code and XFS from random contexts that\nperform memory allocations.\n\nFollow the example of btrfs (and in slightly different form ext4) and refuse\nto write out data from reclaim context.  This issue should really be handled\nby the VM so that we can tune better for this case, but until we get it\nsorted out there we have to hack around this in each filesystem with a\ncomplex writeback path.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n\n"
    },
    {
      "commit": "5b257b4a1f9239624c6b5e669763de04e482c2b3",
      "tree": "4896f326cc9e30c091ad2a370244837613f998ee",
      "parents": [
        "fb3b504adeee942e55393396fea8fdf406acf037"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Thu Jun 03 16:22:29 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Thu Jun 03 16:22:29 2010 +1000"
      },
      "message": "xfs: fix race in inode cluster freeing failing to stale inodes\n\nWhen an inode cluster is freed, it needs to mark all inodes in memory as\nXFS_ISTALE before marking the buffer as stale. This is eeded because the inodes\nhave a different life cycle to the buffer, and once the buffer is torn down\nduring transaction completion, we must ensure none of the inodes get written\nback (which is what XFS_ISTALE does).\n\nUnfortunately, xfs_ifree_cluster() has some bugs that lead to inodes not being\nmarked with XFS_ISTALE. This shows up when xfs_iflush() is called on these\ninodes either during inode reclaim or tail pushing on the AIL.  The buffer is\nread back, but no longer contains inodes and so triggers assert failures and\nshutdowns. This was reproducable with at run.dbench10 invocation from xfstests.\n\nThere are two main causes of xfs_ifree_cluster() failing. The first is simple -\nit checks in-memory inodes it finds in the per-ag icache to see if they are\nclean without holding the flush lock. if they are clean it skips them\ncompletely. However, If an inode is flushed delwri, it will\nappear clean, but is not guaranteed to be written back until the flush lock has\nbeen dropped. Hence we may have raced on the clean check and the inode may\nactually be dirty. Hence always mark inodes found in memory stale before we\ncheck properly if they are clean.\n\nThe second is more complex, and makes the first problem easier to hit.\nBasically the in-memory inode scan is done with full knowledge it can be racing\nwith inode flushing and AIl tail pushing, which means that inodes that it can\u0027t\nget the flush lock on might not be attached to the buffer after then in-memory\ninode scan due to IO completion occurring. This is actually documented in the\ncode as \"needs better interlocking\". i.e. this is a zero-day bug.\n\nEffectively, the in-memory scan must be done while the inode buffer is locked\nand Io cannot be issued on it while we do the in-memory inode scan. This\nensures that inodes we couldn\u0027t get the flush lock on are guaranteed to be\nattached to the cluster buffer, so we can then catch all in-memory inodes and\nmark them stale.\n\nNow that the inode cluster buffer is locked before the in-memory scan is done,\nthere is no need for the two-phase update of the in-memory inodes, so simplify\nthe code into two loops and remove the allocation of the temporary buffer used\nto hold locked inodes across the phases.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n\n"
    },
    {
      "commit": "fb3b504adeee942e55393396fea8fdf406acf037",
      "tree": "42486eb1c674ba2d76b719109e21a54a7df7b8fc",
      "parents": [
        "9b98b6f3e1534bba2efcd5b16318945cf2218d99"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri May 28 19:03:10 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 15:19:56 2010 -0500"
      },
      "message": "xfs: fix access to upper inodes without inode64\n\nIf a filesystem is mounted without the inode64 mount option we\nshould still be able to access inodes not fitting into 32 bits, just\nnot created new ones.  For this to work we need to make sure the\ninode cache radix tree is initialized for all allocation groups, not\njust those we plan to allocate inodes from.  This patch makes sure\nwe initialize the inode cache radix tree for all allocation groups,\nand also cleans xfs_initialize_perag up a bit to separate the\ninode32 logical from the general perag structure setup.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "9b98b6f3e1534bba2efcd5b16318945cf2218d99",
      "tree": "1b793a3632ec68c2f8a2f24f200325f2235dd1b8",
      "parents": [
        "38e712ab3d28d79725eaade02fe8aba51abac196"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Thu May 27 01:58:13 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 15:19:50 2010 -0500"
      },
      "message": "xfs: fix might_sleep() warning when initialising per-ag tree\n\nThe use of radix_tree_preload() only works if the radix tree was\ninitialised without the __GFP_WAIT flag. The per-ag tree uses\nGFP_NOFS, so does not trigger allocation of new tree nodes from the\npreloaded array. Hence it enters the allocator with a spinlock held\nand triggers the might_sleep() warnings.\n\nReported-by; Chris Mason \u003cchris.mason@oracle.com\u003e\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": "38e712ab3d28d79725eaade02fe8aba51abac196",
      "tree": "e9fb77e11d0be890b86abcbe5fadc02e4761615f",
      "parents": [
        "3bd0946eb157e26240ca858d1a42738b095dc6f3"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Wed May 26 15:57:23 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 15:19:41 2010 -0500"
      },
      "message": "fs/xfs/quota: Add missing mutex_unlock\n\nAdd a mutex_unlock missing on the error path.  The use of this lock\nis balanced elsewhere in the file.\n\nThe semantic match that finds this problem is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\nexpression E1;\n@@\n\n* mutex_lock(E1,...);\n  \u003c+... when !\u003d E1\n  if (...) {\n    ... when !\u003d E1\n*   return ...;\n  }\n  ...+\u003e\n* mutex_unlock(E1,...);\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "3bd0946eb157e26240ca858d1a42738b095dc6f3",
      "tree": "bc3bdd29874700f5cada5922caf1d39efd4ab138",
      "parents": [
        "f8adb4d574cf8c67f8391367136edc5469258fdc"
      ],
      "author": {
        "name": "Huang Weiyi",
        "email": "weiyi.huang@gmail.com",
        "time": "Tue May 25 22:15:26 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 15:19:36 2010 -0500"
      },
      "message": "xfs: remove duplicated #include\n\nRemove duplicated #include(\u0027s) in\n  fs/xfs/linux-2.6/xfs_quotaops.c\n\nSigned-off-by: Huang Weiyi \u003cweiyi.huang@gmail.com\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "f8adb4d574cf8c67f8391367136edc5469258fdc",
      "tree": "0528b7b64336719965c54ae4f47b95747f8f6eff",
      "parents": [
        "292ec4cf3536a5ed8809e8823341b203e497bbaf"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon May 24 08:25:57 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 15:19:31 2010 -0500"
      },
      "message": "xfs: convert more trace events to DEFINE_EVENT\n\nUse DECLARE_EVENT_CLASS, and save ~15K:\n\n   text    data     bss     dec     hex filename\n 171949   43028      48  215025   347f1 fs/xfs/linux-2.6/xfs_trace.o.orig\n 156521   43028      36  199585   30ba1 fs/xfs/linux-2.6/xfs_trace.o\n\nNo change in functionality.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "292ec4cf3536a5ed8809e8823341b203e497bbaf",
      "tree": "abded6956e08f3fc5ccddd4af945739aa049a92f",
      "parents": [
        "07f1a4f5e89cd4e6c79d67d41e8a18c451214ae2"
      ],
      "author": {
        "name": "Huang Weiyi",
        "email": "weiyi.huang@gmail.com",
        "time": "Sat May 22 17:13:20 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 15:19:24 2010 -0500"
      },
      "message": "xfs: xfs_trace.c: remove duplicated #include\n\nRemove duplicated #include(\u0027s) in\n  fs/xfs/linux-2.6/xfs_trace.c\n\nSigned-off-by: Huang Weiyi \u003cweiyi.huang@gmail.com\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "07f1a4f5e89cd4e6c79d67d41e8a18c451214ae2",
      "tree": "a4efa89cd8536b6ff6b75713fd5cc342f4da4f62",
      "parents": [
        "fdc07f44c891d3fdee7722a03e3881614a293b3c"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 21 05:47:59 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 15:19:12 2010 -0500"
      },
      "message": "xfs: Check new inode size is OK before preallocating\n\nThe new xfsqa test 228 tries to preallocate more space than the\nfilesystem contains. it should fail, but instead triggers an assert\nabout lock flags.  The failure is due to the size extension failing\nin vmtruncate() due to rlimit being set. Check this before we start\nthe preallocation to avoid allocating space that will never be used.\n\nAlso the path through xfs_vn_allocate already holds the IO lock, so\nit should not be present in the lock flags when the setattr fails.\nHence the assert needs to take this into account. This will prevent\nother such callers from hitting this incorrect ASSERT.\n\n(Fixed a reference to \"newsize\" to read \"new_size\". -Alex)\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": "fdc07f44c891d3fdee7722a03e3881614a293b3c",
      "tree": "aed7fd2fac1df3d4d01c679c18ce2fdba31025c3",
      "parents": [
        "025101dca4480eff9da948405e872d5115030850"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon May 10 17:28:14 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 14:58:36 2010 -0500"
      },
      "message": "xfs: clean up xlog_align\n\nAdd suggested cleanups to commit 29db3370a1369541d58d692fbfb168b8a0bd7f41\nfrom review that didn\u0027t end up being commited.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "025101dca4480eff9da948405e872d5115030850",
      "tree": "a35460cf1a1cce94bb19249328761551c8f1b6b1",
      "parents": [
        "32891b292d6262d1db8e553cf3f4b38a91247b5a"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue May 04 13:53:48 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 14:58:30 2010 -0500"
      },
      "message": "xfs: cleanup log reservation calculactions\n\nInstead of having small helper functions calling big macros do the\ncalculations for the log reservations directly in the functions.\nThese are mostly 1:1 from the macros execept that the macros kept\nthe quota calculations in their callers.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "32891b292d6262d1db8e553cf3f4b38a91247b5a",
      "tree": "2110ec573f89b617e8a8dfe891b86a6842601ef2",
      "parents": [
        "657a4cffde065beca7d919e867f61e7d322708b6"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Fri Apr 30 16:43:48 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 14:58:24 2010 -0500"
      },
      "message": "xfs: be more explicit if RT mount fails due to config\n\nRecent testers were slightly confused that a realtime mount failed\ndue to missing CONFIG_XFS_RT; we can make that a little more\nobvious.\n\nV2: drop the else as suggested by Christoph\n\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "657a4cffde065beca7d919e867f61e7d322708b6",
      "tree": "c3841761a48175aaab67c4e7293ae4d86b44b393",
      "parents": [
        "ccf7c23fc129e75ef60e6f59f60a485b7a056598"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Fri Apr 30 03:42:49 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri May 28 14:58:16 2010 -0500"
      },
      "message": "xfs: replace E2BIG with EFBIG where appropriate\n\nMany places in the xfs code return E2BIG when they really mean\nEFBIG; trying to grow past 16T on a 32 bit machine, for example,\nsays \"Argument list too long\" rather than \"File too large\" which is\nnot particularly helpful.\n\nSome of these don\u0027t make perfect sense as EFBIG either, but still\nbetter than E2BIG IMHO.\n\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "7ea8085910ef3dd4f3cad6845aaa2b580d39b115",
      "tree": "d9c1edb5906f943f7d70bfb4b65106e29772d379",
      "parents": [
        "cc967be54710d97c05229b2e5ba2d00df84ddd64"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed May 26 17:53:25 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:05:02 2010 -0400"
      },
      "message": "drop unused dentry argument to -\u003efsync\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "88e88374ee4958786397a57f684de6f1fc5e0242",
      "tree": "750fe86ece5d65e597223eb07c5ce7cf5b3749a0",
      "parents": [
        "7e125f7b9cbfce4101191b8076d606c517a73066",
        "ccf7c23fc129e75ef60e6f59f60a485b7a056598"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 11:57:36 2010 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 11:57:36 2010 -0500"
      },
      "message": "Merge branch \u0027delayed-logging-for-2.6.35\u0027 into for-linus\n"
    },
    {
      "commit": "ccf7c23fc129e75ef60e6f59f60a485b7a056598",
      "tree": "957539e31ee2a7155bbf9bb085ec1cb1d3432d3a",
      "parents": [
        "df806158b0f6eb24247773b4a19b8b59d7217e59"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Thu May 20 23:19:42 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:41:22 2010 -0500"
      },
      "message": "xfs: Ensure inode allocation buffers are fully replayed\n\nWith delayed logging, we can get inode allocation buffers in the\nsame transaction inode unlink buffers. We don\u0027t currently mark inode\nallocation buffers in the log, so inode unlink buffers take\nprecedence over allocation buffers.\n\nThe result is that when they are combined into the same checkpoint,\nonly the unlinked inode chain fields are replayed, resulting in\nuninitialised inode buffers being detected when the next inode\nmodification is replayed.\n\nTo fix this, we need to ensure that we do not set the inode buffer\nflag in the buffer log item format flags if the inode allocation has\nnot already hit the log. To avoid requiring a change to log\nrecovery, we really need to make this a modification that relies\nonly on in-memory sate.\n\nWe can do this by checking during buffer log formatting (while the\nCIL cannot be flushed) if we are still in the same sequence when we\ncommit the unlink transaction as the inode allocation transaction.\nIf we are, then we do not add the inode buffer flag to the buffer\nlog format item flags. This means the entire buffer will be\nreplayed, not just the unlinked fields. We do this while\nCIL flusheѕ are locked out to ensure that we don\u0027t race with the\nsequence numbers changing and hence fail to put the inode buffer\nflag in the buffer format flags when we really need to.\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": "df806158b0f6eb24247773b4a19b8b59d7217e59",
      "tree": "a6fb142258aabf03011aadd14c9cf6ade9033d58",
      "parents": [
        "9da1ab181ac1790f86528b86ba5876f037e8dcdc"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon May 17 15:52:13 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:38:20 2010 -0500"
      },
      "message": "xfs: enable background pushing of the CIL\n\nIf we let the CIL grow without bound, it will grow large enough to violate\nrecovery constraints (must be at least one complete transaction in the log at\nall times) or take forever to write out through the log buffers. Hence we need\na check during asynchronous transactions as to whether the CIL needs to be\npushed.\n\nWe track the amount of log space the CIL consumes, so it is relatively simple\nto limit it on a pure size basis. Make the limit the minimum of just under half\nthe log size (recovery constraint) or 8MB of log space (which is an awful lot\nof metadata).\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": "9da1ab181ac1790f86528b86ba5876f037e8dcdc",
      "tree": "44aed8ed83c4d8b4480d757d2efb0dde475a6500",
      "parents": [
        "71e330b593905e40d6c5afa824d38ee02d70ce5f"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon May 17 15:51:59 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:38:14 2010 -0500"
      },
      "message": "xfs: forced unmounts need to push the CIL\n\nIf the filesystem is being shut down and the there is no log error,\nthe current code forces out the current log buffers. This code now needs\nto push the CIL before it forces out the log buffers to acheive the same\nresult.\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": "71e330b593905e40d6c5afa824d38ee02d70ce5f",
      "tree": "4c9fa6c4766280752fc40f3057fd6cf64396c16c",
      "parents": [
        "a9a745daadab26f13884ff26a50fa38247c11ce9"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 21 14:37:18 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:38:03 2010 -0500"
      },
      "message": "xfs: Introduce delayed logging core code\n\nThe delayed logging code only changes in-memory structures and as\nsuch can be enabled and disabled with a mount option. Add the mount\noption and emit a warning that this is an experimental feature that\nshould not be used in production yet.\n\nWe also need infrastructure to track committed items that have not\nyet been written to the log. This is what the Committed Item List\n(CIL) is for.\n\nThe log item also needs to be extended to track the current log\nvector, the associated memory buffer and it\u0027s location in the Commit\nItem List. Extend the log item and log vector structures to enable\nthis tracking.\n\nTo maintain the current log format for transactions with delayed\nlogging, we need to introduce a checkpoint transaction and a context\nfor tracking each checkpoint from initiation to transaction\ncompletion.  This includes adding a log ticket for tracking space\nlog required/used by the context checkpoint.\n\nTo track all the changes we need an io vector array per log item,\nrather than a single array for the entire transaction. Using the new\nlog vector structure for this requires two passes - the first to\nallocate the log vector structures and chain them together, and the\nsecond to fill them out.  This log vector chain can then be passed\nto the CIL for formatting, pinning and insertion into the CIL.\n\nFormatting of the log vector chain is relatively simple - it\u0027s just\na loop over the iovecs on each log vector, but it is made slightly\nmore complex because we re-write the iovec after the copy to point\nback at the memory buffer we just copied into.\n\nThis code also needs to pin log items. If the log item is not\nalready tracked in this checkpoint context, then it needs to be\npinned. Otherwise it is already pinned and we don\u0027t need to pin it\nagain.\n\nThe only other complexity is calculating the amount of new log space\nthe formatting has consumed. This needs to be accounted to the\ntransaction in progress, and the accounting is made more complex\nbecase we need also to steal space from it for log metadata in the\ncheckpoint transaction. Calculate all this at insert time and update\nall the tickets, counters, etc correctly.\n\nOnce we\u0027ve formatted all the log items in the transaction, attach\nthe busy extents to the checkpoint context so the busy extents live\nuntil checkpoint completion and can be processed at that point in\ntime. Transactions can then be freed at this point in time.\n\nNow we need to issue checkpoints - we are tracking the amount of log space\nused by the items in the CIL, so we can trigger background checkpoints when the\nspace usage gets to a certain threshold. Otherwise, checkpoints need ot be\ntriggered when a log synchronisation point is reached - a log force event.\n\nBecause the log write code already handles chained log vectors, writing the\ntransaction is trivial, too. Construct a transaction header, add it\nto the head of the chain and write it into the log, then issue a\ncommit record write. Then we can release the checkpoint log ticket\nand attach the context to the log buffer so it can be called during\nIo completion to complete the checkpoint.\n\nWe also need to allow for synchronising multiple in-flight\ncheckpoints. This is needed for two things - the first is to ensure\nthat checkpoint commit records appear in the log in the correct\nsequence order (so they are replayed in the correct order). The\nsecond is so that xfs_log_force_lsn() operates correctly and only\nflushes and/or waits for the specific sequence it was provided with.\n\nTo do this we need a wait variable and a list tracking the\ncheckpoint commits in progress. We can walk this list and wait for\nthe checkpoints to change state or complete easily, an this provides\nthe necessary synchronisation for correct operation in both cases.\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": "ed3b4d6cdc81e8feefdbfa3c584614be301b6d39",
      "tree": "5b8cd5735dfbc5eb834f96d25a8eb587186715be",
      "parents": [
        "955833cf2ad0aa39b336e853cad212d867199984"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Fri May 21 12:07:08 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:34:00 2010 -0500"
      },
      "message": "xfs: Improve scalability of busy extent tracking\n\nWhen we free a metadata extent, we record it in the per-AG busy\nextent array so that it is not re-used before the freeing\ntransaction hits the disk. This array is fixed size, so when it\noverflows we make further allocation transactions synchronous\nbecause we cannot track more freed extents until those transactions\nhit the disk and are completed. Under heavy mixed allocation and\nfreeing workloads with large log buffers, we can overflow this array\nquite easily.\n\nFurther, the array is sparsely populated, which means that inserts\nneed to search for a free slot, and array searches often have to\nsearch many more slots that are actually used to check all the\nbusy extents. Quite inefficient, really.\n\nTo enable this aspect of extent freeing to scale better, we need\na structure that can grow dynamically. While in other areas of\nXFS we have used radix trees, the extents being freed are at random\nlocations on disk so are better suited to being indexed by an rbtree.\n\nSo, use a per-AG rbtree indexed by block number to track busy\nextents.  This incures a memory allocation when marking an extent\nbusy, but should not occur too often in low memory situations. This\nshould scale to an arbitrary number of extents so should not be a\nlimitation for features such as in-memory aggregation of\ntransactions.\n\nHowever, there are still situations where we can\u0027t avoid allocating\nbusy extents (such as allocation from the AGFL). To minimise the\noverhead of such occurences, we need to avoid doing a synchronous\nlog force while holding the AGF locked to ensure that the previous\ntransactions are safely on disk before we use the extent. We can do\nthis by marking the transaction doing the allocation as synchronous\nrather issuing a log force.\n\nBecause of the locking involved and the ordering of transactions,\nthe synchronous transaction provides the same guarantees as a\nsynchronous log force because it ensures that all the prior\ntransactions are already on disk when the synchronous transaction\nhits the disk. i.e. it preserves the free-\u003eallocate order of the\nextent correctly in recovery.\n\nBy doing this, we avoid holding the AGF locked while log writes are\nin progress, hence reducing the length of time the lock is held and\ntherefore we increase the rate at which we can allocate and free\nfrom the allocation group, thereby increasing overall throughput.\n\nThe only problem with this approach is that when a metadata buffer is\nmarked stale (e.g. a directory block is removed), then buffer remains\npinned and locked until the log goes to disk. The issue here is that\nif that stale buffer is reallocated in a subsequent transaction, the\nattempt to lock that buffer in the transaction will hang waiting\nthe log to go to disk to unlock and unpin the buffer. Hence if\nsomeone tries to lock a pinned, stale, locked buffer we need to\npush on the log to get it unlocked ASAP. Effectively we are trading\noff a guaranteed log force for a much less common trigger for log\nforce to occur.\n\nIdeally we should not reallocate busy extents. That is a much more\ncomplex fix to the problem as it involves direct intervention in the\nallocation btree searches in many places. This is left to a future\nset of modifications.\n\nFinally, now that we track busy extents in allocated memory, we\ndon\u0027t need the descriptors in the transaction structure to point to\nthem. We can replace the complex busy chunk infrastructure with a\nsimple linked list of busy extents. This allows us to remove a large\nchunk of code, making the overall change a net reduction in code\nsize.\n\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "955833cf2ad0aa39b336e853cad212d867199984",
      "tree": "301c224647dea71852e36929932321bccabd1dc4",
      "parents": [
        "169a7b078eaa765e6bd09865c985298ee9084a89"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 14 21:41:46 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:33:52 2010 -0500"
      },
      "message": "xfs: make the log ticket ID available outside the log infrastructure\n\nThe ticket ID is needed to uniquely identify transactions when doing busy\nextent matching. Delayed logging changes the lifecycle of busy extents with\nrespect to the transaction structure lifecycle. Hence we can no longer use\nthe transaction structure as a means of determining the owner of the busy\nextent as it may be freed and reused while the busy extent is still active.\n\nThis commit provides the infrastructure to access the xlog_tid_t held in the\nticket from a transaction handle. This avoids the need for callers to peek\ninto the transaction and log structures to find this out.\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": "169a7b078eaa765e6bd09865c985298ee9084a89",
      "tree": "ee787e600c6c80b6c08ab4d551b8c494daa22e81",
      "parents": [
        "c11554104f4dcb509fd43973389b097a04b9d51d"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 07 11:05:31 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:33:46 2010 -0500"
      },
      "message": "xfs: clean up log ticket overrun debug output\n\nPush the error message output when a ticket overrun is detected\ninto the ticket printing functions. Also remove the debug version\nof the code as the production version will still panic just as\neffectively on a debug kernel via the panic mask being set.\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": "c11554104f4dcb509fd43973389b097a04b9d51d",
      "tree": "18b67546aa2baacaa729ae51ad656465bdc2654f",
      "parents": [
        "64fc35de60da3b1fe970168d10914bf1cf34a3e3"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 07 11:05:19 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:33:39 2010 -0500"
      },
      "message": "xfs: Clean up XFS_BLI_* flag namespace\n\nClean up the buffer log format (XFS_BLI_*) flags because they have a\npolluted namespace. They XFS_BLI_ prefix is used for both in-memory\nand on-disk flag feilds, but have overlapping values for different\nflags. Rename the buffer log format flags to use the XFS_BLF_*\nprefix to avoid confusing them with the in-memory XFS_BLI_* prefixed\nflags.\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": "64fc35de60da3b1fe970168d10914bf1cf34a3e3",
      "tree": "150216a336bbb3a0f7066763b675fb6a0e6f3061",
      "parents": [
        "3383ca5780f88bb2c119174045ed77d5ece08072"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 07 11:04:34 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:33:31 2010 -0500"
      },
      "message": "xfs: modify buffer item reference counting\n\nThe buffer log item reference counts used to take referenceѕ for every\ntransaction, similar to the pin counting. This is symmetric (like the\npin/unpin) with respect to transaction completion, but with dleayed logging\nbecomes assymetric as the pinning becomes assymetric w.r.t. transaction\ncompletion.\n\nTo make both cases the same, allow the buffer pinning to take a reference to\nthe buffer log item and always drop the reference the transaction has on it\nwhen being unlocked. This is balanced correctly because the unpin operation\nalways drops a reference to the log item. Hence reference counting becomes\nsymmetric w.r.t. item pinning as well as w.r.t active transactions and as a\nresult the reference counting model remain consistent between normal and\ndelayed logging.\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": "3383ca5780f88bb2c119174045ed77d5ece08072",
      "tree": "582aaa878f90af0e48941c3fcadbafe4c1a695f4",
      "parents": [
        "524ee36fa4661d745a467c3bba0e1034fd1f4b77"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 07 11:04:17 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:33:17 2010 -0500"
      },
      "message": "xfs: allow log ticket allocation to take allocation flags\n\nDelayed logging currently requires ticket allocation to succeed, so\nwe need to be able to sleep on allocation. It also should not allow\nmemory allocation to recurse into the filesystem. hence we need to\npass allocation flags directing the type of allocation the caller\nrequires.\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": "524ee36fa4661d745a467c3bba0e1034fd1f4b77",
      "tree": "c14176bd3f02e40f1fbdffc137b6f4d49b8e6d5e",
      "parents": [
        "b4ed4626a9775cd8cb77209280d24839526f94f2"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri May 07 11:05:05 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon May 24 10:33:10 2010 -0500"
      },
      "message": "xfs: Don\u0027t reuse the same transaction ID for duplicated transactions.\n\nThe transaction ID is written into the log as the unique identifier\nfor transactions during recover. When duplicating a transaction, we\nreuse the log ticket, which means it has the same transaction ID as\nthe previous transaction.\n\nRather than regenerating a random transaction ID for the duplicated\ntransaction, just add one to the current ID so that duplicated\ntransaction can be easily spotted in the log and during recovery\nduring problem diagnosis.\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": "e8bebe2f71d26871b0970ae1d9cf0ed3cdd9569d",
      "tree": "c0d82cbd11daaf579b74121c6641d58947091094",
      "parents": [
        "6109e2ce2600e2db26cd0424bb9c6ed019723288",
        "82f3952c02add60b15eea9151d4d99b6b82066c6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 19:37:45 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 19:37:45 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (69 commits)\n  fix handling of offsets in cris eeprom.c, get rid of fake on-stack files\n  get rid of home-grown mutex in cris eeprom.c\n  switch ecryptfs_write() to struct inode *, kill on-stack fake files\n  switch ecryptfs_get_locked_page() to struct inode *\n  simplify access to ecryptfs inodes in -\u003ereadpage() and friends\n  AFS: Don\u0027t put struct file on the stack\n  Ban ecryptfs over ecryptfs\n  logfs: replace inode uid,gid,mode initialization with helper function\n  ufs: replace inode uid,gid,mode initialization with helper function\n  udf: replace inode uid,gid,mode init with helper\n  ubifs: replace inode uid,gid,mode initialization with helper function\n  sysv: replace inode uid,gid,mode initialization with helper function\n  reiserfs: replace inode uid,gid,mode initialization with helper function\n  ramfs: replace inode uid,gid,mode initialization with helper function\n  omfs: replace inode uid,gid,mode initialization with helper function\n  bfs: replace inode uid,gid,mode initialization with helper function\n  ocfs2: replace inode uid,gid,mode initialization with helper function\n  nilfs2: replace inode uid,gid,mode initialization with helper function\n  minix: replace inode uid,gid,mode init with helper\n  ext4: replace inode uid,gid,mode init with helper\n  ...\n\nTrivial conflict in fs/fs-writeback.c (mark bitfields unsigned)\n"
    },
    {
      "commit": "46e58764f0c502847ed1f4662aa37eefa602a8f9",
      "tree": "c3dc3f8aae37014726a372106e6028df1a5e63ab",
      "parents": [
        "94d09a98cdb163be12fb5c76841fa295f0bee22a"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Thu May 13 17:53:20 2010 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:19 2010 -0400"
      },
      "message": "xfs: constify xattr_handler\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ee9a3607fb03e804ddf624544105f4e34260c380",
      "tree": "ce41b6e0fa10982a306f6c142a92dbf3c9961284",
      "parents": [
        "b492e95be0ae672922f4734acf3f5d35c30be948",
        "d515e86e639890b33a09390d062b0831664f04a2"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 21 21:27:26 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 21 21:27:26 2010 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-2.6.35\n\nConflicts:\n\tfs/ext3/fsync.c\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c472b43275976512e4c1c32da5ced03f339cb380",
      "tree": "9159fbfd1190456e8b3e699b856022c23f6ec10c",
      "parents": [
        "b9b2dd36c1bc64430f8e13990ab135cbecc10076"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu May 06 17:05:17 2010 -0400"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri May 21 19:30:44 2010 +0200"
      },
      "message": "quota: unify -\u003eset_dqblk\n\nPass the larger struct fs_disk_quota to the -\u003eset_dqblk operation so\nthat the Q_SETQUOTA and Q_XSETQUOTA operations can be implemented\nwith a single filesystem operation and we can retire the -\u003eset_xquota\noperation.  The additional information (RT-subvolume accounting and\nwarn counts) are left zero for the VFS quota implementation.\n\nAdd new fieldmask values for setting the numer of blocks and inodes\nvalues which is required for the VFS quota, but wasn\u0027t for XFS.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "b9b2dd36c1bc64430f8e13990ab135cbecc10076",
      "tree": "051bb6a238c9ff98fe135de3e8591c65cf242d46",
      "parents": [
        "0636c73ee7b129f77f577aaaefc8dde057be6d18"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Thu May 06 17:04:58 2010 -0400"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri May 21 19:30:43 2010 +0200"
      },
      "message": "quota: unify -\u003eget_dqblk\n\nPass the larger struct fs_disk_quota to the -\u003eget_dqblk operation so\nthat the Q_GETQUOTA and Q_XGETQUOTA operations can be implemented\nwith a single filesystem operation and we can retire the -\u003eget_xquota\noperation.  The additional information (RT-subvolume accounting and\nwarn counts) are left zero for the VFS quota implementation.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "b4ed4626a9775cd8cb77209280d24839526f94f2",
      "tree": "4269213c71d0e20d5c383c8a0947ce897cea8ac5",
      "parents": [
        "bd1556a146d46070049428dded306829cb65161d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:29:01 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:20 2010 -0500"
      },
      "message": "xfs: mark xfs_iomap_write_ helpers static\n\nAnd also drop a useless argument to xfs_iomap_write_direct.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "bd1556a146d46070049428dded306829cb65161d",
      "tree": "3ce3c35fb3359a83766a0442156cee692479037b",
      "parents": [
        "2b8f12b7e438fa6ba4a0f8f861871be0beb3a3e6"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:29:00 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:20 2010 -0500"
      },
      "message": "xfs: clean up end index calculation in xfs_page_state_convert\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "2b8f12b7e438fa6ba4a0f8f861871be0beb3a3e6",
      "tree": "8528d14896aef2e8718fd9edc4fc716d7815ae3f",
      "parents": [
        "558e6891693f4c383c51c7343a88dea174eadacf"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:59 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:19 2010 -0500"
      },
      "message": "xfs: clean up mapping size calculation in __xfs_get_blocks\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "558e6891693f4c383c51c7343a88dea174eadacf",
      "tree": "df7512d1f97fb4557d920d3ceb566dee256c1a7c",
      "parents": [
        "34a52c6c064fb9f1fd1310407ce076a4bb049734"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:58 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:19 2010 -0500"
      },
      "message": "xfs: clean up xfs_iomap_valid\n\nRename all iomap_valid identifiers to imap_valid to fit the new\nworld order, and clean up xfs_iomap_valid to convert the passed in\noffset to blocks instead of the imap values to bytes.  Use the\nsimpler inode-\u003ei_blkbits instead of the XFS macros for this.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "34a52c6c064fb9f1fd1310407ce076a4bb049734",
      "tree": "2b05a8d21f644ab733f7e242971bd0314c46b355",
      "parents": [
        "207d041602cead1c1a16288f6225aea9da1f5bc4"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:57 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:17 2010 -0500"
      },
      "message": "xfs: move I/O type flags into xfs_aops.c\n\nThe IOMAP_ flags are now only used inside xfs_aops.c for extent\nprobing and I/O completion tracking, so more them here, and rename\nthem to IO_* as there\u0027s no mapping involved at all.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "207d041602cead1c1a16288f6225aea9da1f5bc4",
      "tree": "ad6149735c8bc0c5d112e301e6e17dac6280dcb6",
      "parents": [
        "e513182d4d7ec8f1870ae368c549ef2838e2c105"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:56 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:17 2010 -0500"
      },
      "message": "xfs: kill struct xfs_iomap\n\nNow that struct xfs_iomap contains exactly the same units as struct\nxfs_bmbt_irec we can just use the latter directly in the aops code.\nReplace the missing IOMAP_NEW flag with a new boolean output\nparameter to xfs_iomap.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "e513182d4d7ec8f1870ae368c549ef2838e2c105",
      "tree": "1dc543b7f798c4826684bf2a0a5d83bd363f246f",
      "parents": [
        "8699bb0a480193e62d5ccb9c86e2c26b407090a8"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:55 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:17 2010 -0500"
      },
      "message": "xfs: report iomap_bn in block base\n\nReport the iomap_bn field of struct xfs_iomap in terms of filesystem\nblocks instead of in terms of bytes.  Shift the byte conversions\ninto the caller, and replace the IOMAP_DELAY and IOMAP_HOLE flag\nchecks with checks for HOLESTARTBLOCK and DELAYSTARTBLOCK.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "8699bb0a480193e62d5ccb9c86e2c26b407090a8",
      "tree": "aabcc9cd0800cf5c0d0605d46a104ed825f90db6",
      "parents": [
        "9563b3d8998c78d5b7e718b546d5f68037c494fe"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:54 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:17 2010 -0500"
      },
      "message": "xfs: report iomap_offset and iomap_bsize in block base\n\nReport the iomap_offset and iomap_bsize fields of struct xfs_iomap\nin terms of fsblocks instead of in terms of disk blocks.  Shift the\nbyte conversions into the callers temporarily, but they will\ndisappear or get cleaned up later.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "9563b3d8998c78d5b7e718b546d5f68037c494fe",
      "tree": "f614d05139491b129515443855e80eb0c562157b",
      "parents": [
        "046f1685bb5211c3dea74fda0198c19171e9abc9"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:53 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:17 2010 -0500"
      },
      "message": "xfs: remove iomap_delta\n\nThe iomap_delta field in struct xfs_iomap just contains the\ndifference between the offset passed to xfs_iomap and the\niomap_offset.  Just calculate it in the only caller that cares.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "046f1685bb5211c3dea74fda0198c19171e9abc9",
      "tree": "3d01a53802173f26cd0475c74344b598f855e8f2",
      "parents": [
        "826bf0adce0cddd9c94c2706b63d181dfc5cdaaa"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:52 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:16 2010 -0500"
      },
      "message": "xfs: remove iomap_target\n\nInstead of using the iomap_target field in struct xfs_iomap\nand the IOMAP_REALTIME flag just use the already existing\nxfs_find_bdev_for_inode helper.  There\u0027s some fallout as we\nneed to pass the inode in a few more places, which we also\nuse to sanitize some calling conventions.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "826bf0adce0cddd9c94c2706b63d181dfc5cdaaa",
      "tree": "7176db312e0090040e9798f2c7e6371bb78eedd7",
      "parents": [
        "4a5224d7b167e5470ad34e5b1b6965a16f87854f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:51 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:16 2010 -0500"
      },
      "message": "xfs: limit xfs_imap_to_bmap to a single mapping\n\nWe only call xfs_iomap for single mappings anyway, so remove all\ncode dealing with multiple mappings from xfs_imap_to_bmap and add\nasserts that we never get results that we do not expect.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "4a5224d7b167e5470ad34e5b1b6965a16f87854f",
      "tree": "e8bf743db2f294389e8bc1f36cd54179cbd63f1c",
      "parents": [
        "2d1ff3c75a4642062d314634290be6d8da4ffb03"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Apr 18 00:10:45 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:16 2010 -0500"
      },
      "message": "xfs: simplify buffer to transaction matching\n\nWe currenly have a routine xfs_trans_buf_item_match_all which checks\nif any log item in a transaction contains a given buffer, and a\nsecond one that only does this check for the first, embedded chunk\nof log items.  We only use the second routine if we know we only\nhave that log item chunk, so get rid of the limited routine and\nalways use the more complete one.\n\nAlso rename the old xfs_trans_buf_item_match_all to\nxfs_trans_buf_item_match and update various surrounding comments,\nand move the remaining xfs_trans_buf_item_match on top of the file\nto avoid a forward prototype.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "2d1ff3c75a4642062d314634290be6d8da4ffb03",
      "tree": "1112feee61ad0c7653c6877d04397b4949c46471",
      "parents": [
        "48389ef17583f2214bbd2c119b3015677419c16b"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Apr 29 15:13:56 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:16 2010 -0500"
      },
      "message": "xfs: Make fiemap work in query mode.\n\nAccording to Documentation/filesystems/fiemap.txt, If fm_extent_count\nis zero, then the fm_extents[] array is ignored (no extents will be\nreturned), and the fm_mapped_extents count will hold the number of\nextents needed.\n\nBut as the commit 97db39a1f6f69e906e98118392400de5217aa33a has changed\nbmv_count to the caller\u0027s input buffer, this number query function can\u0027t\nwork any more. As this commit is written to change bmv_count from\nMAXEXTNUM because of ENOMEM.\n\nThis patch just try to  set bm.bmv_count to something sane.\nThanks to Dave Chinner \u003cdavid@fromorbit.com\u003e for the suggestion.\n\nCc: Eric Sandeen \u003csandeen@redhat.com\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "48389ef17583f2214bbd2c119b3015677419c16b",
      "tree": "ff6b8e0cf45cb4e32e77a6ae0a9fa18c845a5ca3",
      "parents": [
        "69ce58f08a3c455ff74cfcde90e9ab267d67f636"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 20 17:10:21 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:16 2010 -0500"
      },
      "message": "xfs: kill off l_sectbb_mask\n\nThere remains only one user of the l_sectbb_mask field in the log\nstructure.  Just kill it off and compute the mask where needed from\nthe power-of-2 sector size.\n\n(Only update from last post is to accomodate the changes in the\nprevious patch in the series.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n\n"
    },
    {
      "commit": "69ce58f08a3c455ff74cfcde90e9ab267d67f636",
      "tree": "0a5a8be3222d8138f382b492b96888c61041dd76",
      "parents": [
        "1414a6046ab402ac21545522270c32c576327eb9"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 20 17:09:59 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:15 2010 -0500"
      },
      "message": "xfs: record log sector size rather than log2(that)\n\nChange struct log so it keeps track of the size (in basic blocks) of\na log sector in l_sectBBsize rather than the log-base-2 of that\nvalue (previously, l_sectbb_log).  The name was chosen for\nconsistency with the other fields in the structure that represent\na number of basic blocks.\n\n(Updated so that a variable used in computing and verifying a log\u0027s\nsector size is named \"log2_size\".  Also added the \"BB\" to the\nstructure field name, based on feedback from Eric Sandeen.  Also\ndropped some superfluous parentheses.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "1414a6046ab402ac21545522270c32c576327eb9",
      "tree": "2e1364e818bef8a05cb442503e4224b7c7a9d6a4",
      "parents": [
        "8112e9dc6d1494078122146647981bc02a452d6a"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Apr 20 17:02:50 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:15 2010 -0500"
      },
      "message": "xfs: remove dead XFS_LOUD_RECOVERY code\n\nThis can\u0027t be enabled through the build system and has been dead for\nages.  Note that the CRC patches add back log checksumming, but the\ncode is quite different from the version removed here anyway.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n\n"
    },
    {
      "commit": "8112e9dc6d1494078122146647981bc02a452d6a",
      "tree": "7b1822bcb4ab62b6b7f12b2447a550dae2366c5f",
      "parents": [
        "191f8488f9f7600a96e1500ee2ee74a407e2eb1c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Apr 20 17:02:29 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:15 2010 -0500"
      },
      "message": "xfs: removed unused XFS_QMOPT_ flags\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n\n"
    },
    {
      "commit": "191f8488f9f7600a96e1500ee2ee74a407e2eb1c",
      "tree": "23dbc84d31563e64ff60d99a2974727ca3bf8e42",
      "parents": [
        "8a7b8a89a3ae5b510396cdcc821698d4aa20afcf"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Apr 20 17:01:53 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:15 2010 -0500"
      },
      "message": "xfs: remove a few macro indirections in the quota code\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n\n"
    },
    {
      "commit": "8a7b8a89a3ae5b510396cdcc821698d4aa20afcf",
      "tree": "c64b285dfc53091a258319c82571431c25b85921",
      "parents": [
        "37bc5743fdc29f60fb104cd9031babbabddff25a"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Apr 20 17:01:30 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:14 2010 -0500"
      },
      "message": "xfs: access quotainfo structure directly\n\nAccess fields in m_quotainfo directly instead of hiding them behind the\nXFS_QI_* macros.  Add local variables for the quotainfo pointer in places\nwhere we have lots of them.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n\n"
    },
    {
      "commit": "37bc5743fdc29f60fb104cd9031babbabddff25a",
      "tree": "abbcde46a9741a40a0ced8d1f289f6af65725d15",
      "parents": [
        "fce1cad651e3cf2779ed8f9e6608daf50d29daaf"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Apr 20 17:00:59 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:14 2010 -0500"
      },
      "message": "xfs: wait for direct I/O to complete in fsync and write_inode\n\nWe need to wait for all pending direct I/O requests before taking care of\nmetadata in fsync and write_inode.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n\n"
    },
    {
      "commit": "fce1cad651e3cf2779ed8f9e6608daf50d29daaf",
      "tree": "cbd2eba102e09c48a1f7795ba95f2fbd287d9b2e",
      "parents": [
        "3f943d853d6ce6d808e7362e4444c7ed5f692357"
      ],
      "author": {
        "name": "Andrea Gelmini",
        "email": "andrea.gelmini@gelma.net",
        "time": "Thu Mar 25 17:22:41 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:14 2010 -0500"
      },
      "message": "xfs: xfs_trace.c: duplicated include\n\nfs/xfs/linux-2.6/xfs_trace.c: xfs_attr_sf.h is included more than once.\n\nSigned-off-by: Andrea Gelmini \u003candrea.gelmini@gelma.net\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "3f943d853d6ce6d808e7362e4444c7ed5f692357",
      "tree": "78ade96089353117fbcacd2a2e7297af9e652115",
      "parents": [
        "e3bb2e30d532b00a9bdda997e174a9f9916cb1c0"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Apr 15 18:17:34 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:14 2010 -0500"
      },
      "message": "xfs: minor odds and ends in xfs_log_recover.c\n\nOdds and ends in \"xfs_log_recover.c\".  This patch just contains some\nminor things that didn\u0027t seem to warrant their own individual\npatches:\n- In xlog_bread_noalign(), drop an assertion that a pointer is\n  non-null (the crash will tell us it was a bad pointer).\n- Add a more descriptive header comment for xlog_find_verify_cycle().\n- Make a few additions to the comments in xlog_find_head().  Also\n  rearrange some expressions in a few spots to produce the same\n  result, but in a way that seems more clear what\u0027s being computed.\n\n(Updated in response to Dave\u0027s review comments.  Note I did not\nsplit this patch like I said I would.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "e3bb2e30d532b00a9bdda997e174a9f9916cb1c0",
      "tree": "33d82124eb213877450072f6fa1df6dbf05be7bf",
      "parents": [
        "9db127edb54048707eb84517eb0573e597a2370a"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Apr 15 18:17:30 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:14 2010 -0500"
      },
      "message": "xfs: avoid repeated pointer dereferences\n\nIn xlog_find_cycle_start() use a local variable for some repeated\noperations rather than constantly accessing the memory location\nwhose address is passed in.\n\n(This version drops an assertion that a pointer is non-null.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "9db127edb54048707eb84517eb0573e597a2370a",
      "tree": "b8c9a1a0646305cd87fe41001460fbc7bbdf7706",
      "parents": [
        "8c38366f99f83a7fa441e0c0669fefc18615e005"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Apr 15 18:17:26 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:13 2010 -0500"
      },
      "message": "xfs: change a few labels in xfs_log_recover.c\n\nRename a label used in xlog_find_head() that I thought was poorly\nchosen.  Also combine two adjacent labels xlog_find_tail() into a\nsingle label, and give it a more generic name.\n\n(Now using Dave\u0027s suggested \"validate_head\" name for first label.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "8c38366f99f83a7fa441e0c0669fefc18615e005",
      "tree": "05789fdea7c34b1b6f29151b6a13bd49f3c6fec9",
      "parents": [
        "df308bcfec27e0c6bc83715dfd417caff5c33f19"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Mar 12 10:59:40 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:13 2010 -0500"
      },
      "message": "xfs: enforce synchronous writes in xfs_bwrite\n\nxfs_bwrite is used with the intention of synchronously writing out\nbuffers, but currently it does not actually clear the async flag if\nthat\u0027s left from previous writes but instead implements async\nbehaviour if it finds it.  Remove the code handling asynchronous\nwrites as we\u0027ve got rid of those entirely outside of the log and\ndelwri buffers, and make sure that we clear the async and read flags\nbefore writing the buffer.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "df308bcfec27e0c6bc83715dfd417caff5c33f19",
      "tree": "558d5b910a4de3cbb36b44eeca1e1f619f2cddf3",
      "parents": [
        "f983710758218c7aad4aae3e40a7312a21d6f55a"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Mar 12 10:59:16 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:13 2010 -0500"
      },
      "message": "xfs: remove periodic superblock writeback\n\nAll modifications to the superblock are done transactional through\nxfs_trans_log_buf, so there is no reason to initiate periodic\nasynchronous writeback.  This only removes the superblock from the\ndelwri list and will lead to sub-optimal I/O scheduling.\n\nCut down xfs_sync_fsdata now that it\u0027s only used for synchronous\nsuperblock writes and move the log coverage checks into the two\ncallers.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "f983710758218c7aad4aae3e40a7312a21d6f55a",
      "tree": "c4647b60e06338c730ebaf0d65ed696cce5e1e68",
      "parents": [
        "36adecff50b69df0369cc2022650c6087aeb255f"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Apr 14 15:47:55 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:13 2010 -0500"
      },
      "message": "xfs: make the log ticket transaction id random\n\nThe transaction ID that is written to the log for a transaction is\ncurrently set by taking the lower 32 bits of the memory address of\nthe ticket structure.  This is not guaranteed to be unique as\ntickets comes from a slab and slots can be reallocated immediately\nafter being freed. As a result, there is no guarantee of uniqueness\nin the ticket ID value.\n\nFix this by assigning a random number to the ticket ID field so that\nit is extremely unlikely that duplicates will occur and remove the\npossibility of transactions being mixed up during recovery due to\nduplicate IDs.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n\n"
    },
    {
      "commit": "36adecff50b69df0369cc2022650c6087aeb255f",
      "tree": "88341430b367a7b106c8eddcaaa90f1ffd2812db",
      "parents": [
        "ff30a6221d95b609a37410a425937b11a55d465e"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 13 15:21:13 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:12 2010 -0500"
      },
      "message": "xfs: nothing special about 1-block log sector\n\nThere are a number of places where a log sector size of 1 uses\nspecial case code.  The round_up() and round_down() macros\nproduce the correct result even when the log sector size is 1, and\nthis eliminates the need for treating this as a special case.\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n\n"
    },
    {
      "commit": "ff30a6221d95b609a37410a425937b11a55d465e",
      "tree": "548b8949adc08b8d96c73953f28b3ba7fc2afe31",
      "parents": [
        "5c17f5339f9dfdee8ad9661e97f8030d75b6bff7"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 13 15:22:58 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:12 2010 -0500"
      },
      "message": "xfs: encapsulate bbcount validity checking\n\nDefine a function that encapsulates checking the validity of a log\nblock count.\n\n(Updated from previous version--no longer includes error reporting in the\nencapsulated validation function.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n"
    },
    {
      "commit": "5c17f5339f9dfdee8ad9661e97f8030d75b6bff7",
      "tree": "27a32181d8c185a12c81af30f2a1bb1b93efbabc",
      "parents": [
        "8511998baaf541710f457315958cef0d0a7864a1"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 13 15:22:48 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:12 2010 -0500"
      },
      "message": "xfs: kill XLOG_SECTOR_ROUND*()\n\nXLOG_SECTOR_ROUNDUP_BBCOUNT() and XLOG_SECTOR_ROUNDDOWN_BLKNO()\nare now fairly simple macro translations.  Just get rid of them in\nfavor of the round_up() and round_down() macro calls they represent.\n\nAlso, in spots in xlog_get_bp() and xlog_write_log_records(),\nround_up() was being called with value 1, which just evaluates\nto the macro\u0027s second argument; so just use that instead.\nIn the latter case, make use of that value, as long as it\u0027s\nalready been computed.\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "8511998baaf541710f457315958cef0d0a7864a1",
      "tree": "b7ac320a8e0d7b150bb1a72055f1e08d9a7aef39",
      "parents": [
        "6881a229f66f74e4e0a73504389695213987955b"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 13 15:22:40 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:12 2010 -0500"
      },
      "message": "xfs: simplify XLOG_SECTOR_ROUND*()\n\nXLOG_SECTOR_ROUNDUP_BBCOUNT() is defined in \"fs/xfs/xfs_log_recover.c\"\nin an overly-complicated way.  It is basically roundup(), but that\nis not at all clear from its definition.  (Actually, there is\nanother macro round_up() that applies for power-of-two-based masks\nwhich I\u0027ll be using here.)\n\nThe operands in XLOG_SECTOR_ROUNDUP_BBCOUNT() are basically the\nblock number (bbs) and the log sector basic block mask\n(log-\u003el_sectbb_mask).  I\u0027ll call them B and M for this discussion.\n\nThe macro computes is value this way:\n\tM \u0026\u0026 (B \u0026 M) ? (B + M + 1) \u0026 ~M : B\n\nPut another way, we can break it into 3 cases:\n\t1)  ! M          -\u003e B\t\t\t# 0 mask, no effect\n\t2)  ! (B \u0026 M)    -\u003e B\t\t\t# sector aligned\n\t3)  M \u0026\u0026 (B \u0026 M) -\u003e (B + M + 1) \u0026 ~M\t# round up otherwise\n\nThe round_up() macro is cleverly defined using a value, v, and a\npower-of-2, p, and the result is the nearest multiple of p greater\nthan or equal to v.  Its value is computed something like this:\n\t((v - 1) | (p - 1)) + 1\nLet\u0027s consider using this in the context of the 3 cases above.\n\nWhen p \u003d 2^0 \u003d 1, the result boils down to ((v - 1) | 0) + 1, so it\njust translates any value v to itself.  That handles case (1) above.\n\nWhen p \u003d 2^n, n \u003e 0, we know that (p - 1) will be a mask with all n\nbits 0..n-1 set.  The condition in this case occurs when none of\nthose mask bits is set in the value v provided.  If that is the\ncase, subtracting 1 from v will have 1\u0027s in all those lower bits (at\nleast).  Therefore, OR-ing the mask with that decremented value has\nno effect, so adding the 1 back again will just translate the v to\nitself.  This handles case (2).\n\nOtherwise, the value v is greater than some multiple of p, and\ndecrementing it will produce a result greater than or equal to that\nmultiple.  OR-ing in the mask will produce a value 1 less than the\nnext multiple of p, so finally adding 1 back will result in the\ndesired rounded-up value.  This handles case (3).\n\nHopefully this is convincing.\n\nWhile I was at it, I converted XLOG_SECTOR_ROUNDDOWN_BLKNO() to use\nthe round_down() macro.\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "6881a229f66f74e4e0a73504389695213987955b",
      "tree": "8faf52f576ab7bfc49712cfd98c49d23a596a98b",
      "parents": [
        "a0e856b0b4d182c4c52b568bd04bd96a172247a7"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 13 15:22:29 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:12 2010 -0500"
      },
      "message": "xfs: fix min bufsize bugs in two places\n\nThis fixes a bug in two places that I found by inspection.  In\nxlog_find_verify_cycle() and xlog_write_log_records(), the code\nattempts to allocate a buffer to hold as many blocks as possible.\nIt gives up if the number of blocks to be allocated gets too small.\nRight now it uses log-\u003el_sectbb_log as that lower bound, but I\u0027m\nsure it\u0027s supposed to be the actual log sector size instead.  That\nis, the lower bound should be (1 \u003c\u003c log-\u003el_sectbb_log).\n\nAlso define a simple macro xlog_sectbb(log) to represent the number\nof basic blocks in a sector for the given log.\n\n(No change from original submission; I have implemented Christoph\u0027s\nsuggestion about storing l_sectsize rather than l_sectbb_log in\na new, separate patch in this series.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "a0e856b0b4d182c4c52b568bd04bd96a172247a7",
      "tree": "ae8c3d988dc84d42dc69a045bc16566a25377c82",
      "parents": [
        "74457cf4a3e0f0634679aa6c22d967e9e8b26479"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 13 15:22:08 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:11 2010 -0500"
      },
      "message": "xfs: add const qualifiers to xfs error function args\n\nChange the tag and file name arguments to xfs_error_report() and\nxfs_corruption_error() to use a const qualifier.\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "74457cf4a3e0f0634679aa6c22d967e9e8b26479",
      "tree": "3603ed6ff918ce43087ce76d60604698e1b08d51",
      "parents": [
        "3a8406f6d6916e8211936edb9e1193123df2daab"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Apr 13 15:06:53 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:11 2010 -0500"
      },
      "message": "xfs: remove xfs_dqmarker\n\nThe xfs_dqmarker structure does not need to exist anymore. Move the\nremaining flags field out of it and remove the structure altogether.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n"
    },
    {
      "commit": "3a8406f6d6916e8211936edb9e1193123df2daab",
      "tree": "53f490a433ef3bd2f430ef19cdfbbe5dc514e89d",
      "parents": [
        "e6a81f13aa9aa20ef03174210aed24791865b05e"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 13 15:06:52 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:11 2010 -0500"
      },
      "message": "xfs: convert the dquot free list to use list heads\n\nConvert the dquot free list on the filesystem to use listhead\ninfrastructure rather than the roll-your-own in the quota code.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n\n"
    },
    {
      "commit": "e6a81f13aa9aa20ef03174210aed24791865b05e",
      "tree": "727202721a225004e2522f32278de294c3748e70",
      "parents": [
        "368e136174344c417bad6ff0380b7b3f574bf120"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 13 15:06:51 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:11 2010 -0500"
      },
      "message": "xfs: convert the dquot hash list to use list heads\n\nConvert the dquot hash list on the filesystem to use listhead\ninfrastructure rather than the roll-your-own in the quota code.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "368e136174344c417bad6ff0380b7b3f574bf120",
      "tree": "1718f3e35b42adbaabf5a65062f2d3f5ecf1ac43",
      "parents": [
        "3a25404b3fccd41d36b2fda18d86011201608c38"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 13 15:06:50 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:11 2010 -0500"
      },
      "message": "xfs: remove duplicate code from dquot reclaim\n\nThe dquot shaker and the free-list reclaim code use exactly the same\nalgorithm but the code is duplicated and slightly different in each\ncase. Make the shaker code use the single dquot reclaim code to\nremove the code duplication.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "3a25404b3fccd41d36b2fda18d86011201608c38",
      "tree": "28979d8581760327c16a3389a2eb8752ed3f0665",
      "parents": [
        "9abbc539bf7f299819ad0a235064a1b643ab6407"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 13 15:06:48 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:10 2010 -0500"
      },
      "message": "xfs: convert the per-mount dquot list to use list heads\n\nConvert the dquot list on the filesytesm to use listhead\ninfrastructure rather than the roll-your-own in the quota code.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "9abbc539bf7f299819ad0a235064a1b643ab6407",
      "tree": "0c15d4f4933bce3a1a1db19509f4993ce2e46286",
      "parents": [
        "e6b1f27370fc67ac9868b2dbe2c22bc26952900e"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 13 15:06:46 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:10 2010 -0500"
      },
      "message": "xfs: add log item recovery tracing\n\nCurrently there is no tracing in log recovery, so it is difficult to\ndetermine what is going on when something goes wrong.\n\nAdd tracing for log item recovery to provide visibility into the log\nrecovery process. The tracing added shows regions being extracted\nfrom the log transactions and added to the transaction hash forming\nrecovery items, followed by the reordering, cancelling and finally\nrecovery of the items.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "e6b1f27370fc67ac9868b2dbe2c22bc26952900e",
      "tree": "69485365ff6b9f22a56bcfc4814b27b45622d6e9",
      "parents": [
        "55b66332d0921146a914d5d75a7b870a65dc4938"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Mar 23 11:47:38 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:10 2010 -0500"
      },
      "message": "xfs: clean up xlog_write_adv_cnt\n\nReplace the awkward xlog_write_adv_cnt with an inline helper that makes\nit more obvious that it\u0027s modifying it\u0027s paramters, and replace the use\nof an integer type for \"ptr\" with a real void pointer.  Also move\nxlog_write_adv_cnt to xfs_log_priv.h as it will be used outside of\nxfs_log.c in the delayed logging series.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "55b66332d0921146a914d5d75a7b870a65dc4938",
      "tree": "254f130969b118cc777371691e892db20e96b5a6",
      "parents": [
        "99428ad0f665a5d5b245ab36cefb6b231d977e73"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 23 11:43:17 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:10 2010 -0500"
      },
      "message": "xfs: introduce new internal log vector structure\n\nThe current log IO vector structure is a flat array and not\nextensible. To make it possible to keep separate log IO vectors for\nindividual log items, we need a method of chaining log IO vectors\ntogether.\n\nIntroduce a new log vector type that can be used to wrap the\nexisting log IO vectors on use that internally to the log. This\nmeans that the existing external interface (xfs_log_write) does not\nchange and hence no changes to the transaction commit code are\nrequired.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "99428ad0f665a5d5b245ab36cefb6b231d977e73",
      "tree": "3a6f9f59428f3134f7127b6543970c45baa5faab",
      "parents": [
        "b5203cd0a43c17dfb9d498bc9e3146624e8c9622"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Mar 23 11:35:45 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:10 2010 -0500"
      },
      "message": "xfs: reindent xlog_write\n\nReindent xlog_write to normal one tab indents and move all variable\ndeclarations into the closest enclosing block.\n\nSplit from a bigger patch by Dave Chinner.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "b5203cd0a43c17dfb9d498bc9e3146624e8c9622",
      "tree": "ce779712f4419aa238e0bf3a919ecc4010953fea",
      "parents": [
        "9b9fc2b7602ed671d1a8524d4c31302b89554947"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 23 11:29:44 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:09 2010 -0500"
      },
      "message": "xfs: factor xlog_write\n\nxlog_write is a mess that takes a lot of effort to understand. It is\na mass of nested loops with 4 space indents to get it to fit in 80 columns\nand lots of funky variables that aren\u0027t obvious what they mean or do.\n\nBreak it down into understandable chunks.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "9b9fc2b7602ed671d1a8524d4c31302b89554947",
      "tree": "866a68bb120cf08a09e573fe013ba0e121a2224b",
      "parents": [
        "b1c1b5b6108ad8e5991a614514f41da436c659d6"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 23 11:21:11 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:09 2010 -0500"
      },
      "message": "xfs: log ticket reservation underestimates the number of iclogs\n\nWhen allocation a ticket for a transaction, the ticket is initialised with the\nworst case log space usage based on the number of bytes the transaction may\nconsume. Part of this calculation is the number of log headers required for the\niclog space used up by the transaction.\n\nThis calculation makes an undocumented assumption that if the transaction uses\nthe log header space reservation on an iclog, then it consumes either the\nentire iclog or it completes. That is - the transaction that is first in an\niclog is the transaction that the log header reservation is accounted to. If\nthe transaction is larger than the iclog, then it will use the entire iclog\nitself. Document this assumption.\n\nFurther, the current calculation uses the rule that we can fit iclog_size bytes\nof transaction data into an iclog. This is in correct - the amount of space\navailable in an iclog for transaction data is the size of the iclog minus the\nspace used for log record headers. This means that the calculation is out by\n512 bytes per 32k of log space the transaction can consume. This is rarely an\nissue because maximally sized transactions are extremely uncommon, and for 4k\nblock size filesystems maximal transaction reservations are about 400kb. Hence\nthe error in this case is less than the size of an iclog, so that makes it even\nharder to hit.\n\nHowever, anyone using larger directory blocks (16k directory blocks push the\nmaximum transaction size to approx. 900k on a 4k block size filesystem) or\nlarger block size (e.g. 64k blocks push transactions to the 3-4MB size) could\nsee the error grow to more than an iclog and at this point the transaction is\nguaranteed to get a reservation underrun and shutdown the filesystem.\n\nFix this by adjusting the calculation to calculate the correct number of iclogs\nrequired and account for them all up front.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "b1c1b5b6108ad8e5991a614514f41da436c659d6",
      "tree": "fea56bd29b112eb18985c22745d99063ed19cd0e",
      "parents": [
        "8e646a55ac69fe620b9e84034c03dd1e8e16a36b"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 23 10:11:05 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:09 2010 -0500"
      },
      "message": "xfs: Clean up xfs_trans_committed code after factoring\n\nNow that the code has been factored, clean up all the remaining\nstyle cruft, simplify the code and re-order functions so that it\ndoesn\u0027t need forward declarations.\n\nAlso move the remaining functions that require forward declarations\n(xfs_trans_uncommit, xfs_trans_free) so that all the forward\ndeclarations can be removed from the file.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "8e646a55ac69fe620b9e84034c03dd1e8e16a36b",
      "tree": "b1bd02109c34888cf8e75f2569fc574858d03169",
      "parents": [
        "a3ccd2ca43d5cdfe0b256be02957dc5f47ec4c39"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 08 15:06:22 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:09 2010 -0500"
      },
      "message": "xfs: update and factor xfs_trans_committed()\n\nThe function header to xfs-trans_committed has long had this\ncomment:\n\n * THIS SHOULD BE REWRITTEN TO USE xfs_trans_next_item()\n\nTo prepare for different methods of committing items, convert the\ncode to use xfs_trans_next_item() and factor the code into smaller,\nmore digestible chunks.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "a3ccd2ca43d5cdfe0b256be02957dc5f47ec4c39",
      "tree": "08b6a0b911c5f1ba45ce9e61754f1db8331a0f72",
      "parents": [
        "0924378a689ccb05f6d60875742dc28f69bf0129"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Mar 15 12:52:49 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:08 2010 -0500"
      },
      "message": "xfs: clean up xfs_trans_commit logic even more\n\n\u003e +shut_us_down:\n\u003e +\tshutdown \u003d XFS_FORCED_SHUTDOWN(mp) ? EIO : 0;\n\u003e +\tif (!(tp-\u003et_flags \u0026 XFS_TRANS_DIRTY) || shutdown) {\n\u003e +\t\txfs_trans_unreserve_and_mod_sb(tp);\n\u003e +\t\t/*\n\nThis whole area in _xfs_trans_commit is still a complete mess.\n\nSo while touching this code, unravel this mess as well to make the\nwhole flow of the function simpler and clearer.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n"
    },
    {
      "commit": "0924378a689ccb05f6d60875742dc28f69bf0129",
      "tree": "8d6933bff18ac9f4670395673e38dad94fedd998",
      "parents": [
        "713bf88bba55b8dd91a18e8a59b0f97bf9b0f5de"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 08 11:28:28 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:08 2010 -0500"
      },
      "message": "xfs: split out iclog writing from xfs_trans_commit()\n\nSplit the the part of xfs_trans_commit() that deals with writing the\ntransaction into the iclog into a separate function. This isolates the\nphysical commit process from the logical commit operation and makes\nit easier to insert different transaction commit paths without affecting\nthe existing algorithm adversely.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "713bf88bba55b8dd91a18e8a59b0f97bf9b0f5de",
      "tree": "8f309ced7d77f10408bc4224e490cca475c4f948",
      "parents": [
        "8e123850863366b738d6dfb9a84045018ff038fc"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 08 11:26:23 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:08 2010 -0500"
      },
      "message": "xfs: fix reservation release commit flag in xfs_bmap_add_attrfork()\n\nxfs_bmap_add_attrfork() passes XFS_TRANS_PERM_LOG_RES to xfs_trans_commit()\nto indicate that the commit should release the permanent log reservation\nas part of the commit. This is wrong - the correct flag is\nXFS_TRANS_RELEASE_LOG_RES - and it is only by the chance that both these\nflags have the value of 0x4 that the code is doing the right thing.\n\nFix it by changing to use the correct flag.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "8e123850863366b738d6dfb9a84045018ff038fc",
      "tree": "ffa0185553c55d235b920e5ff384310be33034c6",
      "parents": [
        "4aaf15d1aa9673dd2cc45c48957c946cb4aa2694"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 08 11:26:03 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:08 2010 -0500"
      },
      "message": "xfs: remove stale parameter from -\u003eiop_unpin method\n\nThe staleness of a object being unpinned can be directly derived\nfrom the object itself - there is no need to extract it from the\nobject then pass it as a parameter into IOP_UNPIN().\n\nThis means we can kill the XFS_LID_BUF_STALE flag - it is set,\nchecked and cleared in the same places XFS_BLI_STALE flag in the\nxfs_buf_log_item so it is now redundant and hence safe to remove.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "4aaf15d1aa9673dd2cc45c48957c946cb4aa2694",
      "tree": "aec24df27ca9cde2d359b77f9ac97f8ad44a1baa",
      "parents": [
        "43f5efc5b59db1b66e39fe9fdfc4ba6a27152afa"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 08 11:24:07 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:08 2010 -0500"
      },
      "message": "xfs: Add inode pin counts to traces\n\nWe don\u0027t record pin counts in inode events right now, and this makes\nit difficult to track down problems related to pinning inodes. Add\nthe pin count to the inode trace class and add trace events for\npinning and unpinning inodes.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "43f5efc5b59db1b66e39fe9fdfc4ba6a27152afa",
      "tree": "100e2b49e622e6933d8f88e052076e23bd943ae1",
      "parents": [
        "e2a07812e93d4a51b1b1a6f15145a1634948db47"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 23 10:10:00 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:07 2010 -0500"
      },
      "message": "xfs: factor log item initialisation\n\nEach log item type does manual initialisation of the log item.\nDelayed logging introduces new fields that need initialisation, so\nfactor all the open coded initialisation into a common function\nfirst.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "e2a07812e93d4a51b1b1a6f15145a1634948db47",
      "tree": "2d13997492891384df9cbbd472296f2cb17f18d7",
      "parents": [
        "fda168c24586ab8e01b0eb68028d78fe3e4fb71a"
      ],
      "author": {
        "name": "Jan Engelhardt",
        "email": "jengelh@medozas.de",
        "time": "Tue Mar 23 09:52:55 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:07 2010 -0500"
      },
      "message": "xfs: add blockdev name to kthreads\n\nThis allows to see in `ps` and similar tools which kthreads are\nallotted to which block device/filesystem, similar to what jbd2\ndoes. As the process name is a fixed 16-char array, no extra\nspace is needed in tasks.\n\n  PID TTY      STAT   TIME COMMAND\n    2 ?        S      0:00 [kthreadd]\n  197 ?        S      0:00  \\_ [jbd2/sda2-8]\n  198 ?        S      0:00  \\_ [ext4-dio-unwrit]\n  204 ?        S      0:00  \\_ [flush-8:0]\n 2647 ?        S      0:00  \\_ [xfs_mru_cache]\n 2648 ?        S      0:00  \\_ [xfslogd/0]\n 2649 ?        S      0:00  \\_ [xfsdatad/0]\n 2650 ?        S      0:00  \\_ [xfsconvertd/0]\n 2651 ?        S      0:00  \\_ [xfsbufd/ram0]\n 2652 ?        S      0:00  \\_ [xfsaild/ram0]\n 2653 ?        S      0:00  \\_ [xfssyncd/ram0]\n\nSigned-off-by: Jan Engelhardt \u003cjengelh@medozas.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n"
    },
    {
      "commit": "fda168c24586ab8e01b0eb68028d78fe3e4fb71a",
      "tree": "015ac765550296cac1bc9b3eee833d99630a83fa",
      "parents": [
        "e40152ee1e1c7a63f4777791863215e3faa37a86"
      ],
      "author": {
        "name": "Zhitong Wang",
        "email": "zhitong.wangzt@alibaba-inc.com",
        "time": "Tue Mar 23 09:51:22 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:07 2010 -0500"
      },
      "message": "xfs: Fix integer overflow in fs/xfs/linux-2.6/xfs_ioctl*.c\n\nThe am_hreq.opcount field in the xfs_attrmulti_by_handle() interface\nis not bounded correctly. The opcount is used to determine the size\nof the buffer required. The size is bounded, but can overflow and so\nthe size checks may not be sufficient to catch invalid opcounts.\nFix it by catching opcount values that would cause overflows before\ncalculating the size.\n\nSigned-off-by: Zhitong Wang \u003czhitong.wangzt@alibaba-inc.com\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n"
    },
    {
      "commit": "9bf729c0af67897ea8498ce17c29b0683f7f2028",
      "tree": "9e6350fd9da5aef0b53ddeddd82f618ae16bf931",
      "parents": [
        "79dba2eaa771c3173957eccfd288e0e0d12e4d3f"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Thu Apr 29 09:55:50 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Apr 29 16:22:13 2010 -0500"
      },
      "message": "xfs: add a shrinker to background inode reclaim\n\nOn low memory boxes or those with highmem, kernel can OOM before the\nbackground reclaims inodes via xfssyncd. Add a shrinker to run inode\nreclaim so that it inode reclaim is expedited when memory is low.\n\nThis is more complex than it needs to be because the VM folk don\u0027t\nwant a context added to the shrinker infrastructure. Hence we need\nto add a global list of XFS mount structures so the shrinker can\ntraverse them.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "7407cf355fdf5500430be966dbbde84a27293bad",
      "tree": "922861288ff38558ed721a79653f52b17b13bb95",
      "parents": [
        "6a47dc1418682c83d603b491df1d048f73aa973e",
        "79dba2eaa771c3173957eccfd288e0e0d12e4d3f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 29 09:36:24 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 29 09:36:24 2010 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-2.6.35\n\nConflicts:\n\tfs/block_dev.c\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "fbd9b09a177a481eda256447c881f014f29034fe",
      "tree": "ef7e213045382f82a1e3e3cf134d196a1045dd7a",
      "parents": [
        "6b4517a7913a09d3259bb1d21c9cb300f12294bd"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Wed Apr 28 17:55:06 2010 +0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 28 19:47:36 2010 +0200"
      },
      "message": "blkdev: generalize flags for blkdev_issue_fn functions\n\nThe patch just convert all blkdev_issue_xxx function to common\nset of flags. Wait/allocation semantics preserved.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "dd77ef924c835c9813c3f4dc7e9c72e9cd88d238",
      "tree": "bf914944fceab37ca446ded983a00e422c318f5b",
      "parents": [
        "b91ce4d14a21fc04d165be30319541e0f9204f15"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 20 17:00:37 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Apr 26 12:38:51 2010 -0500"
      },
      "message": "xfs: more swap extent fixes for dynamic fork offsets\n\nA new xfsqa test (226) with a prototype xfs_fsr change to try to\nhandle dynamic fork offsets better triggers an assertion failure\nwhere the inode data fork is in btree format, yet there is room in\nthe inode for it to be in extent format. The two inodes look like:\n\nbefore: ino 0x101 (target), num_extents 11, Max in-fork extents 6, broot size 40, fork offset 96\nbefore: ino 0x115 (temp),  num_extents 5, Max in-fork extents 3, broot size 40, fork offset 56\nafter: ino 0x101 (target), num_extents 5, Max in-fork extents 6, broot size 40, fork offset 96\nafter: ino 0x115 (temp), num_extents 11, Max in-fork extents 3, broot size 40, fork offset 56\n\nBasically the target inode ends up with 5 extents in btree format,\nbut it had space for 6 extents in extent format, so ends up\nincorrect. Notably here the broot size is the same, and that is\nwhere the kernel code is going wrong - the btree root will fit, so\nit lets the swap go ahead.\n\nThe check should not allow the swap to take place if the number of\nextents while in btree format is less than the number of extents\nthat can fit in the inode in extent format. Adding that check will\nprevent this swap and corruption from occurring.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "f1d486a3617a2f620b31224e4ace1496c4627e39",
      "tree": "82eae8ca41e529690c2b71d712e886161e786e6b",
      "parents": [
        "b6f8dd49dbdbfa60a33bba3d4b766fe341109b4b"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 13 15:06:45 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Apr 16 13:51:44 2010 -0500"
      },
      "message": "xfs: don\u0027t warn on EAGAIN in inode reclaim\n\nAny inode reclaim flush that returns EAGAIN will result in the inode\nreclaim being attempted again later. There is no need to issue a\nwarning into the logs about this situation.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Alex Elder \u003caelder@sgi.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "b6f8dd49dbdbfa60a33bba3d4b766fe341109b4b",
      "tree": "75e492661ba039ce6a2d36277cccc41a27205384",
      "parents": [
        "dc57da3875f527b1cc195ea4ce5bd32e1e68433d"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 13 15:06:44 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Apr 16 13:51:23 2010 -0500"
      },
      "message": "xfs: ensure that sync updates the log tail correctly\n\nUpdates to the VFS layer removed an extra -\u003esync_fs call into the\nfilesystem during the sync process (from the quota code).\nUnfortunately the sync code was unknowingly relying on this call to\nmake sure metadata buffers were flushed via a xfs_buftarg_flush()\ncall to move the tail of the log forward in memory before the final\ntransactions of the sync process were issued.\n\nAs a result, the old code would write a very recent log tail value\nto the log by the end of the sync process, and so a subsequent crash\nwould leave nothing for log recovery to do. Hence in qa test 182,\nlog recovery only replayed a small handle for inode fsync\ntransactions in this case.\n\nHowever, with the removal of the extra -\u003esync_fs call, the log tail\nwas now not moved forward with the inode fsync transactions near the\nend of the sync procese the first (and only) buftarg flush occurred\nafter these transactions went to disk. The result is that log\nrecovery now sees a large number of transactions for metadata that\nis already on disk.\n\nThis usually isn\u0027t a problem, but when the transactions include\ninode chunk allocation, the inode create transactions and all\nsubsequent changes are replayed as we cannt rely on what is on disk\nis valid. As a result, if the inode was written and contains\nunlogged changes, the unlogged changes are lost, thereby violating\nsync semantics.\n\nThe fix is to always issue a transaction after the buftarg flush\noccurs is the log iѕ not idle or covered. This results in a dummy\ntransaction being written that contains the up-to-date log tail\nvalue, which will be very recent. Indeed, it will be at least as\nrecent as the old code would have left on disk, so log recovery\nwill behave exactly as it used to in this situation.\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": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    }
  ],
  "next": "e8c3753ce4cd6a805ebcfdb3aa6d30e6f4b8b3e0"
}
