)]}'
{
  "log": [
    {
      "commit": "eab4e63368b4cfa597dbdac66d1a7a836a693b7d",
      "tree": "37d6756a3fd9e43ecf65d1b4a3950ecd34ad653f",
      "parents": [
        "c3f8fc73ac97b76a12692088ef9cace9af8422c0"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Nov 12 22:54:02 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Thu Nov 15 21:34:05 2012 -0600"
      },
      "message": "xfs: uncached buffer reads need to return an error\n\nWith verification being done as an IO completion callback, different\nerrors can be returned from a read. Uncached reads only return a\nbuffer or NULL on failure, which means the verification error cannot\nbe returned to the caller.\n\nSplit the error handling for these reads into two - a failure to get\na buffer will still return NULL, but a read error will return a\nreferenced buffer with b_error set rather than NULL. The caller is\nresponsible for checking the error state of the buffer returned.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Phil White \u003cpwhite@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n"
    },
    {
      "commit": "c3f8fc73ac97b76a12692088ef9cace9af8422c0",
      "tree": "a90e132507842b7ed8c5d93e0c002e0dc0f99a5c",
      "parents": [
        "fb59581404ab7ec5075299065c22cb211a9262a9"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Nov 12 22:54:01 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Thu Nov 15 21:34:02 2012 -0600"
      },
      "message": "xfs: make buffer read verication an IO completion function\n\nAdd a verifier function callback capability to the buffer read\ninterfaces.  This will be used by the callers to supply a function\nthat verifies the contents of the buffer when it is read from disk.\nThis patch does not provide callback functions, but simply modifies\nthe interfaces to allow them to be called.\n\nThe reason for adding this to the read interfaces is that it is very\ndifficult to tell fom the outside is a buffer was just read from\ndisk or whether we just pulled it out of cache. Supplying a callbck\nallows the buffer cache to use it\u0027s internal knowledge of the buffer\nto execute it only when the buffer is read from disk.\n\nIt is intended that the verifier functions will mark the buffer with\nan EFSCORRUPTED error when verification fails. This allows the\nreading context to distinguish a verification error from an IO\nerror, and potentially take further actions on the buffer (e.g.\nattempt repair) based on the error reported.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Phil White \u003cpwhite@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n"
    },
    {
      "commit": "fb59581404ab7ec5075299065c22cb211a9262a9",
      "tree": "56a9d9a6cf90ee9b6d753de4401b6a2bf8d02e0f",
      "parents": [
        "4bc1ea6b8ddd4f2bd78944fbe5a1042ac14b1f5f"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Nov 12 22:53:57 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Nov 14 15:15:08 2012 -0600"
      },
      "message": "xfs: remove xfs_flushinval_pages\n\nIt\u0027s just a simple wrapper around VFS functionality, and is actually\nbugging in that it doesn\u0027t remove mappings before invalidating the\npage cache. Remove it and replace it with the correct VFS\nfunctionality.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Andrew Dahl \u003cadahl@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "4bc1ea6b8ddd4f2bd78944fbe5a1042ac14b1f5f",
      "tree": "8fb1419d5f7329afb431dbed481d441eb9d38c0c",
      "parents": [
        "95eacf0f71b7682a05b8242c49c68e8e4bb673e3"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Nov 12 22:53:56 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Nov 14 15:12:45 2012 -0600"
      },
      "message": "xfs: remove xfs_flush_pages\n\nIt is a complex wrapper around VFS functions, but there are VFS\nfunctions that provide exactly the same functionality. Call the VFS\nfunctions directly and remove the unnecessary indirection and\ncomplexity.\n\nWe don\u0027t need to care about clearing the XFS_ITRUNCATED flag, as\nthat is done during .writepages. Hence is cleared by the VFS\nwriteback path if there is anything to write back during the flush.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Andrew Dahl \u003cadahl@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "95eacf0f71b7682a05b8242c49c68e8e4bb673e3",
      "tree": "f57a66b71448d44f99910aed6b544f3fc8611062",
      "parents": [
        "d6638ae244f6323fcdf85e72eb4a5af6f6212893"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Nov 12 22:53:55 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Nov 14 15:12:20 2012 -0600"
      },
      "message": "xfs: remove xfs_wait_on_pages()\n\nIt\u0027s just a simple wrapper around a VFS function that is only called\nby another function in xfs_fs_subr.c. Remove it and call the VFS\nfunction directly.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Andrew Dahl \u003cadahl@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "d6638ae244f6323fcdf85e72eb4a5af6f6212893",
      "tree": "c401a071e2519461c7c70a8a1f41c48196e4679f",
      "parents": [
        "f5b8911b67eb4f15d95d5e5324d376d4a49d56e8"
      ],
      "author": {
        "name": "Andrew Dahl",
        "email": "adahl@sgi.com",
        "time": "Wed Nov 14 12:52:26 2012 -0600"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Nov 14 15:11:52 2012 -0600"
      },
      "message": "xfs: reverse the check on XFS_IOC_ZERO_RANGE\n\nReversing the check on XFS_IOC_ZERO_RANGE.\n\nRange should be zeroed if the start is less than or equal to the end.\n\nSigned-off-by: Andrew Dahl \u003cadahl@sgi.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "f5b8911b67eb4f15d95d5e5324d376d4a49d56e8",
      "tree": "35c98fdcbefd3c8a52d062f73775cde9aaac75d6",
      "parents": [
        "de497688daaabbab425a8a969528272ec1d962a6"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Nov 14 17:42:47 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Nov 14 15:11:19 2012 -0600"
      },
      "message": "xfs: remove xfs_tosspages\n\nIt\u0027s a buggy, unnecessary wrapper that is duplicating\ntruncate_pagecache_range().\n\nWhen replacing the call in xfs_change_file_space(), also ensure that\nthe length being allocated/freed is always positive before making\nany changes. These checks are done in the lower extent manipulation\nfunctions, too, but we need to do them before any page cache\noperations.\n\nReported-by: Andrew Dahl \u003cadahl@sgi.com\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-By: Andrew Dahl \u003cadahl@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "de497688daaabbab425a8a969528272ec1d962a6",
      "tree": "31721e42e4d6382d338867f18f70dfd0bb09fa9e",
      "parents": [
        "fd23683c3b1ab905cba61ea2981c156f4bf52845"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Nov 12 22:54:00 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Tue Nov 13 16:40:59 2012 -0600"
      },
      "message": "xfs: make growfs initialise the AGFL header\n\nFor verification purposes, AGFLs need to be initialised to a known\nset of values. For upcoming CRC changes, they are also headers that\nneed to be initialised. Currently, growfs does neither for the AGFLs\n- it ignores them completely. Add initialisation of the AGFL to be\nfull of invalid block numbers (NULLAGBLOCK) to put the\ninfrastructure in place needed for CRC support.\n\nIncludes a comment clarification from Jeff Liu.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by Rich Johnston \u003crjohnston@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "fd23683c3b1ab905cba61ea2981c156f4bf52845",
      "tree": "1ea38537f14d0ff537ff15a97cedd244a18890e9",
      "parents": [
        "b64f3a390d3477517cbff7d613e551705540769b"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Nov 12 22:53:59 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Tue Nov 13 16:40:43 2012 -0600"
      },
      "message": "xfs: growfs: use uncached buffers for new headers\n\nWhen writing the new AG headers to disk, we can\u0027t attach write\nverifiers because they have a dependency on the struct xfs-perag\nbeing attached to the buffer to be fully initialised and growfs\ncan\u0027t fully initialise them until later in the process.\n\nThe simplest way to avoid this problem is to use uncached buffers\nfor writing the new headers. These buffers don\u0027t have the xfs-perag\nattached to them, so it\u0027s simple to detect in the write verifier and\nbe able to skip the checks that need the xfs-perag.\n\nThis enables us to attach the appropriate buffer ops to the buffer\nand hence calculate CRCs on the way to disk. IT also means that the\nbuffer is torn down immediately, and so the first access to the AG\nheaders will re-read the header from disk and perform full\nverification of the buffer. This way we also can catch corruptions\ndue to problems that went undetected in growfs.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by Rich Johnston \u003crjohnston@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "b64f3a390d3477517cbff7d613e551705540769b",
      "tree": "1e82fffaf55236f3eda42f55b7a772c4baaa5d98",
      "parents": [
        "ee73259b401317117e7f5d4834c270b10b12bc8e"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Nov 13 16:40:27 2012 -0600"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Tue Nov 13 16:40:27 2012 -0600"
      },
      "message": "xfs: use btree block initialisation functions in growfs\n\nFactor xfs_btree_init_block() to be independent of the btree cursor,\nand use the function to initialise btree blocks in the growfs code.\nThis makes adding support for different format btree blocks simple.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by Rich Johnston \u003crjohnston@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "ee73259b401317117e7f5d4834c270b10b12bc8e",
      "tree": "f5b78a4c80cb62435965fbcbc7289fd533b83dc9",
      "parents": [
        "37eb17e604ac7398bbb133c82f281475d704fff7"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Nov 12 22:53:53 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Tue Nov 13 14:47:00 2012 -0600"
      },
      "message": "xfs: add more attribute tree trace points.\n\nAdded when debugging recent attribute tree problems to more finely\ntrace code execution through the maze of twisty passages that makes\nup the attr code.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "37eb17e604ac7398bbb133c82f281475d704fff7",
      "tree": "b84865d92d52d5ea18481aa5a1cb8fb0e66979ec",
      "parents": [
        "7bf7f352194252e6f05981d44fb8cb55668606cd"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Nov 12 22:09:46 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Tue Nov 13 14:45:57 2012 -0600"
      },
      "message": "xfs: drop buffer io reference when a bad bio is built\n\nError handling in xfs_buf_ioapply_map() does not handle IO reference\ncounts correctly. We increment the b_io_remaining count before\nbuilding the bio, but then fail to decrement it in the failure case.\nThis leads to the buffer never running IO completion and releasing\nthe reference that the IO holds, so at unmount we can leak the\nbuffer. This leak is captured by this assert failure during unmount:\n\nXFS: Assertion failed: atomic_read(\u0026pag-\u003epag_ref) \u003d\u003d 0, file: fs/xfs/xfs_mount.c, line: 273\n\nThis is not a new bug - the b_io_remaining accounting has had this\nproblem for a long, long time - it\u0027s just very hard to get a\nzero length bio being built by this code...\n\nFurther, the buffer IO error can be overwritten on a multi-segment\nbuffer by subsequent bio completions for partial sections of the\nbuffer. Hence we should only set the buffer error status if the\nbuffer is not already carrying an error status. This ensures that a\npartial IO error on a multi-segment buffer will not be lost. This\npart of the problem is a regression, however.\n\ncc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "7bf7f352194252e6f05981d44fb8cb55668606cd",
      "tree": "4f94a286308ff02a7afc5c7e912497fee5302a29",
      "parents": [
        "07428d7f0ca46087f7f1efa895322bb9dc1ac21d"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Nov 12 22:09:45 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Tue Nov 13 14:45:45 2012 -0600"
      },
      "message": "xfs: fix broken error handling in xfs_vm_writepage\n\nWhen we shut down the filesystem, it might first be detected in\nwriteback when we are allocating a inode size transaction. This\nhappens after we have moved all the pages into the writeback state\nand unlocked them. Unfortunately, if we fail to set up the\ntransaction we then abort writeback and try to invalidate the\ncurrent page. This then triggers are BUG() in block_invalidatepage()\nbecause we are trying to invalidate an unlocked page.\n\nFixing this is a bit of a chicken and egg problem - we can\u0027t\nallocate the transaction until we\u0027ve clustered all the pages into\nthe IO and we know the size of it (i.e. whether the last block of\nthe IO is beyond the current EOF or not). However, we don\u0027t want to\nhold pages locked for long periods of time, especially while we lock\nother pages to cluster them into the write.\n\nTo fix this, we need to make a clear delineation in writeback where\nerrors can only be handled by IO completion processing. That is,\nonce we have marked a page for writeback and unlocked it, we have to\nreport errors via IO completion because we\u0027ve already started the\nIO. We may not have submitted any IO, but we\u0027ve changed the page\nstate to indicate that it is under IO so we must now use the IO\ncompletion path to report errors.\n\nTo do this, add an error field to xfs_submit_ioend() to pass it the\nerror that occurred during the building on the ioend chain. When\nthis is non-zero, mark each ioend with the error and call\nxfs_finish_ioend() directly rather than building bios. This will\nimmediately push the ioends through completion processing with the\nerror that has occurred.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "07428d7f0ca46087f7f1efa895322bb9dc1ac21d",
      "tree": "b3fc138245723f3a82c6844d7a8884c39406da39",
      "parents": [
        "579b62faa5fb16ffeeb88cda5e2c4e95730881af"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Nov 12 22:09:44 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Tue Nov 13 14:45:29 2012 -0600"
      },
      "message": "xfs: fix attr tree double split corruption\n\nIn certain circumstances, a double split of an attribute tree is\nneeded to insert or replace an attribute. In rare situations, this\ncan go wrong, leaving the attribute tree corrupted. In this case,\nthe attr being replaced is the last attr in a leaf node, and the\nreplacement is larger so doesn\u0027t fit in the same leaf node.\nWhen we have the initial condition of a node format attribute\nbtree with two leaves at index 1 and 2. Call them L1 and L2.  The\nleaf L1 is completely full, there is not a single byte of free space\nin it. L2 is mostly empty.  The attribute being replaced - call it X\n- is the last attribute in L1.\n\nThe way an attribute replace is executed is that the replacement\nattribute - call it Y - is first inserted into the tree, but has an\nINCOMPLETE flag set on it so that list traversals ignore it. Once\nthis transaction is committed, a second transaction it run to\natomically mark Y as COMPLETE and X as INCOMPLETE, so that a\ntraversal will now find Y and skip X. Once that transaction is\ncommitted, attribute X is then removed.\n\nSo, the initial condition is:\n\n     +--------+     +--------+\n     |   L1   |     |   L2   |\n     | fwd: 2 |----\u003e| fwd: 0 |\n     | bwd: 0 |\u003c----| bwd: 1 |\n     | fsp: 0 |     | fsp: N |\n     |--------|     |--------|\n     | attr A |     | attr 1 |\n     |--------|     |--------|\n     | attr B |     | attr 2 |\n     |--------|     |--------|\n     ..........     ..........\n     |--------|     |--------|\n     | attr X |     | attr n |\n     +--------+     +--------+\n\n\nSo now we go to replace X, and see that L1:fsp \u003d 0 - it is full so\nwe can\u0027t insert Y in the same leaf. So we record the the location of\nattribute X so we can track it for later use, then we split L1 into\nL1 and L3 and reblance across the two leafs. We end with:\n\n\n     +--------+     +--------+     +--------+\n     |   L1   |     |   L3   |     |   L2   |\n     | fwd: 3 |----\u003e| fwd: 2 |----\u003e| fwd: 0 |\n     | bwd: 0 |\u003c----| bwd: 1 |\u003c----| bwd: 3 |\n     | fsp: M |     | fsp: J |     | fsp: N |\n     |--------|     |--------|     |--------|\n     | attr A |     | attr X |     | attr 1 |\n     |--------|     +--------+     |--------|\n     | attr B |                    | attr 2 |\n     |--------|                    |--------|\n     ..........                    ..........\n     |--------|                    |--------|\n     | attr W |                    | attr n |\n     +--------+                    +--------+\n\n\nAnd we track that the original attribute is now at L3:0.\n\nWe then try to insert Y into L1 again, and find that there isn\u0027t\nenough room because the new attribute is larger than the old one.\nHence we have to split again to make room for Y. We end up with\nthis:\n\n\n     +--------+     +--------+     +--------+     +--------+\n     |   L1   |     |   L4   |     |   L3   |     |   L2   |\n     | fwd: 4 |----\u003e| fwd: 3 |----\u003e| fwd: 2 |----\u003e| fwd: 0 |\n     | bwd: 0 |\u003c----| bwd: 1 |\u003c----| bwd: 4 |\u003c----| bwd: 3 |\n     | fsp: M |     | fsp: J |     | fsp: J |     | fsp: N |\n     |--------|     |--------|     |--------|     |--------|\n     | attr A |     | attr Y |     | attr X |     | attr 1 |\n     |--------|     + INCOMP +     +--------+     |--------|\n     | attr B |     +--------+                    | attr 2 |\n     |--------|                                   |--------|\n     ..........                                   ..........\n     |--------|                                   |--------|\n     | attr W |                                   | attr n |\n     +--------+                                   +--------+\n\nAnd now we have the new (incomplete) attribute @ L4:0, and the\noriginal attribute at L3:0. At this point, the first transaction is\ncommitted, and we move to the flipping of the flags.\n\nThis is where we are supposed to end up with this:\n\n     +--------+     +--------+     +--------+     +--------+\n     |   L1   |     |   L4   |     |   L3   |     |   L2   |\n     | fwd: 4 |----\u003e| fwd: 3 |----\u003e| fwd: 2 |----\u003e| fwd: 0 |\n     | bwd: 0 |\u003c----| bwd: 1 |\u003c----| bwd: 4 |\u003c----| bwd: 3 |\n     | fsp: M |     | fsp: J |     | fsp: J |     | fsp: N |\n     |--------|     |--------|     |--------|     |--------|\n     | attr A |     | attr Y |     | attr X |     | attr 1 |\n     |--------|     +--------+     + INCOMP +     |--------|\n     | attr B |                    +--------+     | attr 2 |\n     |--------|                                   |--------|\n     ..........                                   ..........\n     |--------|                                   |--------|\n     | attr W |                                   | attr n |\n     +--------+                                   +--------+\n\nBut that doesn\u0027t happen properly - the attribute tracking indexes\nare not pointing to the right locations. What we end up with is both\nthe old attribute to be removed pointing at L4:0 and the new\nattribute at L4:1.  On a debug kernel, this assert fails like so:\n\nXFS: Assertion failed: args-\u003eindex2 \u003c be16_to_cpu(leaf2-\u003ehdr.count), file: fs/xfs/xfs_attr_leaf.c, line: 2725\n\nbecause the new attribute location does not exist. On a production\nkernel, this goes unnoticed and the code proceeds ahead merrily and\nremoves L4 because it thinks that is the block that is no longer\nneeded. This leaves the hash index node pointing to entries\nL1, L4 and L2, but only blocks L1, L3 and L2 to exist. Further, the\nleaf level sibling list is L1 \u003c-\u003e L4 \u003c-\u003e L2, but L4 is now free\nspace, and so everything is busted. This corruption is caused by the\nremoval of the old attribute triggering a join - it joins everything\ncorrectly but then frees the wrong block.\n\nxfs_repair will report something like:\n\nbad sibling back pointer for block 4 in attribute fork for inode 131\nproblem with attribute contents in inode 131\nwould clear attr fork\nbad nblocks 8 for inode 131, would reset to 3\nbad anextents 4 for inode 131, would reset to 0\n\nThe problem lies in the assignment of the old/new blocks for\ntracking purposes when the double leaf split occurs. The first split\ntries to place the new attribute inside the current leaf (i.e.\n\"inleaf \u003d\u003d true\") and moves the old attribute (X) to the new block.\nThis sets up the old block/index to L1:X, and newly allocated\nblock to L3:0. It then moves attr X to the new block and tries to\ninsert attr Y at the old index. That fails, so it splits again.\n\nWith the second split, the rebalance ends up placing the new attr in\nthe second new block - L4:0 - and this is where the code goes wrong.\nWhat is does is it sets both the new and old block index to the\nsecond new block. Hence it inserts attr Y at the right place (L4:0)\nbut overwrites the current location of the attr to replace that is\nheld in the new block index (currently L3:0). It over writes it with\nL4:1 - the index we later assert fail on.\n\nHopefully this table will show this in a foramt that is a bit easier\nto understand:\n\nSplit\t\told attr index\t\tnew attr index\n\t\tvanilla\tpatched\t\tvanilla\tpatched\nbefore 1st\tL1:26\tL1:26\t\tN/A\tN/A\nafter 1st\tL3:0\tL3:0\t\tL1:26\tL1:26\nafter 2nd\tL4:0\tL3:0\t\tL4:1\tL4:0\n                ^^^^\t\t\t^^^^\n\t\twrong\t\t\twrong\n\nThe fix is surprisingly simple, for all this analysis - just stop\nthe rebalance on the out-of leaf case from overwriting the new attr\nindex - it\u0027s already correct for the double split case.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "579b62faa5fb16ffeeb88cda5e2c4e95730881af",
      "tree": "b0d71a823d2b6e5718786f99921968109d8f644e",
      "parents": [
        "00ca79a04bef1a1b30ef8afd992d905b6d986caf"
      ],
      "author": {
        "name": "Brian Foster",
        "email": "bfoster@redhat.com",
        "time": "Tue Nov 06 09:50:47 2012 -0500"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Thu Nov 08 15:34:59 2012 -0600"
      },
      "message": "xfs: add background scanning to clear eofblocks inodes\n\nCreate a new mount workqueue and delayed_work to enable background\nscanning and freeing of eofblocks inodes. The scanner kicks in once\nspeculative preallocation occurs and stops requeueing itself when\nno eofblocks inodes exist.\n\nThe scan interval is based on the new\n\u0027speculative_prealloc_lifetime\u0027 tunable (default to 5m). The\nbackground scanner performs unfiltered, best effort scans (which\nskips inodes under lock contention or with a dirty cache mapping).\n\nSigned-off-by: Brian Foster \u003cbfoster@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "00ca79a04bef1a1b30ef8afd992d905b6d986caf",
      "tree": "ee4a3f4dbb6fbfeae01e58f98a1c2c8457f5b4b0",
      "parents": [
        "1b5560488d1ab7c932f6f99385b41116838c3486"
      ],
      "author": {
        "name": "Brian Foster",
        "email": "bfoster@redhat.com",
        "time": "Wed Nov 07 12:21:14 2012 -0500"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Thu Nov 08 15:32:29 2012 -0600"
      },
      "message": "xfs: add minimum file size filtering to eofblocks scan\n\nSupport minimum file size filtering in the eofblocks scan. The\ncaller must set the XFS_EOF_FLAGS_MINFILESIZE flags bit and minimum\nfile size value in bytes.\n\nSigned-off-by: Brian Foster \u003cbfoster@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "1b5560488d1ab7c932f6f99385b41116838c3486",
      "tree": "7610d27dadad7e3305186db81057e8dba0d1df56",
      "parents": [
        "3e3f9f5863548e870edfcc72e7617ac8ddcad44a"
      ],
      "author": {
        "name": "Brian Foster",
        "email": "bfoster@redhat.com",
        "time": "Tue Nov 06 09:50:45 2012 -0500"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Thu Nov 08 15:31:13 2012 -0600"
      },
      "message": "xfs: support multiple inode id filtering in eofblocks scan\n\nEnhance the eofblocks scan code to filter based on multiply specified\ninode id values. When multiple inode id values are specified, only\ninodes that match all id values are selected.\n\nSigned-off-by: Brian Foster \u003cbfoster@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "3e3f9f5863548e870edfcc72e7617ac8ddcad44a",
      "tree": "ab1952acea4c3cad7048d6c168987ba7b7e73552",
      "parents": [
        "8ca149de80478441352a8622ea15fae7de703ced"
      ],
      "author": {
        "name": "Brian Foster",
        "email": "bfoster@redhat.com",
        "time": "Wed Nov 07 12:21:13 2012 -0500"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Thu Nov 08 15:29:14 2012 -0600"
      },
      "message": "xfs: add inode id filtering to eofblocks scan\n\nSupport inode ID filtering in the eofblocks scan. The caller must\nset the associated XFS_EOF_FLAGS_*ID bit and ID field.\n\nSigned-off-by: Brian Foster \u003cbfoster@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "8ca149de80478441352a8622ea15fae7de703ced",
      "tree": "d98cd5200aa1180b01925a400fe6e4155e0e5a0b",
      "parents": [
        "41176a68e3f710630feace536d0277a092e206b5"
      ],
      "author": {
        "name": "Brian Foster",
        "email": "bfoster@redhat.com",
        "time": "Wed Nov 07 12:21:12 2012 -0500"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Thu Nov 08 15:27:49 2012 -0600"
      },
      "message": "xfs: add XFS_IOC_FREE_EOFBLOCKS ioctl\n\nThe XFS_IOC_FREE_EOFBLOCKS ioctl allows users to invoke an EOFBLOCKS\nscan. The xfs_eofblocks structure is defined to support the command\nparameters (scan mode).\n\nSigned-off-by: Brian Foster \u003cbfoster@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "41176a68e3f710630feace536d0277a092e206b5",
      "tree": "b1452aae0f00c37ff769e9f4620aa3936e70b837",
      "parents": [
        "40165e27617e2a98bf8588001d2f2872fae2fee2"
      ],
      "author": {
        "name": "Brian Foster",
        "email": "bfoster@redhat.com",
        "time": "Tue Nov 06 09:50:42 2012 -0500"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Thu Nov 08 15:25:40 2012 -0600"
      },
      "message": "xfs: create function to scan and clear EOFBLOCKS inodes\n\nxfs_inodes_free_eofblocks() implements scanning functionality for\nEOFBLOCKS inodes. It uses the AG iterator to walk the tagged inodes\nand free post-EOF blocks via the xfs_inode_free_eofblocks() execute\nfunction. The scan can be invoked in best-effort mode or wait\n(force) mode.\n\nA best-effort scan (default) handles all inodes that do not have a\ndirty cache and we successfully acquire the io lock via trylock. In\nwait mode, we continue to cycle through an AG until all inodes are\nhandled.\n\nSigned-off-by: Brian Foster \u003cbfoster@redhat.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "40165e27617e2a98bf8588001d2f2872fae2fee2",
      "tree": "fa67853de394ffe6d63aa981836a1e780def25f2",
      "parents": [
        "72b53efa4a6125a4c334871c58268c430605819a"
      ],
      "author": {
        "name": "Brian Foster",
        "email": "bfoster@redhat.com",
        "time": "Tue Nov 06 09:50:41 2012 -0500"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Thu Nov 08 15:24:26 2012 -0600"
      },
      "message": "xfs: make xfs_free_eofblocks() non-static, return EAGAIN on trylock failure\n\nTurn xfs_free_eofblocks() into a non-static function, return EAGAIN to\nindicate trylock failure and make sure this error is not propagated in\nxfs_release().\n\nSigned-off-by: Brian Foster \u003cbfoster@redhat.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "72b53efa4a6125a4c334871c58268c430605819a",
      "tree": "8991dfdb6eb1f1abe83258cf3b6fb6617bf45fd5",
      "parents": [
        "a454f7428ffa03c8e1321124d9074101b7290be6"
      ],
      "author": {
        "name": "Brian Foster",
        "email": "bfoster@redhat.com",
        "time": "Tue Nov 06 09:50:40 2012 -0500"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Thu Nov 08 15:22:34 2012 -0600"
      },
      "message": "xfs: create helper to check whether to free eofblocks on inode\n\nThis check is used in multiple places to determine whether we\nshould check for (and potentially free) post EOF blocks on an\ninode. Add a helper to consolidate the check.\n\nNote that when we remove an inode from the cache (xfs_inactive()),\nwe are required to trim post-EOF blocks even if the inode is marked\npreallocated or append-only to maintain correct space accounting.\nThe \u0027force\u0027 parameter to xfs_can_free_eofblocks() specifies whether\nwe should ignore the prealloc/append-only status of the inode.\n\nSigned-off-by: Brian Foster \u003cbfoster@redhat.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "a454f7428ffa03c8e1321124d9074101b7290be6",
      "tree": "8dc1cdfb38dc100f844821e3122b0d4ec017f903",
      "parents": [
        "27b52867925e3aaed090063c1c58a7537e6373f3"
      ],
      "author": {
        "name": "Brian Foster",
        "email": "bfoster@redhat.com",
        "time": "Tue Nov 06 09:50:39 2012 -0500"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Thu Nov 08 15:20:38 2012 -0600"
      },
      "message": "xfs: support a tag-based inode_ag_iterator\n\nGenericize xfs_inode_ag_walk() to support an optional radix tree tag\nand args argument for the execute function. Create a new wrapper\ncalled xfs_inode_ag_iterator_tag() that performs a tag based walk\nof perag\u0027s and inodes.\n\nSigned-off-by: Brian Foster \u003cbfoster@redhat.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "27b52867925e3aaed090063c1c58a7537e6373f3",
      "tree": "901719517ac8dc751053f6bf9d86cbe2b73bf538",
      "parents": [
        "69a58a43f74eb2cb23d9bce2524dae33c289a40f"
      ],
      "author": {
        "name": "Brian Foster",
        "email": "bfoster@redhat.com",
        "time": "Tue Nov 06 09:50:38 2012 -0500"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Thu Nov 08 14:20:44 2012 -0600"
      },
      "message": "xfs: add EOFBLOCKS inode tagging/untagging\n\nAdd the XFS_ICI_EOFBLOCKS_TAG inode tag to identify inodes with\nspeculatively preallocated blocks beyond EOF. An inode is tagged\nwhen speculative preallocation occurs and untagged either via\ntruncate down or when post-EOF blocks are freed via release or\nreclaim.\n\nThe tag management is intentionally not aggressive to prefer\nsimplicity over the complexity of handling all the corner cases\nunder which post-EOF blocks could be freed (i.e., forward\ntruncation, fallocate, write error conditions, etc.). This means\nthat a tagged inode may or may not have post-EOF blocks after a\nperiod of time. The tag is eventually cleared when the inode is\nreleased or reclaimed.\n\nSigned-off-by: Brian Foster \u003cbfoster@redhat.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "69a58a43f74eb2cb23d9bce2524dae33c289a40f",
      "tree": "e5690e216b862dfd2d2fc47c2ade6cf7caaf94fa",
      "parents": [
        "009507b052fa391618eccf9e8c9f484407fd9018"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Oct 09 14:11:45 2012 -0500"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Nov 07 15:27:27 2012 -0600"
      },
      "message": "xfs: report projid32bit feature in geometry call\n\nWhen xfs gained the projid32bit feature, it was never added to\nthe FSGEOMETRY ioctl feature flags, so it\u0027s not queryable without\nthis patch.\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nReviewed-by: Carlos Maiolino \u003ccmaiolino@redhat.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "009507b052fa391618eccf9e8c9f484407fd9018",
      "tree": "427a03552f9fe47a478aed228253c306ecc6cbee",
      "parents": [
        "137fff09b7924507871f8e6294dfe57b7a880332"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Nov 02 11:38:44 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Nov 07 15:27:17 2012 -0600"
      },
      "message": "xfs: fix reading of wrapped log data\n\nCommit 4439647 (\"xfs: reset buffer pointers before freeing them\") in\n3.0-rc1 introduced a regression when recovering log buffers that\nwrapped around the end of log. The second part of the log buffer at\nthe start of the physical log was being read into the header buffer\nrather than the data buffer, and hence recovery was seeing garbage\nin the data buffer when it got to the region of the log buffer that\nwas incorrectly read.\n\nCc: \u003cstable@vger.kernel.org\u003e # 3.0.x, 3.2.x, 3.4.x 3.6.x\nReported-by: Torsten Kaiser \u003cjust.for.lkml@googlemail.com\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "137fff09b7924507871f8e6294dfe57b7a880332",
      "tree": "6b920a724d4ecef61ce0dd69e38e25d94bbb6a66",
      "parents": [
        "b6aff29f3af7437635ec3d66af9115bb17ba561f"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Fri Nov 02 14:23:12 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Nov 07 15:26:53 2012 -0600"
      },
      "message": "xfs: fix buffer shudown reference count mismatch\n\nWhen we shut down the filesystem, we have to unpin and free all the\nbuffers currently active in the CIL. To do this we unpin and remove\nthem in one operation as a result of a failed iclogbuf write. For\nbuffers, we do this removal via a simultated IO completion of after\nmarking the buffer stale.\n\nAt the time we do this, we have two references to the buffer - the\nactive LRU reference and the buf log item.  The LRU reference is\nremoved by marking the buffer stale, and the active CIL reference is\nby the xfs_buf_iodone() callback that is run by\nxfs_buf_do_callbacks() during ioend processing (via the bp-\u003eb_iodone\ncallback).\n\nHowever, ioend processing requires one more reference - that of the\nIO that it is completing. We don\u0027t have this reference, so we free\nthe buffer prematurely and use it after it is freed. For buffers\nmarked with XBF_ASYNC, this leads to assert failures in\nxfs_buf_rele() on debug kernels because the b_hold count is zero.\n\nFix this by making sure we take the necessary IO reference before\nstarting IO completion processing on the stale buffer, and set the\nXBF_ASYNC flag to ensure that IO completion processing removes all\nthe active references from the buffer to ensure it is fully torn\ndown.\n\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n"
    },
    {
      "commit": "b6aff29f3af7437635ec3d66af9115bb17ba561f",
      "tree": "11602d25191a123cdea00f18d9ea6c65518d7b74",
      "parents": [
        "4c05f9ad4d168098b7ce3ffa7098283f94811ed6"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Nov 02 11:38:42 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Nov 07 14:15:48 2012 -0600"
      },
      "message": "xfs: don\u0027t vmap inode cluster buffers during free\n\nInode buffers do not need to be mapped as inodes are read or written\ndirectly from/to the pages underlying the buffer. This fixes a\nregression introduced by commit 611c994 (\"xfs: make XBF_MAPPED the\ndefault behaviour\").\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "4c05f9ad4d168098b7ce3ffa7098283f94811ed6",
      "tree": "deb8b75f28f1bf87af4c85b559bb1e5da26599ec",
      "parents": [
        "c99abb8f560798625323c7b21d5636259017825d"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Nov 02 11:38:41 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Nov 07 14:13:30 2012 -0600"
      },
      "message": "xfs: invalidate allocbt blocks moved to the free list\n\nWhen we free a block from the alloc btree tree, we move it to the\nfreelist held in the AGFL and mark it busy in the busy extent tree.\nThis typically happens when we merge btree blocks.\n\nOnce the transaction is committed and checkpointed, the block can\nremain on the free list for an indefinite amount of time.  Now, this\nisn\u0027t the end of the world at this point - if the free list is\nshortened, the buffer is invalidated in the transaction that moves\nit back to free space. If the buffer is allocated as metadata from\nthe free list, then all the modifications getted logged, and we have\nno issues, either. And if it gets allocated as userdata direct from\nthe freelist, it gets invalidated and so will never get written.\n\nHowever, during the time it sits on the free list, pressure on the\nlog can cause the AIL to be pushed and the buffer that covers the\nblock gets pushed for write. IOWs, we end up writing a freed\nmetadata block to disk. Again, this isn\u0027t the end of the world\nbecause we know from the above we are only writing to free space.\n\nThe problem, however, is for validation callbacks. If the block was\non old btree root block, then the level of the block is going to be\nhigher than the current tree root, and so will fail validation.\nThere may be other inconsistencies in the block as well, and\ncurrently we don\u0027t care because the block is in free space. Shutting\ndown the filesystem because a freed block doesn\u0027t pass write\nvalidation, OTOH, is rather unfriendly.\n\nSo, make sure we always invalidate buffers as they move from the\nfree space trees to the free list so that we guarantee they never\nget written to disk while on the free list.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Phil White \u003cpwhite@sgi.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n"
    },
    {
      "commit": "cd856db69c88db438215244571957d812bdc6813",
      "tree": "bcd2dd9011439cb7ea072386c7f6575a225b7579",
      "parents": [
        "531c3bdc8662e1a83f8ec80dc3346b1284877c0a"
      ],
      "author": {
        "name": "Carlos Maiolino",
        "email": "cmaiolino@redhat.com",
        "time": "Sat Oct 20 11:08:19 2012 -0300"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Fri Nov 02 17:13:12 2012 -0500"
      },
      "message": "xfs: Update inode alloc comments\n\nI found some out of date comments while studying the inode allocation\ncode, so I believe it\u0027s worth to have these comments updated.\n\nIt basically rewrites the comment regarding to \"call_again\" variable,\nwhich is not used anymore, but instead, callers of xfs_ialloc() decides\nif it needs to be called again relying only if ialloc_context is NULL or\nnot.\n\nAlso did some small changes in another comment that I thought to be\npertinent to the current behaviour of these functions and some alignment\non both comments.\n\nSigned-off-by: Carlos Maiolino \u003ccmaiolino@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "531c3bdc8662e1a83f8ec80dc3346b1284877c0a",
      "tree": "31598dfab767ea9ce3ca7ea7f8d0b5fdb56821b7",
      "parents": [
        "1375cb65e87b327a8dd4f920c3e3d837fb40e9c2"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Thu Oct 25 17:22:30 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Fri Nov 02 16:18:45 2012 -0500"
      },
      "message": "xfs: silence uninitialised f.file warning.\n\nUninitialised variable build warning introduced by 2903ff0 (\"switch\nsimple cases of fget_light to fdget\"), gcc is not smart enough to\nwork out that the variable is not used uninitialised, and the commit\nremoved the initialisation at declaration that the old variable had.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "1375cb65e87b327a8dd4f920c3e3d837fb40e9c2",
      "tree": "65864cb563db56e2bb8fe2e63f2c21d4e61a01c4",
      "parents": [
        "e04426b9202bccd4cfcbc70b2fa2aeca1c86d8f5"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Oct 09 14:50:52 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Fri Nov 02 15:42:35 2012 -0500"
      },
      "message": "xfs: growfs: don\u0027t read garbage for new secondary superblocks\n\nWhen updating new secondary superblocks in a growfs operation, the\nsuperblock buffer is read from the newly grown region of the\nunderlying device. This is not guaranteed to be zero, so violates\nthe underlying assumption that the unused parts of superblocks are\nzero filled. Get a new buffer for these secondary superblocks to\nensure that the unused regions are zero filled correctly.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Carlos Maiolino \u003ccmaiolino@redhat.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n"
    },
    {
      "commit": "e04426b9202bccd4cfcbc70b2fa2aeca1c86d8f5",
      "tree": "2bab7921c9327c508d2ea207c9ef781a5df61874",
      "parents": [
        "2455881c0b52f87be539c4c7deab1afff4d8a560"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Oct 05 11:06:59 2012 +1000"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Thu Oct 18 17:42:48 2012 -0500"
      },
      "message": "xfs: move allocation stack switch up to xfs_bmapi_allocate\n\nSwitching stacks are xfs_alloc_vextent can cause deadlocks when we\nrun out of worker threads on the allocation workqueue. This can\noccur because xfs_bmap_btalloc can make multiple calls to\nxfs_alloc_vextent() and even if xfs_alloc_vextent() fails it can\nreturn with the AGF locked in the current allocation transaction.\n\nIf we then need to make another allocation, and all the allocation\nworker contexts are exhausted because the are blocked waiting for\nthe AGF lock, holder of the AGF cannot get it\u0027s xfs-alloc_vextent\nwork completed to release the AGF.  Hence allocation effectively\ndeadlocks.\n\nTo avoid this, move the stack switch one layer up to\nxfs_bmapi_allocate() so that all of the allocation attempts in a\nsingle switched stack transaction occur in a single worker context.\nThis avoids the problem of an allocation being blocked waiting for\na worker thread whilst holding the AGF.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "2455881c0b52f87be539c4c7deab1afff4d8a560",
      "tree": "ef2ed6c1f0f10727c929838992d89d54bb821993",
      "parents": [
        "a00416844b8f4b0106344bdfd90fe45a854b1d05"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Oct 05 11:06:58 2012 +1000"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Thu Oct 18 17:41:56 2012 -0500"
      },
      "message": "xfs: introduce XFS_BMAPI_STACK_SWITCH\n\nCertain allocation paths through xfs_bmapi_write() are in situations\nwhere we have limited stack available. These are almost always in\nthe buffered IO writeback path when convertion delayed allocation\nextents to real extents.\n\nThe current stack switch occurs for userdata allocations, which\nmeans we also do stack switches for preallocation, direct IO and\nunwritten extent conversion, even those these call chains have never\nbeen implicated in a stack overrun.\n\nHence, let\u0027s target just the single stack overun offended for stack\nswitches. To do that, introduce a XFS_BMAPI_STACK_SWITCH flag that\nthe caller can pass xfs_bmapi_write() to indicate it should switch\nstacks if it needs to do allocation.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "a00416844b8f4b0106344bdfd90fe45a854b1d05",
      "tree": "3bfc6d51dc7d4a118d1f67bdb6df1acd5e7741ed",
      "parents": [
        "d35e88faa3b0fc2cea35c3b2dca358b5cd09b45f"
      ],
      "author": {
        "name": "Mark Tinguely",
        "email": "tinguely@sgi.com",
        "time": "Thu Sep 20 13:16:45 2012 -0500"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Thu Oct 18 17:34:16 2012 -0500"
      },
      "message": "xfs: zero allocation_args on the kernel stack\n\nZero the kernel stack space that makes up the xfs_alloc_arg structures.\n\nSigned-off-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nReviewed-by: Ben Myers \u003cbpm@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "d35e88faa3b0fc2cea35c3b2dca358b5cd09b45f",
      "tree": "8aa8c87b9c31b0180fa08c905a6dca84223adca2",
      "parents": [
        "33479e0542df066fb0b47df18780e93bfe6e0dc5"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Oct 08 21:56:12 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Oct 17 13:43:35 2012 -0500"
      },
      "message": "xfs: only update the last_sync_lsn when a transaction completes\n\nThe log write code stamps each iclog with the current tail LSN in\nthe iclog header so that recovery knows where to find the tail of\nthelog once it has found the head. Normally this is taken from the\nfirst item on the AIL - the log item that corresponds to the oldest\nactive item in the log.\n\nThe problem is that when the AIL is empty, the tail lsn is dervied\nfrom the the l_last_sync_lsn, which is the LSN of the last iclog to\nbe written to the log. In most cases this doesn\u0027t happen, because\nthe AIL is rarely empty on an active filesystem. However, when it\ndoes, it opens up an interesting case when the transaction being\ncommitted to the iclog spans multiple iclogs.\n\nThat is, the first iclog is stamped with the l_last_sync_lsn, and IO\nis issued. Then the next iclog is setup, the changes copied into the\niclog (takes some time), and then the l_last_sync_lsn is stamped\ninto the header and IO is issued. This is still the same\ntransaction, so the tail lsn of both iclogs must be the same for log\nrecovery to find the entire transaction to be able to replay it.\n\nThe problem arises in that the iclog buffer IO completion updates\nthe l_last_sync_lsn with it\u0027s own LSN. Therefore, If the first iclog\ncompletes it\u0027s IO before the second iclog is filled and has the tail\nlsn stamped in it, it will stamp the LSN of the first iclog into\nit\u0027s tail lsn field. If the system fails at this point, log recovery\nwill not see a complete transaction, so the transaction will no be\nreplayed.\n\nThe fix is simple - the l_last_sync_lsn is updated when a iclog\nbuffer IO completes, and this is incorrect. The l_last_sync_lsn\nshoul dbe updated when a transaction is completed by a iclog buffer\nIO. That is, only iclog buffers that have transaction commit\ncallbacks attached to them should update the l_last_sync_lsn. This\nmeans that the last_sync_lsn will only move forward when a commit\nrecord it written, not in the middle of a large transaction that is\nrolling through multiple iclog buffers.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "33479e0542df066fb0b47df18780e93bfe6e0dc5",
      "tree": "24efe5cd35b6d80af165c0148d462fb61f50a456",
      "parents": [
        "fa96acadf1eb712fca6d59922ad93787c87e44ec"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Oct 08 21:56:11 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Oct 17 13:42:25 2012 -0500"
      },
      "message": "xfs: remove xfs_iget.c\n\nThe inode cache functions remaining in xfs_iget.c can be moved to xfs_icache.c\nalong with the other inode cache functions. This removes all functionality from\nxfs_iget.c, so the file can simply be removed.\n\nThis move results in various functions now only having the scope of a single\nfile (e.g. xfs_inode_free()), so clean up all the definitions and exported\nprototypes in xfs_icache.[ch] and xfs_inode.h appropriately.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "fa96acadf1eb712fca6d59922ad93787c87e44ec",
      "tree": "6fd1e828965e0b7bdb66e99ac532547272f7c217",
      "parents": [
        "6d8b79cfca39399ef9115fb65dde85993455c9a3"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Oct 08 21:56:10 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Oct 17 13:40:54 2012 -0500"
      },
      "message": "xfs: move inode locking functions to xfs_inode.c\n\nxfs_ilock() and friends really aren\u0027t related to the inode cache in\nany way, so move them to xfs_inode.c with all the other inode\nrelated functionality.\n\nWhile doing this move, move the xfs_ilock() tracepoints to *before*\nthe lock is taken so that when a hang on a lock occurs we have\nevents to indicate which process and what inode we were trying to\nlock when the hang occurred. This is much better than the current\nsilence we get on a hang...\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "6d8b79cfca39399ef9115fb65dde85993455c9a3",
      "tree": "c4702e765ee5b3d10f496c42148e317d7ee98ed8",
      "parents": [
        "c75921a72a7c4bb73a5e09a697a672722e5543f1"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Oct 08 21:56:09 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Oct 17 13:40:09 2012 -0500"
      },
      "message": "xfs: rename xfs_sync.[ch] to xfs_icache.[ch]\n\nxfs_sync.c now only contains inode reclaim functions and inode cache\niteration functions. It is not related to sync operations anymore.\nRename to xfs_icache.c to reflect it\u0027s contents and prepare for\nconsolidation with the other inode cache file that exists\n(xfs_iget.c).\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "c75921a72a7c4bb73a5e09a697a672722e5543f1",
      "tree": "ed46f37241cdc860ffc691f6d71159333c434a83",
      "parents": [
        "c7eea6f7adca4501d2c2db7f0f7c9dc88efac95e"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Oct 08 21:56:08 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Oct 17 13:39:14 2012 -0500"
      },
      "message": "xfs: xfs_quiesce_attr() should quiesce the log like unmount\n\nxfs_quiesce_attr() is supposed to leave the log empty with an\nunmount record written. Right now it does not wait for the AIL to be\nemptied before writing the unmount record, not does it wait for\nmetadata IO completion, either. Fix it to use the same method and\ncode as xfs_log_unmount().\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "c7eea6f7adca4501d2c2db7f0f7c9dc88efac95e",
      "tree": "0018d3cd55958ed32f3cd3e6a57d82b642e24fe8",
      "parents": [
        "34061f5c420561dd42addd252811a1fa4b0ac69b"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Oct 08 21:56:07 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Oct 17 13:30:20 2012 -0500"
      },
      "message": "xfs: move xfs_quiesce_attr() into xfs_super.c\n\nBoth callers of xfs_quiesce_attr() are in xfs_super.c, and there\u0027s\nnothing really sync-specific about this functionality so it doesn\u0027t\nreally matter where it lives. Move it to benext to it\u0027s callers, so\nall the remount/sync_fs code is in the one place.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "34061f5c420561dd42addd252811a1fa4b0ac69b",
      "tree": "e0be8f994c6abd2407a1cb8c805291cea1d95712",
      "parents": [
        "5889608df35783590251cfd440fa5d48f1855179"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Oct 08 21:56:06 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Oct 17 12:28:47 2012 -0500"
      },
      "message": "xfs: xfs_sync_fsdata is redundant\n\nWhy do we need to write the superblock to disk once we\u0027ve written\nall the data?  We don\u0027t actually - the reasons for doing this are\nlost in the mists of time, and go back to the way Irix used to drive\nVFS flushing.\n\nOn linux, this code is only called from two contexts: remount and\n.sync_fs. In the remount case, the call is followed by a metadata\nsync, which unpins and writes the superblock.  In the sync_fs case,\nwe only need to force the log to disk to ensure that the superblock\nis correctly on disk, so we don\u0027t actually need to write it. Hence\nthe functionality is either redundant or superfluous and thus can be\nremoved.\n\nSeeing as xfs_quiesce_data is essentially now just a log force,\nremove it as well and fold the code back into the two callers.\nNeither of them need the log covering check, either, as that is\nredundant for the remount case, and unnecessary for the .sync_fs\ncase.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "5889608df35783590251cfd440fa5d48f1855179",
      "tree": "4284177945081868e2756d27ae9706e1cc9ee357",
      "parents": [
        "9aa05000f2b7cab4be582afba64af10b2d74727e"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Oct 08 21:56:05 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Oct 17 12:19:27 2012 -0500"
      },
      "message": "xfs: syncd workqueue is no more\n\nWith the syncd functions moved to the log and/or removed, the syncd\nworkqueue is the only remaining bit left. It is used by the log\ncovering/ail pushing work, as well as by the inode reclaim work.\n\nGiven how cheap workqueues are these days, give the log and inode\nreclaim work their own work queues and kill the syncd work queue.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "9aa05000f2b7cab4be582afba64af10b2d74727e",
      "tree": "530f939b017f5c5e8729edc28da0773c20b1986b",
      "parents": [
        "cf2931db2d189ce0583be7ae880d7e3f8c15f623"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Oct 08 21:56:04 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Oct 17 12:01:25 2012 -0500"
      },
      "message": "xfs: xfs_sync_data is redundant.\n\nWe don\u0027t do any data writeback from XFS any more - the VFS is\ncompletely responsible for that, including for freeze. We can\nreplace the remaining caller with a VFS level function that\nachieves the same thing, but without conflicting with current\nwriteback work.\n\nThis means we can remove the flush_work and xfs_flush_inodes() - the\nVFS functionality completely replaces the internal flush queue for\ndoing this writeback work in a separate context to avoid stack\noverruns.\n\nThis does have one complication - it cannot be called with page\nlocks held.  Hence move the flushing of delalloc space when ENOSPC\noccurs back up into xfs_file_aio_buffered_write when we don\u0027t hold\nany locks that will stall writeback.\n\nUnfortunately, writeback_inodes_sb_if_idle() is not sufficient to\ntrigger delalloc conversion fast enough to prevent spurious ENOSPC\nwhent here are hundreds of writers, thousands of small files and GBs\nof free RAM.  Hence we need to use sync_sb_inodes() to block callers\nwhile we wait for writeback like the previous xfs_flush_inodes\nimplementation did.\n\nThat means we have to hold the s_umount lock here, but because this\ncall can nest inside i_mutex (the parent directory in the create\ncase, held by the VFS), we have to use down_read_trylock() to avoid\npotential deadlocks. In practice, this trylock will succeed on\nalmost every attempt as unmount/remount type operations are\nexceedingly rare.\n\nNote: we always need to pass a count of zero to\ngeneric_file_buffered_write() as the previously written byte count.\nWe only do this by accident before this patch by the virtue of ret\nalways being zero when there are no errors. Make this explicit\nrather than needing to specifically zero ret in the ENOSPC retry\ncase.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nTested-by: Brian Foster \u003cbfoster@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "cf2931db2d189ce0583be7ae880d7e3f8c15f623",
      "tree": "c775754810bd0657fe770f6fedb429f0cc6dc586",
      "parents": [
        "f661f1e0bf5002bdcc8b5810ad0a184a1841537f"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Oct 08 21:56:03 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Oct 17 11:57:10 2012 -0500"
      },
      "message": "xfs: Bring some sanity to log unmounting\n\nWhen unmounting the filesystem, there are lots of operations that\nneed to be done in a specific order, and they are spread across\nacross a couple of functions. We have to drain the AIL before we\nwrite the unmount record, and we have to shut down the background\nlog work before we do either of them.\n\nBut this is all split haphazardly across xfs_unmountfs() and\nxfs_log_unmount(). Move all the AIL flushing and log manipulations\nto xfs_log_unmount() so that the responisbilities of each function\nis clear and the operations they perform obvious.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "f661f1e0bf5002bdcc8b5810ad0a184a1841537f",
      "tree": "fe6a0e5f14e3b2c0c6e01dcddbf6de1b8b3de26e",
      "parents": [
        "7f7bebefba152c5bdfe961cd2e97e8695a32998c"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Oct 08 21:56:02 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Oct 17 11:53:29 2012 -0500"
      },
      "message": "xfs: sync work is now only periodic log work\n\nThe only thing the periodic sync work does now is flush the AIL and\nidle the log. These are really functions of the log code, so move\nthe work to xfs_log.c and rename it appropriately.\n\nThe only wart that this leaves behind is the xfssyncd_centisecs\nsysctl, otherwise the xfssyncd is dead. Clean up any comments that\nrelated to xfssyncd to reflect it\u0027s passing.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "7f7bebefba152c5bdfe961cd2e97e8695a32998c",
      "tree": "07aed46523a0bfa02e6d25f025861b8260e89f66",
      "parents": [
        "7e18530bef6a18a5479690ae7e8256319ecf1300"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Oct 08 21:56:01 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Oct 17 11:48:29 2012 -0500"
      },
      "message": "xfs: don\u0027t run the sync work if the filesystem is read-only\n\nIf the filesystem is mounted or remounted read-only, stop the sync\nworker that tries to flush or cover the log if the filesystem is\ndirty. It\u0027s read-only, so it isn\u0027t dirty. Restart it on a remount,rw\nas necessary. This avoids the need for RO checks in the work.\n\nSimilarly, stop the sync work when the filesystem is frozen, and\nstart it again when the filesysetm is thawed. This avoids the need\nfor special freeze checks in the work.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "7e18530bef6a18a5479690ae7e8256319ecf1300",
      "tree": "01b336aed89889bf654327346742956abe0a5d45",
      "parents": [
        "33c7a2bc48a81fa714572f8ce29f29bc17e6faf0"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Oct 08 21:56:00 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Oct 17 11:25:06 2012 -0500"
      },
      "message": "xfs: rationalise xfs_mount_wq users\n\nInstead of starting and stopping background work on the xfs_mount_wq\nall at the same time, separate them to where they really are needed\nto start and stop.\n\nThe xfs_sync_worker, only needs to be started after all the mount\nprocessing has completed successfully, while it needs to be stopped\nbefore the log is unmounted.\n\nThe xfs_reclaim_worker is started on demand, and can be\nstopped before the unmount process does it\u0027s own inode reclaim pass.\n\nThe xfs_flush_inodes work is run on demand, and so we really only\nneed to ensure that it has stopped running before we start\nprocessing an unmount, freeze or remount,ro.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "33c7a2bc48a81fa714572f8ce29f29bc17e6faf0",
      "tree": "df688d3a9303bd86f2f9eeb51f6368f1b5672dca",
      "parents": [
        "ddffeb8c4d0331609ef2581d84de4d763607bd37"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Oct 08 21:55:59 2012 +1100"
      },
      "committer": {
        "name": "Ben Myers",
        "email": "bpm@sgi.com",
        "time": "Wed Oct 17 11:14:19 2012 -0500"
      },
      "message": "xfs: xfs_syncd_stop must die\n\nxfs_syncd_start and xfs_syncd_stop tie a bunch of unrelated\nfunctionailty together that actually have different start and stop\nrequirements. Kill these functions and open code the start/stop\nmethods for each of the background functions.\n\nSubsequent patches will move the start/stop functions around to the\ncorrect places to avoid races and shutdown issues.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Mark Tinguely \u003ctinguely@sgi.com\u003e\nSigned-off-by: Ben Myers \u003cbpm@sgi.com\u003e\n\n"
    },
    {
      "commit": "d25282d1c9b9bc4cda7f9d3c0205108e99aa7a9d",
      "tree": "f414482d768b015a609924293b779b4ad0b8f764",
      "parents": [
        "b6eea87fc6850d3531a64a27d2323a4498cd4e43",
        "dbadc17683e6c673a69b236c0f041b931cc55c42"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 14 13:39:34 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 14 13:39:34 2012 -0700"
      },
      "message": "Merge branch \u0027modules-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux\n\nPull module signing support from Rusty Russell:\n \"module signing is the highlight, but it\u0027s an all-over David Howells frenzy...\"\n\nHmm \"Magrathea: Glacier signing key\". Somebody has been reading too much HHGTTG.\n\n* \u0027modules-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux: (37 commits)\n  X.509: Fix indefinite length element skip error handling\n  X.509: Convert some printk calls to pr_devel\n  asymmetric keys: fix printk format warning\n  MODSIGN: Fix 32-bit overflow in X.509 certificate validity date checking\n  MODSIGN: Make mrproper should remove generated files.\n  MODSIGN: Use utf8 strings in signer\u0027s name in autogenerated X.509 certs\n  MODSIGN: Use the same digest for the autogen key sig as for the module sig\n  MODSIGN: Sign modules during the build process\n  MODSIGN: Provide a script for generating a key ID from an X.509 cert\n  MODSIGN: Implement module signature checking\n  MODSIGN: Provide module signing public keys to the kernel\n  MODSIGN: Automatically generate module signing keys if missing\n  MODSIGN: Provide Kconfig options\n  MODSIGN: Provide gitignore and make clean rules for extra files\n  MODSIGN: Add FIPS policy\n  module: signature checking hook\n  X.509: Add a crypto key parser for binary (DER) X.509 certificates\n  MPILIB: Provide a function to read raw data into an MPI\n  X.509: Add an ASN.1 decoder\n  X.509: Add simple ASN.1 grammar compiler\n  ...\n"
    },
    {
      "commit": "09a9ad6a1ff86836e5280c39300176c4758bb459",
      "tree": "27967b60cbb53def07f4ceb8365efb8206c2a777",
      "parents": [
        "9db908806b85c1430150fbafe269a7b21b07d15d",
        "e9069f470803eeb5e243a05bc717452c6218bd71"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 13 13:23:39 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 13 13:23:39 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace\n\nPull user namespace compile fixes from Eric W Biederman:\n \"This tree contains three trivial fixes.  One compiler warning, one\n  thinko fix, and one build fix\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace:\n  btrfs: Fix compilation with user namespace support enabled\n  userns: Fix posix_acl_file_xattr_userns gid conversion\n  userns: Properly print bluetooth socket uids\n"
    },
    {
      "commit": "bd81ccea8558daab570d70d2c23746413f26cecf",
      "tree": "a3a75dde2dc3cf26c74353b21792da30d65d7c13",
      "parents": [
        "98260daa184c4a171834463cf85ab3a2c509d983",
        "a9ca4043d074509b9d15003fbcb068d3cdae85a4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 13 10:53:54 2012 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 13 10:53:54 2012 +0900"
      },
      "message": "Merge branch \u0027for-3.7\u0027 of git://linux-nfs.org/~bfields/linux\n\nPull nfsd update from J Bruce Fields:\n \"Another relatively quiet cycle.  There was some progress on my\n  remaining 4.1 todo\u0027s, but a couple of them were just of the form\n  \"check that we do X correctly\", so didn\u0027t have much affect on the\n  code.\n\n  Other than that, a bunch of cleanup and some bugfixes (including an\n  annoying NFSv4.0 state leak and a busy-loop in the server that could\n  cause it to peg the CPU without making progress).\"\n\n* \u0027for-3.7\u0027 of git://linux-nfs.org/~bfields/linux: (46 commits)\n  UAPI: (Scripted) Disintegrate include/linux/sunrpc\n  UAPI: (Scripted) Disintegrate include/linux/nfsd\n  nfsd4: don\u0027t allow reclaims of expired clients\n  nfsd4: remove redundant callback probe\n  nfsd4: expire old client earlier\n  nfsd4: separate session allocation and initialization\n  nfsd4: clean up session allocation\n  nfsd4: minor free_session cleanup\n  nfsd4: new_conn_from_crses should only allocate\n  nfsd4: separate connection allocation and initialization\n  nfsd4: reject bad forechannel attrs earlier\n  nfsd4: enforce per-client sessions/no-sessions distinction\n  nfsd4: set cl_minorversion at create time\n  nfsd4: don\u0027t pin clientids to pseudoflavors\n  nfsd4: fix bind_conn_to_session xdr comment\n  nfsd4: cast readlink() bug argument\n  NFSD: pass null terminated buf to kstrtouint()\n  nfsd: remove duplicate init in nfsd4_cb_recall\n  nfsd4: eliminate redundant nfs4_free_stateid\n  fs/nfsd/nfs4idmap.c: adjust inconsistent IS_ERR and PTR_ERR\n  ...\n"
    },
    {
      "commit": "f81700bd831efcd12eb7f0e66b24b16c2ad00a32",
      "tree": "9763e5c46e31d2500b1ba9186b882622739c9295",
      "parents": [
        "7950e3852ab86826b7349a535d2e8b0000340d7f"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 16:43:21 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 20:15:10 2012 -0400"
      },
      "message": "procfs: don\u0027t need a PATH_MAX allocation to hold a string representation of an int\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7950e3852ab86826b7349a535d2e8b0000340d7f",
      "tree": "b07bcf28bf0fc3bdc610595287250c3c3a3d974a",
      "parents": [
        "adb5c2473d3f91526c79db972aafb20a56d3fbb3"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 16:43:13 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 20:15:10 2012 -0400"
      },
      "message": "vfs: embed struct filename inside of names_cache allocation if possible\n\nIn the common case where a name is much smaller than PATH_MAX, an extra\nallocation for struct filename is unnecessary. Before allocating a\nseparate one, try to embed the struct filename inside the buffer first. If\nit turns out that that\u0027s not long enough, then fall back to allocating a\nseparate struct filename and redoing the copy.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "adb5c2473d3f91526c79db972aafb20a56d3fbb3",
      "tree": "f0427a11a91af2f5a5d0037ce52c32633019120b",
      "parents": [
        "669abf4e5539c8aa48bf28c965be05c0a7b58a27"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 16:43:13 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 20:15:09 2012 -0400"
      },
      "message": "audit: make audit_inode take struct filename\n\nKeep a pointer to the audit_names \"slot\" in struct filename.\n\nHave all of the audit_inode callers pass a struct filename ponter to\naudit_inode instead of a string pointer. If the aname field is already\npopulated, then we can skip walking the list altogether and just use it\ndirectly.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "669abf4e5539c8aa48bf28c965be05c0a7b58a27",
      "tree": "5b8e9e17c4f03ddd719c9c2089d829e2a040854a",
      "parents": [
        "873f1eedc1b983d772283279192c4ca2f60e8482"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 16:43:10 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 20:15:09 2012 -0400"
      },
      "message": "vfs: make path_openat take a struct filename pointer\n\n...and fix up the callers. For do_file_open_root, just declare a\nstruct filename on the stack and fill out the .name field. For\ndo_filp_open, make it also take a struct filename pointer, and fix up its\ncallers to call it appropriately.\n\nFor filp_open, add a variant that takes a struct filename pointer and turn\nfilp_open into a wrapper around it.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "873f1eedc1b983d772283279192c4ca2f60e8482",
      "tree": "dc5ff4dabb933c3392917602c0f6aeb00d25e6ea",
      "parents": [
        "7ac86265dc8f665cc49d6e60a125e608cd2fca14"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 15:25:29 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 20:15:08 2012 -0400"
      },
      "message": "vfs: turn do_path_lookup into wrapper around struct filename variant\n\n...and make the user_path callers use that variant instead.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7ac86265dc8f665cc49d6e60a125e608cd2fca14",
      "tree": "9e7941e2d8dfb2106c5fb28504531dafc72e14e6",
      "parents": [
        "91a27b2a756784714e924e5e854b919273082d26"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 15:25:28 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 20:15:08 2012 -0400"
      },
      "message": "audit: allow audit code to satisfy getname requests from its names_list\n\nCurrently, if we call getname() on a userland string more than once,\nwe\u0027ll get multiple copies of the string and multiple audit_names\nrecords.\n\nAdd a function that will allow the audit_names code to satisfy getname\nrequests using info from the audit_names list, avoiding a new allocation\nand audit_names records.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "91a27b2a756784714e924e5e854b919273082d26",
      "tree": "3913246b7d6e62703ec915f481e3a7159393f0f0",
      "parents": [
        "8e377d15078a501c4da98471f56396343c407d92"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 15:25:28 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 20:14:55 2012 -0400"
      },
      "message": "vfs: define struct filename and have getname() return it\n\ngetname() is intended to copy pathname strings from userspace into a\nkernel buffer. The result is just a string in kernel space. It would\nhowever be quite helpful to be able to attach some ancillary info to\nthe string.\n\nFor instance, we could attach some audit-related info to reduce the\namount of audit-related processing needed. When auditing is enabled,\nwe could also call getname() on the string more than once and not\nneed to recopy it from userspace.\n\nThis patchset converts the getname()/putname() interfaces to return\na struct instead of a string. For now, the struct just tracks the\nstring in kernel space and the original userland pointer for it.\n\nLater, we\u0027ll add other information to the struct as it becomes\nconvenient.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e9069f470803eeb5e243a05bc717452c6218bd71",
      "tree": "0e1dbceee504f04ad6f5c2ecc44e91021338280b",
      "parents": [
        "ea1fd7776e7ed41ee4ddcff32104db5c7b372309"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Fri Oct 12 14:25:24 2012 -0700"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Fri Oct 12 15:01:42 2012 -0700"
      },
      "message": "btrfs: Fix compilation with user namespace support enabled\n\nWhen compiling with user namespace support btrfs fails like:\n\nfs/btrfs/tree-log.c: In function ‘fill_inode_item’:\nfs/btrfs/tree-log.c:2955:2: error: incompatible type for argument 3 of ‘btrfs_set_inode_uid’\nfs/btrfs/ctree.h:2026:1: note: expected ‘u32’ but argument is of type ‘kuid_t’\nfs/btrfs/tree-log.c:2956:2: error: incompatible type for argument 3 of ‘btrfs_set_inode_gid’\nfs/btrfs/ctree.h:2027:1: note: expected ‘u32’ but argument is of type ‘kgid_t’\n\nFix this by using i_uid_read and i_gid_read in\n\nCc: Chris Mason \u003cchris.mason@fusionio.com\u003e\nCc: Josef Bacik \u003cjbacik@fusionio.com\u003e\nSigned-off-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "ea1fd7776e7ed41ee4ddcff32104db5c7b372309",
      "tree": "a8ca47d6d95e55a2a0b1eb0a947b6a0d4064dbb4",
      "parents": [
        "1bbb3095a5912be4b9c90397ef2182a5a328865b"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Oct 09 15:11:55 2012 -0700"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Fri Oct 12 13:16:48 2012 -0700"
      },
      "message": "userns: Fix posix_acl_file_xattr_userns gid conversion\n\nThe code needs to be from_kgid(make_kgid(...)...) not\nfrom_kuid(make_kgid(...)...). Doh!\n\nReported-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "8e377d15078a501c4da98471f56396343c407d92",
      "tree": "fa2a1611a8a49cc77d86bfe19d43b45a266b376a",
      "parents": [
        "cfd4da175599938f21a81cdd80df02fa4151dcba"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 16:43:13 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 00:32:09 2012 -0400"
      },
      "message": "vfs: unexport getname and putname symbols\n\nI see no callers in module code.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4fa6b5ecbf092c6ee752ece8a55d71f663d23254",
      "tree": "6143912dc73b457a3be72faf31d46d855d3f87c3",
      "parents": [
        "e3d6b07b8ba161f638b026feba0c3c97875d7f1c"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 15:25:25 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 00:32:03 2012 -0400"
      },
      "message": "audit: overhaul __audit_inode_child to accomodate retrying\n\nIn order to accomodate retrying path-based syscalls, we need to add a\nnew \"type\" argument to audit_inode_child. This will tell us whether\nwe\u0027re looking for a child entry that represents a create or a delete.\n\nIf we find a parent, don\u0027t automatically assume that we need to create a\nnew entry. Instead, use the information we have to try to find an\nexisting entry first. Update it if one is found and create a new one if\nnot.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bfcec7087458812f575d9022b2d151641f34ee84",
      "tree": "6c0f7dd3b016992da8d113ceeaae404c6abc03a1",
      "parents": [
        "78e2e802a8519031e5858595070b39713e26340d"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 15:25:23 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 00:32:01 2012 -0400"
      },
      "message": "audit: set the name_len in audit_inode for parent lookups\n\nCurrently, this gets set mostly by happenstance when we call into\naudit_inode_child. While that might be a little more efficient, it seems\nwrong. If the syscall ends up failing before audit_inode_child ever gets\ncalled, then you\u0027ll have an audit_names record that shows the full path\nbut has the parent inode info attached.\n\nFix this by passing in a parent flag when we call audit_inode that gets\nset to the value of LOOKUP_PARENT. We can then fix up the pathname for\nthe audit entry correctly from the get-go.\n\nWhile we\u0027re at it, clean up the no-op macro for audit_inode in the\n!CONFIG_AUDITSYSCALL case.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c43a25abba97c7d87131e71db6be24b24d7791a5",
      "tree": "0fe959853254064e17805ca111838e7869720e43",
      "parents": [
        "9cec9d68ae53aae60b4a1fca4505c75a1d026392"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 15:25:21 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 00:32:00 2012 -0400"
      },
      "message": "audit: reverse arguments to audit_inode_child\n\nMost of the callers get called with an inode and dentry in the reverse\norder. The compiler then has to reshuffle the arg registers and/or\nstack in order to pass them on to audit_inode_child.\n\nReverse those arguments for a micro-optimization.\n\nReported-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f78570dd6ad9563fffd24cc5e1808e1a1242f16e",
      "tree": "f7f7101c35a019e860233cbb0db2d2ef40bc23e0",
      "parents": [
        "79360ddd73dfe9a26f49ef4e27b8c26612929b0e"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed Oct 10 15:25:20 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 12 00:31:59 2012 -0400"
      },
      "message": "audit: remove unnecessary NULL ptr checks from do_path_lookup\n\nAs best I can tell, whenever retval \u003d\u003d 0, nd-\u003epath.dentry and nd-\u003einode\nare also non-NULL. Eliminate those checks and the superfluous\naudit_context check.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "79360ddd73dfe9a26f49ef4e27b8c26612929b0e",
      "tree": "a8b0d226e0d83ea4e3a8c27b091a7121dbb9638b",
      "parents": [
        "8213a2f3eeafdecf06dd718cb4130372263f6067",
        "98f6ef64b15a48f15062aff5d143b5d9a6ae7711"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 12 10:52:03 2012 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 12 10:52:03 2012 +0900"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull pile 2 of vfs updates from Al Viro:\n \"Stuff in this one - assorted fixes, lglock tidy-up, death to\n  lock_super().\n\n  There\u0027ll be a VFS pile tomorrow (with patches from Jeff Layton,\n  sanitizing getname() and related parts of audit and preparing for\n  ESTALE fixes), but I\u0027d rather push the stuff in this one ASAP - some\n  of the bugs closed here are quite unpleasant.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:\n  vfs: bogus warnings in fs/namei.c\n  consitify do_mount() arguments\n  lglock: add DEFINE_STATIC_LGLOCK()\n  lglock: make the per_cpu locks static\n  lglock: remove unused DEFINE_LGLOCK_LOCKDEP()\n  MAX_LFS_FILESIZE definition for 64bit needs LL...\n  tmpfs,ceph,gfs2,isofs,reiserfs,xfs: fix fh_len checking\n  vfs: drop lock/unlock super\n  ufs: drop lock/unlock super\n  sysv: drop lock/unlock super\n  hpfs: drop lock/unlock super\n  fat: drop lock/unlock super\n  ext3: drop lock/unlock super\n  exofs: drop lock/unlock super\n  dup3: Return an error when oldfd \u003d\u003d newfd.\n  fs: handle failed audit_log_start properly\n  fs: prevent use after free in auditing when symlink following was denied\n"
    },
    {
      "commit": "40924754f2cabd5d9af4bcd4dcecc362b5e0baa1",
      "tree": "fb7c4644acf882f3ac7b0ff6f0972aecd0d77663",
      "parents": [
        "cbd8aca472134e666eee87462177f1be854ebbf8",
        "2f60d628ffd042e65e0b1d3431fb3e38d6f7c1be"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 12 10:46:03 2012 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 12 10:46:03 2012 +0900"
      },
      "message": "Merge branch \u0027writeback-for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux\n\nPull writeback fixes from Fengguang Wu:\n \"Three trivial writeback fixes\"\n\n* \u0027writeback-for-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:\n  CPU hotplug, writeback: Don\u0027t call writeback_set_ratelimit() too often during hotplug\n  writeback: correct comment for move_expired_inodes()\n  backing-dev: use kstrto* in preference to simple_strtoul\n"
    },
    {
      "commit": "940e3a8dd6683a3787faf769b3df7a06f1c2fa31",
      "tree": "5f722b4a63fcaf288e2689576d75c16e0dfc700d",
      "parents": [
        "12250d843e8489ee00b5b7726da855e51694e792",
        "759f42987f98915764bad922ee123acb0eadbe33"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 12 09:59:23 2012 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 12 09:59:23 2012 +0900"
      },
      "message": "Merge tag \u0027for-linus-merge-3.7\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs\n\nPull v9fs update from Eric Van Hensbergen.\n\n* tag \u0027for-linus-merge-3.7\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs:\n  9P: Fix race between p9_write_work() and p9_fd_request()\n  9P: Fix race in p9_write_work()\n  9P: fix test at the end of p9_write_work()\n  9P: Fix race in p9_read_work()\n  9p: don\u0027t use __getname/__putname for uname/aname\n  net/9p: Check errno validity\n  fs/9p: avoid debug OOPS when reading a long symlink\n"
    },
    {
      "commit": "98f6ef64b15a48f15062aff5d143b5d9a6ae7711",
      "tree": "83220a8a4bca542c4044dd30f836c98af481125e",
      "parents": [
        "808d4e3cfdcc52b19276175464f6dbca4df13b09"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Thu Oct 11 13:20:00 2012 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 11 20:02:16 2012 -0400"
      },
      "message": "vfs: bogus warnings in fs/namei.c\n\nThe follow_link() function always initializes its *p argument,\nor returns an error, but when building with \u0027gcc -s\u0027, the compiler\ngets confused by the __always_inline attribute to the function\nand can no longer detect where the cookie was initialized.\n\nThe solution is to always initialize the pointer from follow_link,\neven in the error path. When building with -O2, this has zero impact\non generated code and adds a single instruction in the error path\nfor a -Os build on ARM.\n\nWithout this patch, building with gcc-4.6 through gcc-4.8 and\nCONFIG_CC_OPTIMIZE_FOR_SIZE results in:\n\nfs/namei.c: In function \u0027link_path_walk\u0027:\nfs/namei.c:649:24: warning: \u0027cookie\u0027 may be used uninitialized in this function [-Wuninitialized]\nfs/namei.c:1544:9: note: \u0027cookie\u0027 was declared here\nfs/namei.c: In function \u0027path_lookupat\u0027:\nfs/namei.c:649:24: warning: \u0027cookie\u0027 may be used uninitialized in this function [-Wuninitialized]\nfs/namei.c:1934:10: note: \u0027cookie\u0027 was declared here\nfs/namei.c: In function \u0027path_openat\u0027:\nfs/namei.c:649:24: warning: \u0027cookie\u0027 may be used uninitialized in this function [-Wuninitialized]\nfs/namei.c:2899:9: note: \u0027cookie\u0027 was declared here\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "808d4e3cfdcc52b19276175464f6dbca4df13b09",
      "tree": "11c319127e8c1314c1ed1a777e4284032ab5bd00",
      "parents": [
        "4b2c551f77f5a0c496e2125b1d883f4b26aabf2c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 11 11:42:01 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Oct 11 20:02:04 2012 -0400"
      },
      "message": "consitify do_mount() arguments\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a9ca4043d074509b9d15003fbcb068d3cdae85a4",
      "tree": "7da7c54ea167f7c6786c2eac7a6aecff97c77322",
      "parents": [
        "f474af7051212b4efc8267583fad9c4ebf33ccff",
        "62d98c935456ee121b03d6a68aa3091a04085b7e"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Oct 11 12:40:00 2012 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Thu Oct 11 12:41:05 2012 -0400"
      },
      "message": "Merge Trond\u0027s bugfixes\n\nMerge branch \u0027bugfixes\u0027 of git://linux-nfs.org/~trondmy/nfs-2.6 into\nfor-3.7-incoming.  Mainly needed for Bryan\u0027s \"SUNRPC: Set alloc_slot for\nbackchannel tcp ops\", without which the 4.1 server oopses.\n"
    },
    {
      "commit": "49999ab27eab6289a8e4f450e148bdab521361b2",
      "tree": "55881aee2989306431d5e98fdd3d9e09d2b5e6c7",
      "parents": [
        "14ffe009ca60856555df3aec942239d8beed74d3"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Thu Oct 11 08:00:33 2012 +0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 11 10:21:16 2012 +0900"
      },
      "message": "autofs4 - fix reset pending flag on mount fail\n\nIn autofs4_d_automount(), if a mount fail occurs the AUTOFS_INF_PENDING\nmount pending flag is not cleared.\n\nOne effect of this is when using the \"browse\" option, directory entry\nattributes show up with all \"?\"s due to the incorrect callback and\nsubsequent failure return (when in fact no callback should be made).\n\nSigned-off-by: Ian Kent \u003cikent@redhat.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ce40be7a820bb393ac4ac69865f018d2f4038cf0",
      "tree": "b1fe5a93346eb06f22b1c303d63ec5456d7212ab",
      "parents": [
        "ba0a5a36f60e4c1152af3a2ae2813251974405bf",
        "02f3939e1a9357b7c370a4a69717cf9c02452737"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 11 09:04:23 2012 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 11 09:04:23 2012 +0900"
      },
      "message": "Merge branch \u0027for-3.7/core\u0027 of git://git.kernel.dk/linux-block\n\nPull block IO update from Jens Axboe:\n \"Core block IO bits for 3.7.  Not a huge round this time, it contains:\n\n   - First series from Kent cleaning up and generalizing bio allocation\n     and freeing.\n\n   - WRITE_SAME support from Martin.\n\n   - Mikulas patches to prevent O_DIRECT crashes when someone changes\n     the block size of a device.\n\n   - Make bio_split() work on data-less bio\u0027s (like trim/discards).\n\n   - A few other minor fixups.\"\n\nFixed up silent semantic mis-merge as per Mikulas Patocka and Andrew\nMorton.  It is due to the VM no longer using a prio-tree (see commit\n6b2dbba8b6ac: \"mm: replace vma prio_tree with an interval tree\").\n\nSo make set_blocksize() use mapping_mapped() instead of open-coding the\ninternal VM knowledge that has changed.\n\n* \u0027for-3.7/core\u0027 of git://git.kernel.dk/linux-block: (26 commits)\n  block: makes bio_split support bio without data\n  scatterlist: refactor the sg_nents\n  scatterlist: add sg_nents\n  fs: fix include/percpu-rwsem.h export error\n  percpu-rw-semaphore: fix documentation typos\n  fs/block_dev.c:1644:5: sparse: symbol \u0027blkdev_mmap\u0027 was not declared\n  blockdev: turn a rw semaphore into a percpu rw semaphore\n  Fix a crash when block device is read and block size is changed at the same time\n  block: fix request_queue-\u003eflags initialization\n  block: lift the initial queue bypass mode on blk_register_queue() instead of blk_init_allocated_queue()\n  block: ioctl to zero block ranges\n  block: Make blkdev_issue_zeroout use WRITE SAME\n  block: Implement support for WRITE SAME\n  block: Consolidate command flag and queue limit checks for merges\n  block: Clean up special command handling logic\n  block/blk-tag.c: Remove useless kfree\n  block: remove the duplicated setting for congestion_threshold\n  block: reject invalid queue attribute values\n  block: Add bio_clone_bioset(), bio_clone_kmalloc()\n  block: Consolidate bio_alloc_bioset(), bio_kmalloc()\n  ...\n"
    },
    {
      "commit": "df632d3ce7eacf92ad9b642301c7b53a1d95b8d8",
      "tree": "848c39ed4f7cfdb582bf2e0a0a03147efaa5198d",
      "parents": [
        "2474542f64432398f503373f53bdf620491bcfa8",
        "af283885b70248268617955a5ea5476647bd556b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 10 23:52:35 2012 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 10 23:52:35 2012 +0900"
      },
      "message": "Merge tag \u0027nfs-for-3.7-1\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs\n\nPull NFS client updates from Trond Myklebust:\n \"Features include:\n\n   - Remove CONFIG_EXPERIMENTAL dependency from NFSv4.1\n     Aside from the issues discussed at the LKS, distros are shipping\n     NFSv4.1 with all the trimmings.\n   - Fix fdatasync()/fsync() for the corner case of a server reboot.\n   - NFSv4 OPEN access fix: finally distinguish correctly between\n     open-for-read and open-for-execute permissions in all situations.\n   - Ensure that the TCP socket is closed when we\u0027re in CLOSE_WAIT\n   - More idmapper bugfixes\n   - Lots of pNFS bugfixes and cleanups to remove unnecessary state and\n     make the code easier to read.\n   - In cases where a pNFS read or write fails, allow the client to\n     resume trying layoutgets after two minutes of read/write-\n     through-mds.\n   - More net namespace fixes to the NFSv4 callback code.\n   - More net namespace fixes to the NFSv3 locking code.\n   - More NFSv4 migration preparatory patches.\n     Including patches to detect network trunking in both NFSv4 and\n     NFSv4.1\n   - pNFS block updates to optimise LAYOUTGET calls.\"\n\n* tag \u0027nfs-for-3.7-1\u0027 of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (113 commits)\n  pnfsblock: cleanup nfs4_blkdev_get\n  NFS41: send real read size in layoutget\n  NFS41: send real write size in layoutget\n  NFS: track direct IO left bytes\n  NFSv4.1: Cleanup ugliness in pnfs_layoutgets_blocked()\n  NFSv4.1: Ensure that the layout sequence id stays \u0027close\u0027 to the current\n  NFSv4.1: Deal with seqid wraparound in the pNFS return-on-close code\n  NFSv4 set open access operation call flag in nfs4_init_opendata_res\n  NFSv4.1: Remove the dependency on CONFIG_EXPERIMENTAL\n  NFSv4 reduce attribute requests for open reclaim\n  NFSv4: nfs4_open_done first must check that GETATTR decoded a file type\n  NFSv4.1: Deal with wraparound when updating the layout \"barrier\" seqid\n  NFSv4.1: Deal with wraparound issues when updating the layout stateid\n  NFSv4.1: Always set the layout stateid if this is the first layoutget\n  NFSv4.1: Fix another refcount issue in pnfs_find_alloc_layout\n  NFSv4: don\u0027t put ACCESS in OPEN compound if O_EXCL\n  NFSv4: don\u0027t check MAY_WRITE access bit in OPEN\n  NFS: Set key construction data for the legacy upcall\n  NFSv4.1: don\u0027t do two EXCHANGE_IDs on mount\n  NFS: nfs41_walk_client_list(): re-lock before iterating\n  ...\n"
    },
    {
      "commit": "4b2c551f77f5a0c496e2125b1d883f4b26aabf2c",
      "tree": "13b861ea27340133a057b1a9e90fa5be8b4d1283",
      "parents": [
        "466cab878ef98a0618734a1fa64a02e5fbf90867"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Tue Oct 09 14:49:54 2012 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Oct 10 01:15:44 2012 -0400"
      },
      "message": "lglock: add DEFINE_STATIC_LGLOCK()\n\nWhen the lglock doesn\u0027t need to be exported we can use\nDEFINE_STATIC_LGLOCK().\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "35c2a7f4908d404c9124c2efc6ada4640ca4d5d5",
      "tree": "4ef3fa1953b939fb4bfff935b3d351f76d97252b",
      "parents": [
        "8e22cc88d68ca1a46d7d582938f979eb640ed30f"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Sun Oct 07 20:32:51 2012 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 09 23:33:55 2012 -0400"
      },
      "message": "tmpfs,ceph,gfs2,isofs,reiserfs,xfs: fix fh_len checking\n\nFuzzing with trinity oopsed on the 1st instruction of shmem_fh_to_dentry(),\n\tu64 inum \u003d fid-\u003eraw[2];\nwhich is unhelpfully reported as at the end of shmem_alloc_inode():\n\nBUG: unable to handle kernel paging request at ffff880061cd3000\nIP: [\u003cffffffff812190d0\u003e] shmem_alloc_inode+0x40/0x40\nOops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC\nCall Trace:\n [\u003cffffffff81488649\u003e] ? exportfs_decode_fh+0x79/0x2d0\n [\u003cffffffff812d77c3\u003e] do_handle_open+0x163/0x2c0\n [\u003cffffffff812d792c\u003e] sys_open_by_handle_at+0xc/0x10\n [\u003cffffffff83a5f3f8\u003e] tracesys+0xe1/0xe6\n\nRight, tmpfs is being stupid to access fid-\u003eraw[2] before validating that\nfh_len includes it: the buffer kmalloc\u0027ed by do_sys_name_to_handle() may\nfall at the end of a page, and the next page not be present.\n\nBut some other filesystems (ceph, gfs2, isofs, reiserfs, xfs) are being\ncareless about fh_len too, in fh_to_dentry() and/or fh_to_parent(), and\ncould oops in the same way: add the missing fh_len checks to those.\n\nReported-by: Sasha Levin \u003clevinsasha928@gmail.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Sage Weil \u003csage@inktank.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8e22cc88d68ca1a46d7d582938f979eb640ed30f",
      "tree": "a5b5ed3af60067093dde81bd651046d24b0dfd45",
      "parents": [
        "b6963327e0521e682c2fffd018574251d3c22b41"
      ],
      "author": {
        "name": "Marco Stornelli",
        "email": "marco.stornelli@gmail.com",
        "time": "Sat Oct 06 12:43:09 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 09 23:33:39 2012 -0400"
      },
      "message": "vfs: drop lock/unlock super\n\nRemoved s_lock from super_block and removed lock/unlock super.\n\nSigned-off-by: Marco Stornelli \u003cmarco.stornelli@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b6963327e0521e682c2fffd018574251d3c22b41",
      "tree": "a82bcaaad73ca73dd608eec6d9eb470dceee8caa",
      "parents": [
        "c07cb01c45d6f5f80da63e0b17dca889dba48cc1"
      ],
      "author": {
        "name": "Marco Stornelli",
        "email": "marco.stornelli@gmail.com",
        "time": "Sat Oct 06 12:42:28 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 09 23:33:39 2012 -0400"
      },
      "message": "ufs: drop lock/unlock super\n\nRemoved lock/unlock super. Added a new private s_lock mutex.\n\nSigned-off-by: Marco Stornelli \u003cmarco.stornelli@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c07cb01c45d6f5f80da63e0b17dca889dba48cc1",
      "tree": "5f1ed5896c0a791deee0d6b12eb66a43bebcf421",
      "parents": [
        "f6e12dc4fc6f78745fd48a24ff2f06efb0bdeb0d"
      ],
      "author": {
        "name": "Marco Stornelli",
        "email": "marco.stornelli@gmail.com",
        "time": "Sat Oct 06 12:41:46 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 09 23:33:39 2012 -0400"
      },
      "message": "sysv: drop lock/unlock super\n\nRemoved lock/unlock super. Added a new private s_lock mutex.\n\nSigned-off-by: Marco Stornelli \u003cmarco.stornelli@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f6e12dc4fc6f78745fd48a24ff2f06efb0bdeb0d",
      "tree": "656faafc73cb209c74d88d89ba5545d8ca135599",
      "parents": [
        "e40b34c7921534a46f7bae23ec6646d3d9c2c7b2"
      ],
      "author": {
        "name": "Marco Stornelli",
        "email": "marco.stornelli@gmail.com",
        "time": "Sat Oct 06 12:41:05 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 09 23:33:38 2012 -0400"
      },
      "message": "hpfs: drop lock/unlock super\n\nRemoved lock/unlock super.\n\nSigned-off-by: Marco Stornelli \u003cmarco.stornelli@gmail.com\u003e\nAcked-by: Mikulas Patocka \u003cmikulas@artax.karlin.mff.cuni.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e40b34c7921534a46f7bae23ec6646d3d9c2c7b2",
      "tree": "84a7ffac7bce215827fbde733aad964a5e38eaa4",
      "parents": [
        "67e2c19a3bcd32172c1d67294a1d6bb4bc60ca77"
      ],
      "author": {
        "name": "Marco Stornelli",
        "email": "marco.stornelli@gmail.com",
        "time": "Sat Oct 06 12:40:03 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 09 23:33:38 2012 -0400"
      },
      "message": "fat: drop lock/unlock super\n\nRemoved lock/unlock super. Added a new private s_lock mutex.\n\nSigned-off-by: Marco Stornelli \u003cmarco.stornelli@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "67e2c19a3bcd32172c1d67294a1d6bb4bc60ca77",
      "tree": "3130c8af7e06aed70baaf962eb69873684ce032a",
      "parents": [
        "4f7754c8891af65124dce63adb59a33198f0bf35"
      ],
      "author": {
        "name": "Marco Stornelli",
        "email": "marco.stornelli@gmail.com",
        "time": "Sat Oct 06 12:39:20 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 09 23:33:38 2012 -0400"
      },
      "message": "ext3: drop lock/unlock super\n\nRemoved lock/unlock super.\n\nSigned-off-by: Marco Stornelli \u003cmarco.stornelli@gmail.com\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4f7754c8891af65124dce63adb59a33198f0bf35",
      "tree": "e6777d11406cabd83370c260ebc69f62e68e2308",
      "parents": [
        "aed976475bff939672b0e21595839c445dcec0fa"
      ],
      "author": {
        "name": "Marco Stornelli",
        "email": "marco.stornelli@gmail.com",
        "time": "Sat Oct 06 12:38:18 2012 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 09 23:33:38 2012 -0400"
      },
      "message": "exofs: drop lock/unlock super\n\nRemoved lock/unlock super.\n\nAcked-by: Artem Bityutskiy \u003cartem.bityutskiy@linux.intel.com\u003e\nAcked-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Marco Stornelli \u003cmarco.stornelli@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "aed976475bff939672b0e21595839c445dcec0fa",
      "tree": "a260411639546dad441bf6060be123ca0842a31c",
      "parents": [
        "d1c7d97ad58836affde6e39980b96527510b572e"
      ],
      "author": {
        "name": "Richard W.M. Jones",
        "email": "rjones@redhat.com",
        "time": "Tue Oct 09 15:27:43 2012 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 09 23:33:38 2012 -0400"
      },
      "message": "dup3: Return an error when oldfd \u003d\u003d newfd.\n\nI have tested the attached patch to fix the dup3 regression.\n\nRich.\n\nFrom 0944e30e12dec6544b3602626b60ff412375c78f Mon Sep 17 00:00:00 2001\nFrom: \"Richard W.M. Jones\" \u003crjones@redhat.com\u003e\nDate: Tue, 9 Oct 2012 14:42:45 +0100\nSubject: [PATCH] dup3: Return an error when oldfd \u003d\u003d newfd.\n\nThe following commit:\n\n  commit fe17f22d7fd0e344ef6447238f799bb49f670c6f\n  Author: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n  Date:   Tue Aug 21 11:48:11 2012 -0400\n\n    take purely descriptor-related stuff from fcntl.c to file.c\n\nwas supposed to be just code motion, but it dropped the following two\nlines:\n\n  if (unlikely(oldfd \u003d\u003d newfd))\n          return -EINVAL;\n\nfrom the dup3 system call.  dup3 is not specified by POSIX, so Linux\ncan do what it likes.  However the POSIX proposal for dup3 [1] states\nthat it should return an error if oldfd \u003d\u003d newfd.\n\n[1] http://austingroupbugs.net/view.php?id\u003d411\n\nSigned-off-by: Richard W.M. Jones \u003crjones@redhat.com\u003e\nTested-by: Richard W.M. Jones \u003crjones@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ffd8d101a3a7d3f2e79deee1e342801703b6dc70",
      "tree": "d2ca06ce67886ce0c9498c6fbce05dc11d93fa9c",
      "parents": [
        "547b1e81afe3119f7daf702cc03b158495535a25"
      ],
      "author": {
        "name": "Sasha Levin",
        "email": "sasha.levin@oracle.com",
        "time": "Thu Oct 04 19:56:40 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Oct 09 23:33:37 2012 -0400"
      },
      "message": "fs: prevent use after free in auditing when symlink following was denied\n\nCommit \"fs: add link restriction audit reporting\" has added auditing of failed\nattempts to follow symlinks. Unfortunately, the auditing was being done after\nthe struct path structure was released earlier.\n\nSigned-off-by: Sasha Levin \u003csasha.levin@oracle.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "42859eea96ba6beabfb0369a1eeffa3c7d2bd9cb",
      "tree": "fa38aeda0d6e7a4c48a882b166b8643594a1ad50",
      "parents": [
        "f59b51fe3d3092c08d7d554ecb40db24011b2ebc",
        "f322220d6159455da2b5a8a596d802c8695fed30"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 10 12:02:25 2012 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 10 12:02:25 2012 +0900"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal\n\nPull generic execve() changes from Al Viro:\n \"This introduces the generic kernel_thread() and kernel_execve()\n  functions, and switches x86, arm, alpha, um and s390 over to them.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal: (26 commits)\n  s390: convert to generic kernel_execve()\n  s390: switch to generic kernel_thread()\n  s390: fold kernel_thread_helper() into ret_from_fork()\n  s390: fold execve_tail() into start_thread(), convert to generic sys_execve()\n  um: switch to generic kernel_thread()\n  x86, um/x86: switch to generic sys_execve and kernel_execve\n  x86: split ret_from_fork\n  alpha: introduce ret_from_kernel_execve(), switch to generic kernel_execve()\n  alpha: switch to generic kernel_thread()\n  alpha: switch to generic sys_execve()\n  arm: get rid of execve wrapper, switch to generic execve() implementation\n  arm: optimized current_pt_regs()\n  arm: introduce ret_from_kernel_execve(), switch to generic kernel_execve()\n  arm: split ret_from_fork, simplify kernel_thread() [based on patch by rmk]\n  generic sys_execve()\n  generic kernel_execve()\n  new helper: current_pt_regs()\n  preparation for generic kernel_thread()\n  um: kill thread-\u003eforking\n  um: let signal_delivered() do SIGTRAP on singlestepping into handler\n  ...\n"
    },
    {
      "commit": "f59b51fe3d3092c08d7d554ecb40db24011b2ebc",
      "tree": "f19a5cb72adda3963f83609dbe2314620a4cf63e",
      "parents": [
        "aac2b1f5747ea34696d0da5bdc4d8247aa6437af",
        "062d52672446014222942cae6934d97769b329f0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 10 11:15:20 2012 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 10 11:15:20 2012 +0900"
      },
      "message": "Merge branch \u0027for-linus-37rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml\n\nPull UML changes from Richard Weinberger:\n \"UML receives this time only cleanups.\n\n  The most outstanding change is the \u0027include \"foo.h\"\u0027 do \u0027include\n  \u003cfoo.h\u003e\u0027 conversion done by Al Viro.\n\n  It touches many files, that\u0027s why the diffstat is rather big.\"\n\n* \u0027for-linus-37rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml:\n  typo in UserModeLinux-HOWTO\n  hppfs: fix the return value of get_inode()\n  hostfs: drop vmtruncate\n  um: get rid of pointless include \"...\" where include \u003c...\u003e will do\n  um: move sysrq.h out of include/shared\n  um/x86: merge 32 and 64 bit variants of ptrace.h\n  um/x86: merge 32 and 64bit variants of checksum.h\n"
    },
    {
      "commit": "10f39f04b2cb7a06ba5d4ea0f20bd156d0367bee",
      "tree": "758f9736bcf0303da4edd5f52afd8ed10e8ea642",
      "parents": [
        "72055425e53540d9d0e59a57ac8c9b8ce77b62d5",
        "f5cf8f07423b2677cebebcebc863af77223a4972"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 10 10:51:35 2012 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 10 10:51:35 2012 +0900"
      },
      "message": "Merge tag \u0027for-linus-20121009\u0027 of git://git.infradead.org/mtd-2.6\n\nPull MTD updates from David Woodhouse:\n\n - Disable broken mtdchar mmap() on MMU systems\n - Additional ECC tests for NAND flash, and some test cleanups\n - New NAND and SPI chip support\n - Fixes/cleanup for SH FLCTL NAND controller driver\n - Improved hardware support for GPMI NAND controller\n - Conversions to device-tree support for various drivers\n - Removal of obsolete drivers (sbc8xxx, bcmring, etc.)\n - New LPC32xx drivers for MLC and SLC NAND\n - Further cleanup of NAND OOB/ECC handling\n - UAPI cleanup merge from David Howells (just moving files, since MTD\n   headers were sorted out long ago to separate user-visible from kernel\n   bits)\n\n* tag \u0027for-linus-20121009\u0027 of git://git.infradead.org/mtd-2.6: (168 commits)\n  mtd: Disable mtdchar mmap on MMU systems\n  UAPI: (Scripted) Disintegrate include/mtd\n  mtd: nand: detect Samsung K9GBG08U0A, K9GAG08U0F ID\n  mtd: nand: decode Hynix MLC, 6-byte ID length\n  mtd: nand: increase max OOB size to 640\n  mtd: nand: add generic READ ID length calculation functions\n  mtd: nand: split simple ID decode into its own function\n  mtd: nand: split extended ID decoding into its own function\n  mtd: nand: split BB marker options decoding into its own function\n  mtd: nand: remove redundant ID read\n  mtd: nand: remove unnecessary variable\n  mtd: docg4: add missing HAS_IOMEM dependency\n  mtd: gpmi: initialize the timing registers only one time\n  mtd: gpmi: add EDO feature for imx6q\n  mtd: gpmi: do not set the default values for the extra clocks\n  mtd: gpmi: simplify the DLL setting code\n  mtd: gpmi: add a new field for HW_GPMI_CTRL1\n  mtd: gpmi: do not get the clock frequency in gpmi_begin()\n  mtd: gpmi: add a new field for HW_GPMI_TIMING1\n  mtd: add helpers to get the supportted ONFI timing mode\n  ...\n"
    },
    {
      "commit": "72055425e53540d9d0e59a57ac8c9b8ce77b62d5",
      "tree": "8033d7d7bfdf8725eed785d02f7121d201052d2e",
      "parents": [
        "fc81c038c2d61d4fcd8150f383fec1ce23087597",
        "f46dbe3dee853f8a860f889cb2b7ff4c624f2a7a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 10 10:49:20 2012 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 10 10:49:20 2012 +0900"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs\n\nPull btrfs update from Chris Mason:\n \"This is a large pull, with the bulk of the updates coming from:\n\n   - Hole punching\n\n   - send/receive fixes\n\n   - fsync performance\n\n   - Disk format extension allowing more hardlinks inside a single\n     directory (btrfs-progs patch required to enable the compat bit for\n     this one)\n\n  I\u0027m cooking more unrelated RAID code, but I wanted to make sure this\n  original batch makes it in.  The largest updates here are relatively\n  old and have been in testing for some time.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (121 commits)\n  btrfs: init ref_index to zero in add_inode_ref\n  Btrfs: remove repeated eb-\u003epages check in, disk-io.c/csum_dirty_buffer\n  Btrfs: fix page leakage\n  Btrfs: do not warn_on when we cannot alloc a page for an extent buffer\n  Btrfs: don\u0027t bug on enomem in readpage\n  Btrfs: cleanup pages properly when ENOMEM in compression\n  Btrfs: make filesystem read-only when submitting barrier fails\n  Btrfs: detect corrupted filesystem after write I/O errors\n  Btrfs: make compress and nodatacow mount options mutually exclusive\n  btrfs: fix message printing\n  Btrfs: don\u0027t bother committing delayed inode updates when fsyncing\n  btrfs: move inline function code to header file\n  Btrfs: remove unnecessary IS_ERR in bio_readpage_error()\n  btrfs: remove unused function btrfs_insert_some_items()\n  Btrfs: don\u0027t commit instead of overcommitting\n  Btrfs: confirmation of value is added before trace_btrfs_get_extent() is called\n  Btrfs: be smarter about dropping things from the tree log\n  Btrfs: don\u0027t lookup csums for prealloc extents\n  Btrfs: cache extent state when writing out dirty metadata pages\n  Btrfs: do not hold the file extent leaf locked when adding extent item\n  ...\n"
    },
    {
      "commit": "fc81c038c2d61d4fcd8150f383fec1ce23087597",
      "tree": "bc0b5156a97bb4ba6d4ab96906faaf4255b45ba5",
      "parents": [
        "547b1e81afe3119f7daf702cc03b158495535a25",
        "72bd481f860f0125c810bb43d878ce5f9c060c58"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 10 10:48:32 2012 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 10 10:48:32 2012 +0900"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.samba.org/sfrench/cifs-2.6\n\nPull CIFS fixes from Steve French.\n\n* \u0027for-linus\u0027 of git://git.samba.org/sfrench/cifs-2.6:\n  cifs: reinstate the forcegid option\n  Convert properly UTF-8 to UTF-16\n  [CIFS] WARN_ON_ONCE if kernel_sendmsg() returns -ENOSPC\n"
    },
    {
      "commit": "f474af7051212b4efc8267583fad9c4ebf33ccff",
      "tree": "1aa46ebc8065a341f247c2a2d9af2f624ad1d4f8",
      "parents": [
        "0d22f68f02c10d5d10ec5712917e5828b001a822",
        "e3dd9a52cb5552c46c2a4ca7ccdfb4dab5c72457"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Oct 09 18:35:22 2012 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Oct 09 18:35:22 2012 -0400"
      },
      "message": "nfs: disintegrate UAPI for nfs\n\nThis is to complete part of the Userspace API (UAPI) disintegration for which\nthe preparatory patches were pulled recently.  After these patches, userspace\nheaders will be segregated into:\n\n        include/uapi/linux/.../foo.h\n\nfor the userspace interface stuff, and:\n\n        include/linux/.../foo.h\n\nfor the strictly kernel internal stuff.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "91312c53aff4c9863dca6080182091dc5c5824c6",
      "tree": "b1bbd8cec2dca0540584c74b5f7f866b918a03dc",
      "parents": [
        "3be2be0a32c18b0fd6d623cda63174a332ca0de1"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yongjun_wei@trendmicro.com.cn",
        "time": "Fri Sep 21 12:55:02 2012 +0800"
      },
      "committer": {
        "name": "Richard Weinberger",
        "email": "richard@nod.at",
        "time": "Tue Oct 09 22:34:52 2012 +0200"
      },
      "message": "hppfs: fix the return value of get_inode()\n\nIn case of error, the function get_inode() returns ERR_PTR().\nBut the users hppfs_lookup() and hppfs_fill_super() use NULL\ntest for check the return value, not IS_ERR(), so we\u0027d better\nchange the return value of get_inode() to NULL instead of\nERR_PTR().\n\ndpatch engine is used to generated this patch.\n(https://github.com/weiyj/dpatch)\n\nSigned-off-by: Wei Yongjun \u003cyongjun_wei@trendmicro.com.cn\u003e\nSigned-off-by: Richard Weinberger \u003crichard@nod.at\u003e\n"
    },
    {
      "commit": "3be2be0a32c18b0fd6d623cda63174a332ca0de1",
      "tree": "43a223182060de834768e0c1c1ca2602f19a8da4",
      "parents": [
        "37185b33240870719b6b5913a46e6a441f1ae96f"
      ],
      "author": {
        "name": "Marco Stornelli",
        "email": "marco.stornelli@gmail.com",
        "time": "Sat Oct 06 10:31:13 2012 +0200"
      },
      "committer": {
        "name": "Richard Weinberger",
        "email": "richard@nod.at",
        "time": "Tue Oct 09 22:33:19 2012 +0200"
      },
      "message": "hostfs: drop vmtruncate\n\nRemoved vmtruncate.\n\nSigned-off-by: Marco Stornelli \u003cmarco.stornelli@gmail.com\u003e\nSigned-off-by: Richard Weinberger \u003crichard@nod.at\u003e\n"
    },
    {
      "commit": "37185b33240870719b6b5913a46e6a441f1ae96f",
      "tree": "60a0f5adbb3d6b879a504defeddb3ff1ecff77d7",
      "parents": [
        "382d95fdfa7ff5c54f6495c597c7cf6d124e404b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Mon Oct 08 03:27:32 2012 +0100"
      },
      "committer": {
        "name": "Richard Weinberger",
        "email": "richard@nod.at",
        "time": "Tue Oct 09 22:28:45 2012 +0200"
      },
      "message": "um: get rid of pointless include \"...\" where include \u003c...\u003e will do\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Richard Weinberger \u003crichard@nod.at\u003e\n"
    },
    {
      "commit": "f46dbe3dee853f8a860f889cb2b7ff4c624f2a7a",
      "tree": "b9fa6671d9fbb18fd8a42b8ce44ffa87fa92119d",
      "parents": [
        "1037a5affc266fdfe08b2dd415d309ab2778ce6a"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@fusionio.com",
        "time": "Tue Oct 09 11:17:20 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@fusionio.com",
        "time": "Tue Oct 09 11:17:20 2012 -0400"
      },
      "message": "btrfs: init ref_index to zero in add_inode_ref\n\nSigned-off-by: Chris Mason \u003cchris.mason@fusionio.com\u003e\n"
    },
    {
      "commit": "ffe315012510165ce82e4dd4767f0a5dba9edbf7",
      "tree": "f601cd980af9d0ced5ca9aedecef4fa0d2ca0e15",
      "parents": [
        "e2d3a35ee427aaba99b6c68a56609ce276c51270",
        "4a8e43feeac7996b8de2d5b2823e316917493df4"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Tue Oct 09 15:03:21 2012 +0100"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Tue Oct 09 15:04:25 2012 +0100"
      },
      "message": "Merge tag \u0027disintegrate-mtd-20121009\u0027 of git://git.infradead.org/users/dhowells/linux-headers\n\nUAPI Disintegration 2012-10-09\n\nConflicts:\n\tMAINTAINERS\n\tarch/arm/configs/bcmring_defconfig\n\tarch/arm/mach-imx/clk-imx51-imx53.c\n\tdrivers/mtd/nand/Kconfig\n\tdrivers/mtd/nand/bcm_umi_nand.c\n\tdrivers/mtd/nand/nand_bcm_umi.h\n\tdrivers/mtd/nand/orion_nand.c\n"
    },
    {
      "commit": "1037a5affc266fdfe08b2dd415d309ab2778ce6a",
      "tree": "a43eb06a467311e36d84ba36fe53ec2fac31d511",
      "parents": [
        "f60b1b49f6f72abb8bedfd49b758773bbda043c8"
      ],
      "author": {
        "name": "Wang Sheng-Hui",
        "email": "shhuiw@gmail.com",
        "time": "Mon Oct 08 07:26:15 2012 -0600"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@fusionio.com",
        "time": "Tue Oct 09 09:37:30 2012 -0400"
      },
      "message": "Btrfs: remove repeated eb-\u003epages check in, disk-io.c/csum_dirty_buffer\n\nIn csum_dirty_buffer, we first get eb from page-\u003eprivate.\nThen we check if the page is the first page of eb. Later\nwe check it again. Remove the repeated check here.\n\nSigned-off-by: Wang Sheng-Hui \u003cshhuiw@gmail.com\u003e\n"
    },
    {
      "commit": "f60b1b49f6f72abb8bedfd49b758773bbda043c8",
      "tree": "34e972598969d614eca15082588e8b9ee38d8471",
      "parents": [
        "4804b38293c020e7a2c841e86402f456c19d934d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@fusionio.com",
        "time": "Fri Oct 05 16:53:34 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@fusionio.com",
        "time": "Tue Oct 09 09:20:56 2012 -0400"
      },
      "message": "Btrfs: fix page leakage\n\nAlloc_dummy_extent_buffer will not free the first page in the eb array if we\nfail to allocate a page, fix this.  Thanks,\n\nReported-by: David Sterba \u003cdave@jikos.cz\u003e\nSigned-off-by: Josef Bacik \u003cjbacik@fusionio.com\u003e\n"
    },
    {
      "commit": "4804b38293c020e7a2c841e86402f456c19d934d",
      "tree": "748108b7438f8a7f47e17a3b50729e67a648cb7b",
      "parents": [
        "edd33c99c4ba26ebe17c1a3d65b4aba25482ed32"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "jbacik@fusionio.com",
        "time": "Fri Oct 05 16:43:45 2012 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@fusionio.com",
        "time": "Tue Oct 09 09:20:43 2012 -0400"
      },
      "message": "Btrfs: do not warn_on when we cannot alloc a page for an extent buffer\n\nIt\u0027s just annoying and the user will have gotten a nice OOM killer message\nso they are already fully aware they are screwed :).  Thanks,\n\nReported-by: Jérôme Poulin \u003cjeromepoulin@gmail.com\u003e\nSigned-off-by: Josef Bacik \u003cjbacik@fusionio.com\u003e\n"
    }
  ],
  "next": "edd33c99c4ba26ebe17c1a3d65b4aba25482ed32"
}
