)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "e8c3753ce4cd6a805ebcfdb3aa6d30e6f4b8b3e0",
      "tree": "cf0618d802720d77a8d1910e1085e82b1dfbb588",
      "parents": [
        "8a262e573d30187b32b5534ec489446931239cc5"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 15 02:36:35 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Mar 16 15:40:53 2010 -0500"
      },
      "message": "xfs: don\u0027t warn about page discards on shutdown\n\nIf we are doing a forced shutdown, we can get lots of noise about\ndelalloc pages being discarded. This is happens by design during a\nforced shutdown, so don\u0027t spam the logs with these messages.\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": "8a262e573d30187b32b5534ec489446931239cc5",
      "tree": "e510327146e3329d19fac8269cc51d437c8a650f",
      "parents": [
        "cd9640a70d542ca026a812ac34733799da0a39c9"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Mar 16 18:55:56 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Mar 16 15:40:36 2010 -0500"
      },
      "message": "xfs: use scalable vmap API\n\nRe-apply a commit that had been reverted due to regressions\nthat have since been fixed.\n\n    From 95f8e302c04c0b0c6de35ab399a5551605eeb006 Mon Sep 17 00:00:00 2001\n    From: Nick Piggin \u003cnpiggin@suse.de\u003e\n    Date: Tue, 6 Jan 2009 14:43:09 +1100\n\n    Implement XFS\u0027s large buffer support with the new vmap APIs. See the vmap\n    rewrite (db64fe02) for some numbers. The biggest improvement that comes from\n    using the new APIs is avoiding the global KVA allocation lock on every call.\n\n    Signed-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\n    Reviewed-by: Christoph Hellwig \u003chch@infradead.org\u003e\n    Signed-off-by: Lachlan McIlroy \u003clachlan@sgi.com\u003e\n\nOnly modifications here were a minor reformat, plus making the patch\napply given the new use of xfs_buf_is_vmapped().\n\nModified-by: Alex Elder \u003caelder@sgi.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "cd9640a70d542ca026a812ac34733799da0a39c9",
      "tree": "497c3ab912f25994d7adc4c7a860cf01bb78c95c",
      "parents": [
        "57d54889cd00db2752994b389ba714138652e60c"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Mar 16 18:55:54 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Mar 16 15:40:19 2010 -0500"
      },
      "message": "xfs: remove old vmap cache\n\nRe-apply a commit that had been reverted due to regressions\nthat have since been fixed.\n\n    Original commit: d2859751cd0bf586941ffa7308635a293f943c17\n    Author: Nick Piggin \u003cnpiggin@suse.de\u003e\n    Date: Tue, 6 Jan 2009 14:40:44 +1100\n\n    XFS\u0027s vmap batching simply defers a number (up to 64) of vunmaps,\n    and keeps track of them in a list. To purge the batch, it just goes\n    through the list and calls vunamp on each one. This is pretty poor:\n    a global TLB flush is generally still performed on each vunmap, with\n    the most expensive parts of the operation being the broadcast IPIs\n    and locking involved in the SMP callouts, and the locking involved\n    in the vmap management -- none of these are avoided by just batching\n    up the calls. I\u0027m actually surprised it ever made much difference.\n    (Now that the lazy vmap allocator is upstream, this description is\n    not quite right, but the vunmap batching still doesn\u0027t seem to do\n    much).\n\n    Rip all this logic out of XFS completely. I will improve vmap\n    performance and scalability directly in subsequent patch.\n\n    Signed-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\n    Reviewed-by: Christoph Hellwig \u003chch@infradead.org\u003e\n    Signed-off-by: Lachlan McIlroy \u003clachlan@sgi.com\u003e\n\nThe only change I made was to use the \"new\" xfs_buf_is_vmapped()\nfunction in a place it had been open-coded in the original.\n\nModified-by: Alex Elder \u003caelder@sgi.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "66ce3cf84deba6cc71dcf43c9d56a4278e5f712d",
      "tree": "7580bcc42fc7c52620b98d78ebdc654bd7ed83ea",
      "parents": [
        "05c5cb31ec47cacf38db56d9efaa37ca9d473132",
        "9b1f56d60acfd634728f91f34922066c6f80ede6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:32:21 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:32:21 2010 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs\n\n* \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs: (21 commits)\n  xfs: return inode fork offset in bulkstat for fsr\n  xfs: Increase the default size of the reserved blocks pool\n  xfs: truncate delalloc extents when IO fails in writeback\n  xfs: check for more work before sleeping in xfssyncd\n  xfs: Fix a build warning in xfs_aops.c\n  xfs: fix locking for inode cache radix tree tag updates\n  xfs: remove xfs_ipin/xfs_iunpin\n  xfs: cleanup xfs_iunpin_wait/xfs_iunpin_nowait\n  xfs: kill xfs_lrw.h\n  xfs: factor common xfs_trans_bjoin code\n  xfs: stop passing opaque handles to xfs_log.c routines\n  xfs: split xfs_bmap_btalloc\n  xfs: fix xfs_fsblock_t tracing\n  xfs: fix inode pincount check in fsync\n  xfs: Non-blocking inode locking in IO completion\n  xfs: implement optimized fdatasync\n  xfs: remove wrapper for the fsync file operation\n  xfs: remove wrappers for read/write file operations\n  xfs: merge xfs_lrw.c into xfs_file.c\n  xfs: fix dquota trace format\n  ...\n"
    },
    {
      "commit": "05c5cb31ec47cacf38db56d9efaa37ca9d473132",
      "tree": "03f900679819abd8700d5ea93c22e3a59d3af7ca",
      "parents": [
        "4582a30c2fdca5d2b40f63a20ea082b93230ff2b",
        "4ea41e2de5bba756858bb40f964e3490b6d1a25c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:31:38 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:31:38 2010 -0800"
      },
      "message": "Merge branch \u0027for-2.6.34\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.34\u0027 of git://linux-nfs.org/~bfields/linux: (22 commits)\n  nfsd4: fix minor memory leak\n  svcrpc: treat uid\u0027s as unsigned\n  nfsd: ensure sockets are closed on error\n  Revert \"sunrpc: move the close processing after do recvfrom method\"\n  Revert \"sunrpc: fix peername failed on closed listener\"\n  sunrpc: remove unnecessary svc_xprt_put\n  NFSD: NFSv4 callback client should use RPC_TASK_SOFTCONN\n  xfs_export_operations.commit_metadata\n  commit_metadata export operation replacing nfsd_sync_dir\n  lockd: don\u0027t clear sm_monitored on nsm_reboot_lookup\n  lockd: release reference to nsm_handle in nlm_host_rebooted\n  nfsd: Use vfs_fsync_range() in nfsd_commit\n  NFSD: Create PF_INET6 listener in write_ports\n  SUNRPC: NFS kernel APIs shouldn\u0027t return ENOENT for \"transport not found\"\n  SUNRPC: Bury \"#ifdef IPV6\" in svc_create_xprt()\n  NFSD: Support AF_INET6 in svc_addsock() function\n  SUNRPC: Use rpc_pton() in ip_map_parse()\n  nfsd: 4.1 has an rfc number\n  nfsd41: Create the recovery entry for the NFSv4.1 client\n  nfsd: use vfs_fsync for non-directories\n  ...\n"
    },
    {
      "commit": "e213e26ab3988c516c06eba4dcd030ac052f6dc9",
      "tree": "6e26fbdbb842b387697d73daf6e70cf718269a77",
      "parents": [
        "c812a51d11bbe983f4c24e32b59b265705ddd3c2",
        "efd8f0e6f6c1faa041f228d7113bd3a9db802d49"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 05 13:20:53 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 05 13:20:53 2010 -0800"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6: (33 commits)\n  quota: stop using QUOTA_OK / NO_QUOTA\n  dquot: cleanup dquot initialize routine\n  dquot: move dquot initialization responsibility into the filesystem\n  dquot: cleanup dquot drop routine\n  dquot: move dquot drop responsibility into the filesystem\n  dquot: cleanup dquot transfer routine\n  dquot: move dquot transfer responsibility into the filesystem\n  dquot: cleanup inode allocation / freeing routines\n  dquot: cleanup space allocation / freeing routines\n  ext3: add writepage sanity checks\n  ext3: Truncate allocated blocks if direct IO write fails to update i_size\n  quota: Properly invalidate caches even for filesystems with blocksize \u003c pagesize\n  quota: generalize quota transfer interface\n  quota: sb_quota state flags cleanup\n  jbd: Delay discarding buffers in journal_unmap_buffer\n  ext3: quota_write cross block boundary behaviour\n  quota: drop permission checks from xfs_fs_set_xstate/xfs_fs_set_xquota\n  quota: split out compat_sys_quotactl support from quota.c\n  quota: split out netlink notification support from quota.c\n  quota: remove invalid optimization from quota_sync_all\n  ...\n\nFixed trivial conflicts in fs/namei.c and fs/ufs/inode.c\n"
    },
    {
      "commit": "a9185b41a4f84971b930c519f0c63bd450c4810d",
      "tree": "268cf4e206cca12fb9e1dd68984e7c190e465b46",
      "parents": [
        "26821ed40b4230259e770c9911180f38fcaa6f59"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Mar 05 09:21:37 2010 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 05 13:25:52 2010 -0500"
      },
      "message": "pass writeback_control to -\u003ewrite_inode\n\nThis gives the filesystem more information about the writeback that\nis happening.  Trond requested this for the NFS unstable write handling,\nand other filesystems might benefit from this too by beeing able to\ndistinguish between the different callers in more detail.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "26821ed40b4230259e770c9911180f38fcaa6f59",
      "tree": "40cd0fed705ec59dd3c909b96452bae1fc532796",
      "parents": [
        "64ba9926759792cf7b95f823402e2781edd1b5d4"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Mar 05 09:21:21 2010 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 05 13:25:10 2010 -0500"
      },
      "message": "make sure data is on disk before calling -\u003ewrite_inode\n\nSimilar to the fsync issue fixed a while ago in commit\n2daea67e966dc0c42067ebea015ddac6834cef88 we need to write for data to\nactually hit the disk before writing out the metadata to guarantee\ndata integrity for filesystems that modify the inode in the data I/O\ncompletion path.  Currently XFS and NFS handle this manually, and AFS\nhas a write_inode method that does nothing but waiting for data, while\nothers are possibly missing out on this.\n\nFortunately this change has a lot less impact than the fsync change\nas none of the write_inode methods starts data writeout of any form\nby itself.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9b1f56d60acfd634728f91f34922066c6f80ede6",
      "tree": "e8f64d4bea808341f56f41e724c2920ae6b1ed26",
      "parents": [
        "64ba9926759792cf7b95f823402e2781edd1b5d4",
        "07000ee686cf19e853fa06f7904eff2cfe230ea3"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Mar 05 11:45:03 2010 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Mar 05 11:45:03 2010 -0600"
      },
      "message": "Merge branch \u0027for-2.6.34-rc1-batch2\u0027 into for-linus\n"
    },
    {
      "commit": "07000ee686cf19e853fa06f7904eff2cfe230ea3",
      "tree": "04116d2d61895728b1b6f4b9b9948d9341825022",
      "parents": [
        "8babd8a2e75cccff3167a61176c2a3e977e13799"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Mar 05 04:41:14 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Mar 05 11:02:07 2010 -0600"
      },
      "message": "xfs: return inode fork offset in bulkstat for fsr\n\nSo that fsr can attempt to get the fork offset of the temporary\ninode it uses the same as the inode it is defragmenting, pass the\nfork offset out in the bulkstat information.\n\nThe bulkstat structure has padding that has always been zeroed, so\nuserspace can tell if this field is set or not by use of the xattr\npresent flag and a non-zero value for the fork offset.\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": "8babd8a2e75cccff3167a61176c2a3e977e13799",
      "tree": "3d438e7ed84ad1f06a1a67fbb62725c92c6ad224",
      "parents": [
        "3ed3a4343b79a79d10e31f85f2d1afabcead76c6"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Thu Mar 04 01:46:25 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Mar 05 11:01:59 2010 -0600"
      },
      "message": "xfs: Increase the default size of the reserved blocks pool\n\nThe current default size of the reserved blocks pool is easy to deplete\nwith certain workloads, in particular workloads that do lots of concurrent\ndelayed allocation extent conversions.  If enough transactions are running\nin parallel and the entire pool is consumed then subsequent calls to\nxfs_trans_reserve() will fail with ENOSPC.  Also add a rate limited\nwarning so we know if this starts happening again.\n\nThis is an updated version of an old patch from Lachlan McIlroy.\n\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "3ed3a4343b79a79d10e31f85f2d1afabcead76c6",
      "tree": "9d3982cfb179bff8071ef99f2e2b36e3872dfa6a",
      "parents": [
        "20f6b2c785cf187445f126321638ab8ba7aa7494"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Mar 05 02:00:42 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Mar 05 11:01:53 2010 -0600"
      },
      "message": "xfs: truncate delalloc extents when IO fails in writeback\n\nWe currently use block_invalidatepage() to clean up pages where I/O\nfails in -\u003ewritepage(). Unfortunately, if the page has delalloc\nregions on it, we fail to remove the delalloc regions when we\ninvalidate the page.  This can result in tripping a BUG() in\nxfs_get_blocks() later on if a direct IO read is done on that same\nregion - the delalloc extent is returned when none is supposed to be\nthere.\n\nFix this by truncating away the delalloc regions on the page before\ninvalidating it. Because they are delalloc, we can do this without\nneeding a transaction. Indeed - if we get ENOSPC errors, we have to\nbe able to do this truncation without a transaction as there is\nno space left for block reservation (typically why we see a ENOSPC\nin writeback).\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": "20f6b2c785cf187445f126321638ab8ba7aa7494",
      "tree": "bf8ba702047ae78cffeac6fd97852bde3741621b",
      "parents": [
        "694189328a7e566cb84bd3205503a42b60e87882"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Thu Mar 04 01:46:23 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Mar 05 11:01:45 2010 -0600"
      },
      "message": "xfs: check for more work before sleeping in xfssyncd\n\nxfssyncd processes a queue of work by detaching the queue and\nthen iterating over all the work items. It then sleeps for a\ntime period or until new work comes in. If new work is queued\nwhile xfssyncd is actively processing the detached work queue,\nit will not process that new work until after a sleep timeout\nor the next work event queued wakes it.\n\nFix this by checking the work queue again before going to sleep.\n\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "694189328a7e566cb84bd3205503a42b60e87882",
      "tree": "dfd6cb104db477741ed8cc8a878832e90904f184",
      "parents": [
        "f1f724e4b523d444c5a598d74505aefa3d6844d2"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Thu Mar 04 00:57:09 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Fri Mar 05 11:01:22 2010 -0600"
      },
      "message": "xfs: Fix a build warning in xfs_aops.c\n\nFix a build warning that slipped through.  Dave Chinner had posted\nan updated version of his patch but the previous version--without\nthis fix--was what got committed.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "ac0e773718dc20551e72900d2e7eada96ac91100",
      "tree": "c46ec45c2044b0995ef241be4b800527210414d7",
      "parents": [
        "5582c76f901d240f57329212b59b4d957ea8d6cf"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Feb 16 03:44:56 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:25 2010 +0100"
      },
      "message": "quota: drop permission checks from xfs_fs_set_xstate/xfs_fs_set_xquota\n\nWe already do these checks in the generic code.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "8c4e4acd660a09e571a71583b5bbe1eee700c9ad",
      "tree": "05d1208e70d96dfa6857dbb84de7f3554a721992",
      "parents": [
        "c988afb5fa3fc450207c3dfc0ce535f4bfdae4d1"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Feb 16 03:44:51 2010 -0500"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Fri Mar 05 00:20:24 2010 +0100"
      },
      "message": "quota: clean up Q_XQUOTASYNC\n\nCurrently Q_XQUOTASYNC calls into the quota_sync method, but XFS does something\nentirely different in it than the rest of the filesystems.  xfs_quota which\ncalls Q_XQUOTASYNC expects an asynchronous data writeout to flush delayed\nallocations, while the \"VFS\" quota support wants to flush changes to the quota\nfile.\n\nSo make Q_XQUOTASYNC call into the writeback code directly and make the\nquota_sync method optional as XFS doesn\u0027t need in the sense expected by the\nrest of the quota code.\n\nGFS2 was using limited XFS-style quota and has a quota_sync method fitting\nneither the style used by vfs_quota_sync nor xfs_fs_quota_sync.  I left it\nin for now as per discussion with Steve it expects to be called from the\nsync path this way.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "4ea41e2de5bba756858bb40f964e3490b6d1a25c",
      "tree": "51a688be321dd42f80d8a0c966eb6a60408d50b3",
      "parents": [
        "8d75da8afd068fa58b35e69c7c8c46770d9e7a98",
        "398007f863a4af2b4a5a07219c5a617f1a098115"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Thu Mar 04 12:03:16 2010 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Thu Mar 04 12:04:51 2010 -0500"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs into for-2.6.34-incoming\n\nResolve merge conflict in fs/xfs/linux-2.6/xfs_export.c.\n"
    },
    {
      "commit": "0a135ba14d71fb84c691a5386aff5049691fe6d7",
      "tree": "adb1de887dd6839d69d2fc16ffa2a10ff63298fa",
      "parents": [
        "4850f524b2c4c8a4e9f8ef4dd9c7c4afde2f2b2c",
        "a29d8b8e2d811a24bbe49215a0f0c536b72ebc18"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 03 07:34:18 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 03 07:34:18 2010 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:\n  percpu: add __percpu sparse annotations to what\u0027s left\n  percpu: add __percpu sparse annotations to fs\n  percpu: add __percpu sparse annotations to core kernel subsystems\n  local_t: Remove leftover local.h\n  this_cpu: Remove pageset_notifier\n  this_cpu: Page allocator conversion\n  percpu, x86: Generic inc / dec percpu instructions\n  local_t: Move local.h include to ringbuffer.c and ring_buffer_benchmark.c\n  module: Use this_cpu_xx to dynamically allocate counters\n  local_t: Remove cpu_local_xx macros\n  percpu: refactor the code in pcpu_[de]populate_chunk()\n  percpu: remove compile warnings caused by __verify_pcpu_ptr()\n  percpu: make accessors check for percpu pointer in sparse\n  percpu: add __percpu for sparse.\n  percpu: make access macros universal\n  percpu: remove per_cpu__ prefix.\n"
    },
    {
      "commit": "f1f724e4b523d444c5a598d74505aefa3d6844d2",
      "tree": "49408b17a42628b7a0fbc1d5bf163bb716e73545",
      "parents": [
        "a14a5ab58f9d783ec3a2a287320fab22e1764813"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Mar 01 11:30:31 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Mar 01 19:14:36 2010 -0600"
      },
      "message": "xfs: fix locking for inode cache radix tree tag updates\n\nThe radix-tree code requires it\u0027s users to serialize tag updates\nagainst other updates to the tree.  While XFS protects tag updates\nagainst each other it does not serialize them against updates of the\ntree contents, which can lead to tag corruption.  Fix the inode\ncache to always take pag_ici_lock in exclusive mode when updating\nradix tree tags.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReported-by: Patrick Schreurs \u003cpatrick@news-service.com\u003e\nTested-by: Patrick Schreurs \u003cpatrick@news-service.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "a14a5ab58f9d783ec3a2a287320fab22e1764813",
      "tree": "52d0a4cbaa9aa4fe2e711cf5a68ba9fe6c2e677c",
      "parents": [
        "60ec678371183f6e0d487e55fe8adbb33816518e"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Feb 18 12:43:22 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Mar 01 16:35:56 2010 -0600"
      },
      "message": "xfs: remove xfs_ipin/xfs_iunpin\n\nInodes are only pinned/unpinned via the inode item methods, and lots of\ncode relies on that fact.  So remove the separate xfs_ipin/xfs_iunpin\nhelpers and merge them into their only callers.  This also fixes up\nvarious duplicate and/or incorrect comments.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "60ec678371183f6e0d487e55fe8adbb33816518e",
      "tree": "9959de5ad0fd47a8ef363c93e3046023ba81c67a",
      "parents": [
        "d7658d487f4c62983015ba6c99f02dedb3ea97c7"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Feb 17 19:43:56 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Mar 01 16:35:50 2010 -0600"
      },
      "message": "xfs: cleanup xfs_iunpin_wait/xfs_iunpin_nowait\n\nRemove the inode item pointer and ili_last_lsn checks in\n__xfs_iunpin_wait as any pinned inode is guaranteed to have them\nvalid.  After this the xfs_iunpin_nowait case is nothing more than a\nxfs_log_force_lsn, as we know that the caller has already checked\nthe pincount.\n\nMake xfs_iunpin_nowait the new low-level routine just doing the log\nforce and rewrite xfs_iunpin_wait around it.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "d7658d487f4c62983015ba6c99f02dedb3ea97c7",
      "tree": "e5f4af467180d4f5301a3b6ea82583ec974e6c9f",
      "parents": [
        "d7e84f413726876c0ec66bbf90770f69841f7663"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Feb 17 19:36:13 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Mon Mar 01 16:35:44 2010 -0600"
      },
      "message": "xfs: kill xfs_lrw.h\n\nMove the two declarations to better fitting headers now that\nxfs_lrw.c is gone.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    }
  ],
  "next": "d7e84f413726876c0ec66bbf90770f69841f7663"
}
