)]}'
{
  "log": [
    {
      "commit": "191f8488f9f7600a96e1500ee2ee74a407e2eb1c",
      "tree": "23dbc84d31563e64ff60d99a2974727ca3bf8e42",
      "parents": [
        "8a7b8a89a3ae5b510396cdcc821698d4aa20afcf"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Apr 20 17:01:53 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:15 2010 -0500"
      },
      "message": "xfs: remove a few macro indirections in the quota code\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n\n"
    },
    {
      "commit": "8a7b8a89a3ae5b510396cdcc821698d4aa20afcf",
      "tree": "c64b285dfc53091a258319c82571431c25b85921",
      "parents": [
        "37bc5743fdc29f60fb104cd9031babbabddff25a"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Apr 20 17:01:30 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:14 2010 -0500"
      },
      "message": "xfs: access quotainfo structure directly\n\nAccess fields in m_quotainfo directly instead of hiding them behind the\nXFS_QI_* macros.  Add local variables for the quotainfo pointer in places\nwhere we have lots of them.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n\n"
    },
    {
      "commit": "37bc5743fdc29f60fb104cd9031babbabddff25a",
      "tree": "abbcde46a9741a40a0ced8d1f289f6af65725d15",
      "parents": [
        "fce1cad651e3cf2779ed8f9e6608daf50d29daaf"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Apr 20 17:00:59 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:14 2010 -0500"
      },
      "message": "xfs: wait for direct I/O to complete in fsync and write_inode\n\nWe need to wait for all pending direct I/O requests before taking care of\nmetadata in fsync and write_inode.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n\n"
    },
    {
      "commit": "fce1cad651e3cf2779ed8f9e6608daf50d29daaf",
      "tree": "cbd2eba102e09c48a1f7795ba95f2fbd287d9b2e",
      "parents": [
        "3f943d853d6ce6d808e7362e4444c7ed5f692357"
      ],
      "author": {
        "name": "Andrea Gelmini",
        "email": "andrea.gelmini@gelma.net",
        "time": "Thu Mar 25 17:22:41 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:14 2010 -0500"
      },
      "message": "xfs: xfs_trace.c: duplicated include\n\nfs/xfs/linux-2.6/xfs_trace.c: xfs_attr_sf.h is included more than once.\n\nSigned-off-by: Andrea Gelmini \u003candrea.gelmini@gelma.net\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "3f943d853d6ce6d808e7362e4444c7ed5f692357",
      "tree": "78ade96089353117fbcacd2a2e7297af9e652115",
      "parents": [
        "e3bb2e30d532b00a9bdda997e174a9f9916cb1c0"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Apr 15 18:17:34 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:14 2010 -0500"
      },
      "message": "xfs: minor odds and ends in xfs_log_recover.c\n\nOdds and ends in \"xfs_log_recover.c\".  This patch just contains some\nminor things that didn\u0027t seem to warrant their own individual\npatches:\n- In xlog_bread_noalign(), drop an assertion that a pointer is\n  non-null (the crash will tell us it was a bad pointer).\n- Add a more descriptive header comment for xlog_find_verify_cycle().\n- Make a few additions to the comments in xlog_find_head().  Also\n  rearrange some expressions in a few spots to produce the same\n  result, but in a way that seems more clear what\u0027s being computed.\n\n(Updated in response to Dave\u0027s review comments.  Note I did not\nsplit this patch like I said I would.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "e3bb2e30d532b00a9bdda997e174a9f9916cb1c0",
      "tree": "33d82124eb213877450072f6fa1df6dbf05be7bf",
      "parents": [
        "9db127edb54048707eb84517eb0573e597a2370a"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Apr 15 18:17:30 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:14 2010 -0500"
      },
      "message": "xfs: avoid repeated pointer dereferences\n\nIn xlog_find_cycle_start() use a local variable for some repeated\noperations rather than constantly accessing the memory location\nwhose address is passed in.\n\n(This version drops an assertion that a pointer is non-null.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "9db127edb54048707eb84517eb0573e597a2370a",
      "tree": "b8c9a1a0646305cd87fe41001460fbc7bbdf7706",
      "parents": [
        "8c38366f99f83a7fa441e0c0669fefc18615e005"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Apr 15 18:17:26 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:13 2010 -0500"
      },
      "message": "xfs: change a few labels in xfs_log_recover.c\n\nRename a label used in xlog_find_head() that I thought was poorly\nchosen.  Also combine two adjacent labels xlog_find_tail() into a\nsingle label, and give it a more generic name.\n\n(Now using Dave\u0027s suggested \"validate_head\" name for first label.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "8c38366f99f83a7fa441e0c0669fefc18615e005",
      "tree": "05789fdea7c34b1b6f29151b6a13bd49f3c6fec9",
      "parents": [
        "df308bcfec27e0c6bc83715dfd417caff5c33f19"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Mar 12 10:59:40 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:13 2010 -0500"
      },
      "message": "xfs: enforce synchronous writes in xfs_bwrite\n\nxfs_bwrite is used with the intention of synchronously writing out\nbuffers, but currently it does not actually clear the async flag if\nthat\u0027s left from previous writes but instead implements async\nbehaviour if it finds it.  Remove the code handling asynchronous\nwrites as we\u0027ve got rid of those entirely outside of the log and\ndelwri buffers, and make sure that we clear the async and read flags\nbefore writing the buffer.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "df308bcfec27e0c6bc83715dfd417caff5c33f19",
      "tree": "558d5b910a4de3cbb36b44eeca1e1f619f2cddf3",
      "parents": [
        "f983710758218c7aad4aae3e40a7312a21d6f55a"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Mar 12 10:59:16 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:13 2010 -0500"
      },
      "message": "xfs: remove periodic superblock writeback\n\nAll modifications to the superblock are done transactional through\nxfs_trans_log_buf, so there is no reason to initiate periodic\nasynchronous writeback.  This only removes the superblock from the\ndelwri list and will lead to sub-optimal I/O scheduling.\n\nCut down xfs_sync_fsdata now that it\u0027s only used for synchronous\nsuperblock writes and move the log coverage checks into the two\ncallers.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "f983710758218c7aad4aae3e40a7312a21d6f55a",
      "tree": "c4647b60e06338c730ebaf0d65ed696cce5e1e68",
      "parents": [
        "36adecff50b69df0369cc2022650c6087aeb255f"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Apr 14 15:47:55 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:13 2010 -0500"
      },
      "message": "xfs: make the log ticket transaction id random\n\nThe transaction ID that is written to the log for a transaction is\ncurrently set by taking the lower 32 bits of the memory address of\nthe ticket structure.  This is not guaranteed to be unique as\ntickets comes from a slab and slots can be reallocated immediately\nafter being freed. As a result, there is no guarantee of uniqueness\nin the ticket ID value.\n\nFix this by assigning a random number to the ticket ID field so that\nit is extremely unlikely that duplicates will occur and remove the\npossibility of transactions being mixed up during recovery due to\nduplicate IDs.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n\n"
    },
    {
      "commit": "36adecff50b69df0369cc2022650c6087aeb255f",
      "tree": "88341430b367a7b106c8eddcaaa90f1ffd2812db",
      "parents": [
        "ff30a6221d95b609a37410a425937b11a55d465e"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 13 15:21:13 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:12 2010 -0500"
      },
      "message": "xfs: nothing special about 1-block log sector\n\nThere are a number of places where a log sector size of 1 uses\nspecial case code.  The round_up() and round_down() macros\nproduce the correct result even when the log sector size is 1, and\nthis eliminates the need for treating this as a special case.\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n\n"
    },
    {
      "commit": "ff30a6221d95b609a37410a425937b11a55d465e",
      "tree": "548b8949adc08b8d96c73953f28b3ba7fc2afe31",
      "parents": [
        "5c17f5339f9dfdee8ad9661e97f8030d75b6bff7"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 13 15:22:58 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:12 2010 -0500"
      },
      "message": "xfs: encapsulate bbcount validity checking\n\nDefine a function that encapsulates checking the validity of a log\nblock count.\n\n(Updated from previous version--no longer includes error reporting in the\nencapsulated validation function.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n"
    },
    {
      "commit": "5c17f5339f9dfdee8ad9661e97f8030d75b6bff7",
      "tree": "27a32181d8c185a12c81af30f2a1bb1b93efbabc",
      "parents": [
        "8511998baaf541710f457315958cef0d0a7864a1"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 13 15:22:48 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:12 2010 -0500"
      },
      "message": "xfs: kill XLOG_SECTOR_ROUND*()\n\nXLOG_SECTOR_ROUNDUP_BBCOUNT() and XLOG_SECTOR_ROUNDDOWN_BLKNO()\nare now fairly simple macro translations.  Just get rid of them in\nfavor of the round_up() and round_down() macro calls they represent.\n\nAlso, in spots in xlog_get_bp() and xlog_write_log_records(),\nround_up() was being called with value 1, which just evaluates\nto the macro\u0027s second argument; so just use that instead.\nIn the latter case, make use of that value, as long as it\u0027s\nalready been computed.\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "8511998baaf541710f457315958cef0d0a7864a1",
      "tree": "b7ac320a8e0d7b150bb1a72055f1e08d9a7aef39",
      "parents": [
        "6881a229f66f74e4e0a73504389695213987955b"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 13 15:22:40 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:12 2010 -0500"
      },
      "message": "xfs: simplify XLOG_SECTOR_ROUND*()\n\nXLOG_SECTOR_ROUNDUP_BBCOUNT() is defined in \"fs/xfs/xfs_log_recover.c\"\nin an overly-complicated way.  It is basically roundup(), but that\nis not at all clear from its definition.  (Actually, there is\nanother macro round_up() that applies for power-of-two-based masks\nwhich I\u0027ll be using here.)\n\nThe operands in XLOG_SECTOR_ROUNDUP_BBCOUNT() are basically the\nblock number (bbs) and the log sector basic block mask\n(log-\u003el_sectbb_mask).  I\u0027ll call them B and M for this discussion.\n\nThe macro computes is value this way:\n\tM \u0026\u0026 (B \u0026 M) ? (B + M + 1) \u0026 ~M : B\n\nPut another way, we can break it into 3 cases:\n\t1)  ! M          -\u003e B\t\t\t# 0 mask, no effect\n\t2)  ! (B \u0026 M)    -\u003e B\t\t\t# sector aligned\n\t3)  M \u0026\u0026 (B \u0026 M) -\u003e (B + M + 1) \u0026 ~M\t# round up otherwise\n\nThe round_up() macro is cleverly defined using a value, v, and a\npower-of-2, p, and the result is the nearest multiple of p greater\nthan or equal to v.  Its value is computed something like this:\n\t((v - 1) | (p - 1)) + 1\nLet\u0027s consider using this in the context of the 3 cases above.\n\nWhen p \u003d 2^0 \u003d 1, the result boils down to ((v - 1) | 0) + 1, so it\njust translates any value v to itself.  That handles case (1) above.\n\nWhen p \u003d 2^n, n \u003e 0, we know that (p - 1) will be a mask with all n\nbits 0..n-1 set.  The condition in this case occurs when none of\nthose mask bits is set in the value v provided.  If that is the\ncase, subtracting 1 from v will have 1\u0027s in all those lower bits (at\nleast).  Therefore, OR-ing the mask with that decremented value has\nno effect, so adding the 1 back again will just translate the v to\nitself.  This handles case (2).\n\nOtherwise, the value v is greater than some multiple of p, and\ndecrementing it will produce a result greater than or equal to that\nmultiple.  OR-ing in the mask will produce a value 1 less than the\nnext multiple of p, so finally adding 1 back will result in the\ndesired rounded-up value.  This handles case (3).\n\nHopefully this is convincing.\n\nWhile I was at it, I converted XLOG_SECTOR_ROUNDDOWN_BLKNO() to use\nthe round_down() macro.\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "6881a229f66f74e4e0a73504389695213987955b",
      "tree": "8faf52f576ab7bfc49712cfd98c49d23a596a98b",
      "parents": [
        "a0e856b0b4d182c4c52b568bd04bd96a172247a7"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 13 15:22:29 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:12 2010 -0500"
      },
      "message": "xfs: fix min bufsize bugs in two places\n\nThis fixes a bug in two places that I found by inspection.  In\nxlog_find_verify_cycle() and xlog_write_log_records(), the code\nattempts to allocate a buffer to hold as many blocks as possible.\nIt gives up if the number of blocks to be allocated gets too small.\nRight now it uses log-\u003el_sectbb_log as that lower bound, but I\u0027m\nsure it\u0027s supposed to be the actual log sector size instead.  That\nis, the lower bound should be (1 \u003c\u003c log-\u003el_sectbb_log).\n\nAlso define a simple macro xlog_sectbb(log) to represent the number\nof basic blocks in a sector for the given log.\n\n(No change from original submission; I have implemented Christoph\u0027s\nsuggestion about storing l_sectsize rather than l_sectbb_log in\na new, separate patch in this series.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "a0e856b0b4d182c4c52b568bd04bd96a172247a7",
      "tree": "ae8c3d988dc84d42dc69a045bc16566a25377c82",
      "parents": [
        "74457cf4a3e0f0634679aa6c22d967e9e8b26479"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 13 15:22:08 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:11 2010 -0500"
      },
      "message": "xfs: add const qualifiers to xfs error function args\n\nChange the tag and file name arguments to xfs_error_report() and\nxfs_corruption_error() to use a const qualifier.\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "74457cf4a3e0f0634679aa6c22d967e9e8b26479",
      "tree": "3603ed6ff918ce43087ce76d60604698e1b08d51",
      "parents": [
        "3a8406f6d6916e8211936edb9e1193123df2daab"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Apr 13 15:06:53 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:11 2010 -0500"
      },
      "message": "xfs: remove xfs_dqmarker\n\nThe xfs_dqmarker structure does not need to exist anymore. Move the\nremaining flags field out of it and remove the structure altogether.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n"
    },
    {
      "commit": "3a8406f6d6916e8211936edb9e1193123df2daab",
      "tree": "53f490a433ef3bd2f430ef19cdfbbe5dc514e89d",
      "parents": [
        "e6a81f13aa9aa20ef03174210aed24791865b05e"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 13 15:06:52 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:11 2010 -0500"
      },
      "message": "xfs: convert the dquot free list to use list heads\n\nConvert the dquot free list on the filesystem to use listhead\ninfrastructure rather than the roll-your-own in the quota code.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n\n"
    },
    {
      "commit": "e6a81f13aa9aa20ef03174210aed24791865b05e",
      "tree": "727202721a225004e2522f32278de294c3748e70",
      "parents": [
        "368e136174344c417bad6ff0380b7b3f574bf120"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 13 15:06:51 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:11 2010 -0500"
      },
      "message": "xfs: convert the dquot hash list to use list heads\n\nConvert the dquot hash list on the filesystem to use listhead\ninfrastructure rather than the roll-your-own in the quota code.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "368e136174344c417bad6ff0380b7b3f574bf120",
      "tree": "1718f3e35b42adbaabf5a65062f2d3f5ecf1ac43",
      "parents": [
        "3a25404b3fccd41d36b2fda18d86011201608c38"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 13 15:06:50 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:11 2010 -0500"
      },
      "message": "xfs: remove duplicate code from dquot reclaim\n\nThe dquot shaker and the free-list reclaim code use exactly the same\nalgorithm but the code is duplicated and slightly different in each\ncase. Make the shaker code use the single dquot reclaim code to\nremove the code duplication.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "3a25404b3fccd41d36b2fda18d86011201608c38",
      "tree": "28979d8581760327c16a3389a2eb8752ed3f0665",
      "parents": [
        "9abbc539bf7f299819ad0a235064a1b643ab6407"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 13 15:06:48 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:10 2010 -0500"
      },
      "message": "xfs: convert the per-mount dquot list to use list heads\n\nConvert the dquot list on the filesytesm to use listhead\ninfrastructure rather than the roll-your-own in the quota code.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "9abbc539bf7f299819ad0a235064a1b643ab6407",
      "tree": "0c15d4f4933bce3a1a1db19509f4993ce2e46286",
      "parents": [
        "e6b1f27370fc67ac9868b2dbe2c22bc26952900e"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 13 15:06:46 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:10 2010 -0500"
      },
      "message": "xfs: add log item recovery tracing\n\nCurrently there is no tracing in log recovery, so it is difficult to\ndetermine what is going on when something goes wrong.\n\nAdd tracing for log item recovery to provide visibility into the log\nrecovery process. The tracing added shows regions being extracted\nfrom the log transactions and added to the transaction hash forming\nrecovery items, followed by the reordering, cancelling and finally\nrecovery of the items.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "e6b1f27370fc67ac9868b2dbe2c22bc26952900e",
      "tree": "69485365ff6b9f22a56bcfc4814b27b45622d6e9",
      "parents": [
        "55b66332d0921146a914d5d75a7b870a65dc4938"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Mar 23 11:47:38 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:10 2010 -0500"
      },
      "message": "xfs: clean up xlog_write_adv_cnt\n\nReplace the awkward xlog_write_adv_cnt with an inline helper that makes\nit more obvious that it\u0027s modifying it\u0027s paramters, and replace the use\nof an integer type for \"ptr\" with a real void pointer.  Also move\nxlog_write_adv_cnt to xfs_log_priv.h as it will be used outside of\nxfs_log.c in the delayed logging series.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "55b66332d0921146a914d5d75a7b870a65dc4938",
      "tree": "254f130969b118cc777371691e892db20e96b5a6",
      "parents": [
        "99428ad0f665a5d5b245ab36cefb6b231d977e73"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 23 11:43:17 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:10 2010 -0500"
      },
      "message": "xfs: introduce new internal log vector structure\n\nThe current log IO vector structure is a flat array and not\nextensible. To make it possible to keep separate log IO vectors for\nindividual log items, we need a method of chaining log IO vectors\ntogether.\n\nIntroduce a new log vector type that can be used to wrap the\nexisting log IO vectors on use that internally to the log. This\nmeans that the existing external interface (xfs_log_write) does not\nchange and hence no changes to the transaction commit code are\nrequired.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "99428ad0f665a5d5b245ab36cefb6b231d977e73",
      "tree": "3a6f9f59428f3134f7127b6543970c45baa5faab",
      "parents": [
        "b5203cd0a43c17dfb9d498bc9e3146624e8c9622"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Mar 23 11:35:45 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:10 2010 -0500"
      },
      "message": "xfs: reindent xlog_write\n\nReindent xlog_write to normal one tab indents and move all variable\ndeclarations into the closest enclosing block.\n\nSplit from a bigger patch by Dave Chinner.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "b5203cd0a43c17dfb9d498bc9e3146624e8c9622",
      "tree": "ce779712f4419aa238e0bf3a919ecc4010953fea",
      "parents": [
        "9b9fc2b7602ed671d1a8524d4c31302b89554947"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 23 11:29:44 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:09 2010 -0500"
      },
      "message": "xfs: factor xlog_write\n\nxlog_write is a mess that takes a lot of effort to understand. It is\na mass of nested loops with 4 space indents to get it to fit in 80 columns\nand lots of funky variables that aren\u0027t obvious what they mean or do.\n\nBreak it down into understandable chunks.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "9b9fc2b7602ed671d1a8524d4c31302b89554947",
      "tree": "866a68bb120cf08a09e573fe013ba0e121a2224b",
      "parents": [
        "b1c1b5b6108ad8e5991a614514f41da436c659d6"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 23 11:21:11 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:09 2010 -0500"
      },
      "message": "xfs: log ticket reservation underestimates the number of iclogs\n\nWhen allocation a ticket for a transaction, the ticket is initialised with the\nworst case log space usage based on the number of bytes the transaction may\nconsume. Part of this calculation is the number of log headers required for the\niclog space used up by the transaction.\n\nThis calculation makes an undocumented assumption that if the transaction uses\nthe log header space reservation on an iclog, then it consumes either the\nentire iclog or it completes. That is - the transaction that is first in an\niclog is the transaction that the log header reservation is accounted to. If\nthe transaction is larger than the iclog, then it will use the entire iclog\nitself. Document this assumption.\n\nFurther, the current calculation uses the rule that we can fit iclog_size bytes\nof transaction data into an iclog. This is in correct - the amount of space\navailable in an iclog for transaction data is the size of the iclog minus the\nspace used for log record headers. This means that the calculation is out by\n512 bytes per 32k of log space the transaction can consume. This is rarely an\nissue because maximally sized transactions are extremely uncommon, and for 4k\nblock size filesystems maximal transaction reservations are about 400kb. Hence\nthe error in this case is less than the size of an iclog, so that makes it even\nharder to hit.\n\nHowever, anyone using larger directory blocks (16k directory blocks push the\nmaximum transaction size to approx. 900k on a 4k block size filesystem) or\nlarger block size (e.g. 64k blocks push transactions to the 3-4MB size) could\nsee the error grow to more than an iclog and at this point the transaction is\nguaranteed to get a reservation underrun and shutdown the filesystem.\n\nFix this by adjusting the calculation to calculate the correct number of iclogs\nrequired and account for them all up front.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "b1c1b5b6108ad8e5991a614514f41da436c659d6",
      "tree": "fea56bd29b112eb18985c22745d99063ed19cd0e",
      "parents": [
        "8e646a55ac69fe620b9e84034c03dd1e8e16a36b"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 23 10:11:05 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:09 2010 -0500"
      },
      "message": "xfs: Clean up xfs_trans_committed code after factoring\n\nNow that the code has been factored, clean up all the remaining\nstyle cruft, simplify the code and re-order functions so that it\ndoesn\u0027t need forward declarations.\n\nAlso move the remaining functions that require forward declarations\n(xfs_trans_uncommit, xfs_trans_free) so that all the forward\ndeclarations can be removed from the file.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "8e646a55ac69fe620b9e84034c03dd1e8e16a36b",
      "tree": "b1bd02109c34888cf8e75f2569fc574858d03169",
      "parents": [
        "a3ccd2ca43d5cdfe0b256be02957dc5f47ec4c39"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 08 15:06:22 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:09 2010 -0500"
      },
      "message": "xfs: update and factor xfs_trans_committed()\n\nThe function header to xfs-trans_committed has long had this\ncomment:\n\n * THIS SHOULD BE REWRITTEN TO USE xfs_trans_next_item()\n\nTo prepare for different methods of committing items, convert the\ncode to use xfs_trans_next_item() and factor the code into smaller,\nmore digestible chunks.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "a3ccd2ca43d5cdfe0b256be02957dc5f47ec4c39",
      "tree": "08b6a0b911c5f1ba45ce9e61754f1db8331a0f72",
      "parents": [
        "0924378a689ccb05f6d60875742dc28f69bf0129"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Mar 15 12:52:49 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:08 2010 -0500"
      },
      "message": "xfs: clean up xfs_trans_commit logic even more\n\n\u003e +shut_us_down:\n\u003e +\tshutdown \u003d XFS_FORCED_SHUTDOWN(mp) ? EIO : 0;\n\u003e +\tif (!(tp-\u003et_flags \u0026 XFS_TRANS_DIRTY) || shutdown) {\n\u003e +\t\txfs_trans_unreserve_and_mod_sb(tp);\n\u003e +\t\t/*\n\nThis whole area in _xfs_trans_commit is still a complete mess.\n\nSo while touching this code, unravel this mess as well to make the\nwhole flow of the function simpler and clearer.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n"
    },
    {
      "commit": "0924378a689ccb05f6d60875742dc28f69bf0129",
      "tree": "8d6933bff18ac9f4670395673e38dad94fedd998",
      "parents": [
        "713bf88bba55b8dd91a18e8a59b0f97bf9b0f5de"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 08 11:28:28 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:08 2010 -0500"
      },
      "message": "xfs: split out iclog writing from xfs_trans_commit()\n\nSplit the the part of xfs_trans_commit() that deals with writing the\ntransaction into the iclog into a separate function. This isolates the\nphysical commit process from the logical commit operation and makes\nit easier to insert different transaction commit paths without affecting\nthe existing algorithm adversely.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "713bf88bba55b8dd91a18e8a59b0f97bf9b0f5de",
      "tree": "8f309ced7d77f10408bc4224e490cca475c4f948",
      "parents": [
        "8e123850863366b738d6dfb9a84045018ff038fc"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 08 11:26:23 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:08 2010 -0500"
      },
      "message": "xfs: fix reservation release commit flag in xfs_bmap_add_attrfork()\n\nxfs_bmap_add_attrfork() passes XFS_TRANS_PERM_LOG_RES to xfs_trans_commit()\nto indicate that the commit should release the permanent log reservation\nas part of the commit. This is wrong - the correct flag is\nXFS_TRANS_RELEASE_LOG_RES - and it is only by the chance that both these\nflags have the value of 0x4 that the code is doing the right thing.\n\nFix it by changing to use the correct flag.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "8e123850863366b738d6dfb9a84045018ff038fc",
      "tree": "ffa0185553c55d235b920e5ff384310be33034c6",
      "parents": [
        "4aaf15d1aa9673dd2cc45c48957c946cb4aa2694"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 08 11:26:03 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:08 2010 -0500"
      },
      "message": "xfs: remove stale parameter from -\u003eiop_unpin method\n\nThe staleness of a object being unpinned can be directly derived\nfrom the object itself - there is no need to extract it from the\nobject then pass it as a parameter into IOP_UNPIN().\n\nThis means we can kill the XFS_LID_BUF_STALE flag - it is set,\nchecked and cleared in the same places XFS_BLI_STALE flag in the\nxfs_buf_log_item so it is now redundant and hence safe to remove.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "4aaf15d1aa9673dd2cc45c48957c946cb4aa2694",
      "tree": "aec24df27ca9cde2d359b77f9ac97f8ad44a1baa",
      "parents": [
        "43f5efc5b59db1b66e39fe9fdfc4ba6a27152afa"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 08 11:24:07 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:08 2010 -0500"
      },
      "message": "xfs: Add inode pin counts to traces\n\nWe don\u0027t record pin counts in inode events right now, and this makes\nit difficult to track down problems related to pinning inodes. Add\nthe pin count to the inode trace class and add trace events for\npinning and unpinning inodes.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "43f5efc5b59db1b66e39fe9fdfc4ba6a27152afa",
      "tree": "100e2b49e622e6933d8f88e052076e23bd943ae1",
      "parents": [
        "e2a07812e93d4a51b1b1a6f15145a1634948db47"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 23 10:10:00 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:07 2010 -0500"
      },
      "message": "xfs: factor log item initialisation\n\nEach log item type does manual initialisation of the log item.\nDelayed logging introduces new fields that need initialisation, so\nfactor all the open coded initialisation into a common function\nfirst.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "e2a07812e93d4a51b1b1a6f15145a1634948db47",
      "tree": "2d13997492891384df9cbbd472296f2cb17f18d7",
      "parents": [
        "fda168c24586ab8e01b0eb68028d78fe3e4fb71a"
      ],
      "author": {
        "name": "Jan Engelhardt",
        "email": "jengelh@medozas.de",
        "time": "Tue Mar 23 09:52:55 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:07 2010 -0500"
      },
      "message": "xfs: add blockdev name to kthreads\n\nThis allows to see in `ps` and similar tools which kthreads are\nallotted to which block device/filesystem, similar to what jbd2\ndoes. As the process name is a fixed 16-char array, no extra\nspace is needed in tasks.\n\n  PID TTY      STAT   TIME COMMAND\n    2 ?        S      0:00 [kthreadd]\n  197 ?        S      0:00  \\_ [jbd2/sda2-8]\n  198 ?        S      0:00  \\_ [ext4-dio-unwrit]\n  204 ?        S      0:00  \\_ [flush-8:0]\n 2647 ?        S      0:00  \\_ [xfs_mru_cache]\n 2648 ?        S      0:00  \\_ [xfslogd/0]\n 2649 ?        S      0:00  \\_ [xfsdatad/0]\n 2650 ?        S      0:00  \\_ [xfsconvertd/0]\n 2651 ?        S      0:00  \\_ [xfsbufd/ram0]\n 2652 ?        S      0:00  \\_ [xfsaild/ram0]\n 2653 ?        S      0:00  \\_ [xfssyncd/ram0]\n\nSigned-off-by: Jan Engelhardt \u003cjengelh@medozas.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n"
    },
    {
      "commit": "fda168c24586ab8e01b0eb68028d78fe3e4fb71a",
      "tree": "015ac765550296cac1bc9b3eee833d99630a83fa",
      "parents": [
        "e40152ee1e1c7a63f4777791863215e3faa37a86"
      ],
      "author": {
        "name": "Zhitong Wang",
        "email": "zhitong.wangzt@alibaba-inc.com",
        "time": "Tue Mar 23 09:51:22 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:07 2010 -0500"
      },
      "message": "xfs: Fix integer overflow in fs/xfs/linux-2.6/xfs_ioctl*.c\n\nThe am_hreq.opcount field in the xfs_attrmulti_by_handle() interface\nis not bounded correctly. The opcount is used to determine the size\nof the buffer required. The size is bounded, but can overflow and so\nthe size checks may not be sufficient to catch invalid opcounts.\nFix it by catching opcount values that would cause overflows before\ncalculating the size.\n\nSigned-off-by: Zhitong Wang \u003czhitong.wangzt@alibaba-inc.com\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n"
    },
    {
      "commit": "18e41da89d55014d25b9a24502ee92b7f50599f9",
      "tree": "5ce8ebd7456f377e4cfbff0ae83e84295617a4a8",
      "parents": [
        "43aa7ac736a4e21aae4882bd8f7c67403aed45b8",
        "5dc6416414fb3ec6e2825fd4d20c8bf1d7fe0395"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 15 12:55:31 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 15 12:55:31 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: check for read permission on src file in the clone ioctl\n"
    },
    {
      "commit": "5dc6416414fb3ec6e2825fd4d20c8bf1d7fe0395",
      "tree": "e15101a2d1302ff6f2830f282197b34060ec963c",
      "parents": [
        "9f680ce04ea19dabbbafe01b57b61930a9b70741"
      ],
      "author": {
        "name": "Dan Rosenberg",
        "email": "dan.j.rosenberg@gmail.com",
        "time": "Sat May 15 11:27:37 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 15 12:05:50 2010 -0400"
      },
      "message": "Btrfs: check for read permission on src file in the clone ioctl\n\nThe existing code would have allowed you to clone a file that was\nonly open for writing\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "3f8bf8f0fd79410fbcbf9dd9910dbc9d4882c94f",
      "tree": "86792764365ca7b40a21e5eb8fc4f7b355088535",
      "parents": [
        "c28f3f8660697d03afbdb581781b94ff6222a585",
        "684bdc7ff95e0c1d4b0bcf236491840b55a54189"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 15 09:03:15 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 15 09:03:15 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  JFS: Free sbi memory in error path\n  fs/sysv: dereferencing ERR_PTR()\n  Fix double-free in logfs\n  Fix the regression created by \"set S_DEAD on unlink()...\" commit\n"
    },
    {
      "commit": "684bdc7ff95e0c1d4b0bcf236491840b55a54189",
      "tree": "10eada69ce686f903fbf01d2e40311371d5b98e5",
      "parents": [
        "404e781249f003a37a140756fc4aeae463dcb217"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Mon Apr 12 16:44:08 2010 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 15 07:16:34 2010 -0400"
      },
      "message": "JFS: Free sbi memory in error path\n\nI spotted the missing kfree() while removing the BKL.\n\n[akpm@linux-foundation.org: avoid multiple returns so it doesn\u0027t happen again]\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nCc: Dave Kleikamp \u003cshaggy@austin.ibm.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": "404e781249f003a37a140756fc4aeae463dcb217",
      "tree": "5eb0f81657ebecdd747583df54a261a4e305df3f",
      "parents": [
        "265624495f5acf6077f8f8d264f8170573d8d752"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Wed Apr 21 12:30:32 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 15 07:16:33 2010 -0400"
      },
      "message": "fs/sysv: dereferencing ERR_PTR()\n\nI moved the dir_put_page() inside the if condition so we don\u0027t dereference\n\"page\", if it\u0027s an ERR_PTR().\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "265624495f5acf6077f8f8d264f8170573d8d752",
      "tree": "76e1b8cce3ac0116ade7df91c0d64471cf7cc03d",
      "parents": [
        "d83c49f3e36cecd2e8823b6c48ffba083b8a5704"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Apr 28 20:57:02 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 15 07:16:33 2010 -0400"
      },
      "message": "Fix double-free in logfs\n\niput() is needed *until* we\u0027d done successful d_alloc_root()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d83c49f3e36cecd2e8823b6c48ffba083b8a5704",
      "tree": "a304de4eb43652d2a9528d4b43f798ab821c8b93",
      "parents": [
        "6a251b0ab67989f468f4cb65179e0cf40cf8c295"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Apr 30 17:17:09 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 15 07:16:33 2010 -0400"
      },
      "message": "Fix the regression created by \"set S_DEAD on unlink()...\" commit\n\n1) i_flags simply doesn\u0027t work for mount/unlink race prevention;\nwe may have many links to file and rm on one of those obviously\nshouldn\u0027t prevent bind on top of another later on.  To fix it\nright way we need to mark _dentry_ as unsuitable for mounting\nupon; new flag (DCACHE_CANT_MOUNT) is protected by d_flags and\ni_mutex on the inode in question.  Set it (with dont_mount(dentry))\nin unlink/rmdir/etc., check (with cant_mount(dentry)) in places\nin namespace.c that used to check for S_DEAD.  Setting S_DEAD\nis still needed in places where we used to set it (for directories\ngetting killed), since we rely on it for readdir/rmdir race\nprevention.\n\n2) rename()/mount() protection has another bogosity - we unhash\nthe target before we\u0027d checked that it\u0027s not a mountpoint.  Fixed.\n\n3) ancient bogosity in pivot_root() - we locked i_mutex on the\nright directory, but checked S_DEAD on the different (and wrong)\none.  Noticed and fixed.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4fc4c3ce0dc1096cbd0daa3fe8f6905cbec2b87e",
      "tree": "40a48fe2eabbab01133047ee5055ab8f853deac4",
      "parents": [
        "97b2073ff04814a7f2fef5fe0e82bb008cad7d8e",
        "b3b38d842fa367d862b83e7670af4e0fd6a80fc0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 14 11:49:42 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 14 11:49:42 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.infradead.org/users/eparis/notify\n\n* \u0027for-linus\u0027 of git://git.infradead.org/users/eparis/notify:\n  inotify: don\u0027t leak user struct on inotify release\n  inotify: race use after free/double free in inotify inode marks\n  inotify: clean up the inotify_add_watch out path\n  Inotify: undefined reference to `anon_inode_getfd\u0027\n\nManual merge to remove duplicate \"select ANON_INODES\" from Kconfig file\n"
    },
    {
      "commit": "b3b38d842fa367d862b83e7670af4e0fd6a80fc0",
      "tree": "db803231178ae41f21240017a3119dea3a4d3589",
      "parents": [
        "e08733446e72b983fed850fc5d8bd21b386feb29"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Wed May 12 15:34:07 2010 -0700"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri May 14 11:53:36 2010 -0400"
      },
      "message": "inotify: don\u0027t leak user struct on inotify release\n\ninotify_new_group() receives a get_uid-ed user_struct and saves the\nreference on group-\u003einotify_data.user.  The problem is that free_uid() is\nnever called on it.\n\nIssue seem to be introduced by 63c882a0 (inotify: reimplement inotify\nusing fsnotify) after 2.6.30.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nEric Paris \u003ceparis@parisplace.org\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "e08733446e72b983fed850fc5d8bd21b386feb29",
      "tree": "6b169001ff9faa82577341fbfa4cbcd9ccf00663",
      "parents": [
        "3dbc6fb6a3c8a7dc164ae330ab024a3fe65ae53e"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue May 11 17:17:40 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri May 14 11:52:57 2010 -0400"
      },
      "message": "inotify: race use after free/double free in inotify inode marks\n\nThere is a race in the inotify add/rm watch code.  A task can find and\nremove a mark which doesn\u0027t have all of it\u0027s references.  This can\nresult in a use after free/double free situation.\n\nTask A\t\t\t\t\tTask B\n------------\t\t\t\t-----------\ninotify_new_watch()\n allocate a mark (refcnt \u003d\u003d 1)\n add it to the idr\n\t\t\t\t\tinotify_rm_watch()\n\t\t\t\t\t inotify_remove_from_idr()\n\t\t\t\t\t  fsnotify_put_mark()\n\t\t\t\t\t      refcnt hits 0, free\n take reference because we are on idr\n [at this point it is a use after free]\n [time goes on]\n refcnt may hit 0 again, double free\n\nThe fix is to take the reference BEFORE the object can be found in the\nidr.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\nCc: \u003cstable@kernel.org\u003e\n"
    },
    {
      "commit": "3dbc6fb6a3c8a7dc164ae330ab024a3fe65ae53e",
      "tree": "b04e140c78e644b18f7aa6ce31d59245dc39f0c0",
      "parents": [
        "e7b702b1a8f2a6961367da903217e669be0f099f"
      ],
      "author": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Tue May 11 17:16:23 2010 -0400"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Fri May 14 11:51:07 2010 -0400"
      },
      "message": "inotify: clean up the inotify_add_watch out path\n\ninotify_add_watch explictly frees the unused inode mark, but it can just\nuse the generic code.  Just do that.\n\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "4462dc02842698f173f518c1f5ce79c0fb89395a",
      "tree": "efef7ddcacfd5e119f2ff98e7eb970862d392b6d",
      "parents": [
        "002baeecf53677d2034113e34197ec221f42e037",
        "3d69438031b00c601c991ab447cafb7d5c3c59a6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 13 10:36:16 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 13 10:36:16 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6:\n  cifs: guard against hardlinking directories\n"
    },
    {
      "commit": "002baeecf53677d2034113e34197ec221f42e037",
      "tree": "081c54c4a9a266a894a00165e97dabfb212a2470",
      "parents": [
        "fc8e38f142dd59f81306ff6a81c1351e9eb0e014"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu May 13 12:52:57 2010 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 13 08:46:04 2010 -0700"
      },
      "message": "vfs: Fix O_NOFOLLOW behavior for paths with trailing slashes\n\nAccording to specification\n\n\tmkdir d; ln -s d a; open(\"a/\", O_NOFOLLOW | O_RDONLY)\n\nshould return success but currently it returns ELOOP.  This is a\nregression caused by path lookup cleanup patch series.\n\nFix the code to ignore O_NOFOLLOW in case the provided path has trailing\nslashes.\n\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nReported-by: Marius Tolzmann \u003ctolzmann@molgen.mpg.de\u003e\nAcked-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cdf5f61ed1d64d50eb9cf10071ab40836f5f9f91",
      "tree": "d67166525b89055b44ecf52cd9ae395a676877f5",
      "parents": [
        "769d9968e42c995eaaf61ac5583d998f32e0769a",
        "e84346b726ea90a8ed470bc81c4136a7b8710ea5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 12 18:47:29 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 12 18:47:29 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  ceph: preserve seq # on requeued messages after transient transport errors\n  ceph: fix cap removal races\n  ceph: zero unused message header, footer fields\n  ceph: fix locking for waking session requests after reconnect\n  ceph: resubmit requests on pg mapping change (not just primary change)\n  ceph: fix open file counting on snapped inodes when mds returns no caps\n  ceph: unregister osd request on failure\n  ceph: don\u0027t use writeback_control in writepages completion\n  ceph: unregister bdi before kill_anon_super releases device name\n"
    },
    {
      "commit": "7ac512aa8237c43331ffaf77a4fd8b8d684819ba",
      "tree": "0fe199f0364c5b54012691c9e4ff4a11767d1797",
      "parents": [
        "91af70814105f4c05e6e11b51c3269907b71794b"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed May 12 15:34:03 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 12 18:23:58 2010 -0700"
      },
      "message": "CacheFiles: Fix error handling in cachefiles_determine_cache_security()\n\ncachefiles_determine_cache_security() is expected to return with a\nsecurity override in place.  However, if set_create_files_as() fails, we\nfail to do this.  In this case, we should just reinstate the security\noverride that was set by the caller.\n\nFurthermore, if set_create_files_as() fails, we should dispose of the\nnew credentials we were in the process of creating.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e7b702b1a8f2a6961367da903217e669be0f099f",
      "tree": "bd2a49f1fec1035256fe90e120fe878fdfa2ac12",
      "parents": [
        "cea0d767c29669bf89f86e4aee46ef462d2ebae8"
      ],
      "author": {
        "name": "Russell King",
        "email": "rmk@arm.linux.org.uk",
        "time": "Sun Apr 18 21:25:11 2010 +0100"
      },
      "committer": {
        "name": "Eric Paris",
        "email": "eparis@redhat.com",
        "time": "Wed May 12 11:03:40 2010 -0400"
      },
      "message": "Inotify: undefined reference to `anon_inode_getfd\u0027\n\nFix:\n\nfs/built-in.o: In function `sys_inotify_init1\u0027:\nsummary.c:(.text+0x347a4): undefined reference to `anon_inode_getfd\u0027\n\nfound by kautobuild with arms bcmring_defconfig, which ends up with\nINOTIFY_USER enabled (through the \u0027default y\u0027) but leaves ANON_INODES\nunset.  However, inotify_user.c uses anon_inode_getfd().\n\nSigned-off-by: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\nSigned-off-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "e84346b726ea90a8ed470bc81c4136a7b8710ea5",
      "tree": "99a90ef86d38a51e39ed69af318e6cfe32023879",
      "parents": [
        "f818a73674c5d197f66b636a46d7d578d7258129"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 21:20:38 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 21:20:38 2010 -0700"
      },
      "message": "ceph: preserve seq # on requeued messages after transient transport errors\n\nIf the tcp connection drops and we reconnect to reestablish a stateful\nsession (with the mds), we need to resend previously sent (and possibly\nreceived) messages with the _same_ seq # so that they can be dropped on\nthe other end if needed.  Only assign a new seq once after the message is\nqueued.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "f818a73674c5d197f66b636a46d7d578d7258129",
      "tree": "90c485b5ca0a211b84ad8feddfce4f301de3d5c9",
      "parents": [
        "45c6ceb547ad2d98215351974a4686bf8cb13e14"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 20:56:31 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 20:56:31 2010 -0700"
      },
      "message": "ceph: fix cap removal races\n\nThe iterate_session_caps helper traverses the session caps list and tries\nto grab an inode reference.  However, the __ceph_remove_cap was clearing\nthe inode backpointer _before_ removing itself from the session list,\ncausing a null pointer dereference.\n\nClear cap-\u003eci under protection of s_cap_lock to avoid the race, and to\ntightly couple the list and backpointer state.  Use a local flag to\nindicate whether we are releasing the cap, as cap-\u003esession may be modified\nby a racing thread in iterate_session_caps.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "34441427aab4bdb3069a4ffcda69a99357abcb2e",
      "tree": "3beebde910f25b0945e9105017fd743c9e5241a5",
      "parents": [
        "3c904afd7358e9ef515eb5df36b6f25c2b7fc2da"
      ],
      "author": {
        "name": "Robin Holt",
        "email": "holt@sgi.com",
        "time": "Tue May 11 14:06:46 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 11 17:33:41 2010 -0700"
      },
      "message": "revert \"procfs: provide stack information for threads\" and its fixup commits\n\nOriginally, commit d899bf7b (\"procfs: provide stack information for\nthreads\") attempted to introduce a new feature for showing where the\nthreadstack was located and how many pages are being utilized by the\nstack.\n\nCommit c44972f1 (\"procfs: disable per-task stack usage on NOMMU\") was\napplied to fix the NO_MMU case.\n\nCommit 89240ba0 (\"x86, fs: Fix x86 procfs stack information for threads on\n64-bit\") was applied to fix a bug in ia32 executables being loaded.\n\nCommit 9ebd4eba7 (\"procfs: fix /proc/\u003cpid\u003e/stat stack pointer for kernel\nthreads\") was applied to fix a bug which had kernel threads printing a\nuserland stack address.\n\nCommit 1306d603f (\u0027proc: partially revert \"procfs: provide stack\ninformation for threads\"\u0027) was then applied to revert the stack pages\nbeing used to solve a significant performance regression.\n\nThis patch nearly undoes the effect of all these patches.\n\nThe reason for reverting these is it provides an unusable value in\nfield 28.  For x86_64, a fork will result in the task-\u003estack_start\nvalue being updated to the current user top of stack and not the stack\nstart address.  This unpredictability of the stack_start value makes\nit worthless.  That includes the intended use of showing how much stack\nspace a thread has.\n\nOther architectures will get different values.  As an example, ia64\ngets 0.  The do_fork() and copy_process() functions appear to treat the\nstack_start and stack_size parameters as architecture specific.\n\nI only partially reverted c44972f1 (\"procfs: disable per-task stack usage\non NOMMU\") .  If I had completely reverted it, I would have had to change\nmm/Makefile only build pagewalk.o when CONFIG_PROC_PAGE_MONITOR is\nconfigured.  Since I could not test the builds without significant effort,\nI decided to not change mm/Makefile.\n\nI only partially reverted 89240ba0 (\"x86, fs: Fix x86 procfs stack\ninformation for threads on 64-bit\") .  I left the KSTK_ESP() change in\nplace as that seemed worthwhile.\n\nSigned-off-by: Robin Holt \u003cholt@sgi.com\u003e\nCc: Stefani Seibold \u003cstefani@seibold.net\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Michal Simek \u003cmonstr@monstr.eu\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "45c6ceb547ad2d98215351974a4686bf8cb13e14",
      "tree": "f7d5dc6b7900faebef1a29a5e0af5ac263a64337",
      "parents": [
        "9abf82b8bc93dd904738a71ca69aa5df356d4d24"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 15:01:51 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 15:17:40 2010 -0700"
      },
      "message": "ceph: zero unused message header, footer fields\n\nWe shouldn\u0027t leak any prior memory contents to other parties.  And random\ndata, particularly in the \u0027version\u0027 field, can cause problems down the\nline.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "3d69438031b00c601c991ab447cafb7d5c3c59a6",
      "tree": "f40d66a255c4169b43079252a4c96868c097ddab",
      "parents": [
        "05ce7bfe547c9fa967d9cab6c37867a9cb6fb3fa"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue May 11 14:59:55 2010 -0400"
      },
      "committer": {
        "name": "Steve French",
        "email": "sfrench@us.ibm.com",
        "time": "Tue May 11 20:57:50 2010 +0000"
      },
      "message": "cifs: guard against hardlinking directories\n\nWhen we made serverino the default, we trusted that the field sent by the\nserver in the \"uniqueid\" field was actually unique. It turns out that it\nisn\u0027t reliably so.\n\nSamba, in particular, will just put the st_ino in the uniqueid field when\nunix extensions are enabled. When a share spans multiple filesystems, it\u0027s\nquite possible that there will be collisions. This is a server bug, but\nwhen the inodes in question are a directory (as is often the case) and\nthere is a collision with the root inode of the mount, the result is a\nkernel panic on umount.\n\nFix this by checking explicitly for directory inodes with the same\nuniqueid. If that is the case, then we can assume that using server inode\nnumbers will be a problem and that they should be disabled.\n\nFixes Samba bugzilla 7407\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nCC: Stable \u003cstable@kernel.org\u003e\nReviewed-and-Tested-by: Suresh Jayaraman \u003csjayaraman@suse.de\u003e\nSigned-off-by: Steve French \u003csfrench@us.ibm.com\u003e\n"
    },
    {
      "commit": "c61ea31dac0319ec64b33725917bda81fc293a25",
      "tree": "05a4f3011ea8b334795aae606d89bcf27e3e26c5",
      "parents": [
        "7d6fb7bd1919517937ec390f6ca2d7bcf4f89fb6"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue May 11 16:51:39 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 11 10:07:53 2010 -0700"
      },
      "message": "CacheFiles: Fix occasional EIO on call to vfs_unlink()\n\nFix an occasional EIO returned by a call to vfs_unlink():\n\n\t[ 4868.465413] CacheFiles: I/O Error: Unlink failed\n\t[ 4868.465444] FS-Cache: Cache cachefiles stopped due to I/O error\n\t[ 4947.320011] CacheFiles: File cache on md3 unregistering\n\t[ 4947.320041] FS-Cache: Withdrawing cache \"mycache\"\n\t[ 5127.348683] FS-Cache: Cache \"mycache\" added (type cachefiles)\n\t[ 5127.348716] CacheFiles: File cache on md3 registered\n\t[ 7076.871081] CacheFiles: I/O Error: Unlink failed\n\t[ 7076.871130] FS-Cache: Cache cachefiles stopped due to I/O error\n\t[ 7116.780891] CacheFiles: File cache on md3 unregistering\n\t[ 7116.780937] FS-Cache: Withdrawing cache \"mycache\"\n\t[ 7296.813394] FS-Cache: Cache \"mycache\" added (type cachefiles)\n\t[ 7296.813432] CacheFiles: File cache on md3 registered\n\nWhat happens is this:\n\n (1) A cached NFS file is seen to have become out of date, so NFS retires the\n     object and immediately acquires a new object with the same key.\n\n (2) Retirement of the old object is done asynchronously - so the lookup/create\n     to generate the new object may be done first.\n\n     This can be a problem as the old object and the new object must exist at\n     the same point in the backing filesystem (i.e. they must have the same\n     pathname).\n\n (3) The lookup for the new object sees that a backing file already exists,\n     checks to see whether it is valid and sees that it isn\u0027t.  It then deletes\n     that file and creates a new one on disk.\n\n (4) The retirement phase for the old file is then performed.  It tries to\n     delete the dentry it has, but ext4_unlink() returns -EIO because the inode\n     attached to that dentry no longer matches the inode number associated with\n     the filename in the parent directory.\n\nThe trace below shows this quite well.\n\n\t[md5sum] \u003d\u003d\u003e __fscache_relinquish_cookie(ffff88002d12fb58{NFS.fh,ffff88002ce62100},1)\n\t[md5sum] \u003d\u003d\u003e __fscache_acquire_cookie({NFS.server},{NFS.fh},ffff88002ce62100)\n\nNFS has retired the old cookie and asked for a new one.\n\n\t[kslowd] \u003d\u003d\u003e fscache_object_state_machine({OBJ52,OBJECT_ACTIVE,24})\n\t[kslowd] \u003c\u003d\u003d fscache_object_state_machine() [-\u003eOBJECT_DYING]\n\t[kslowd] \u003d\u003d\u003e fscache_object_state_machine({OBJ53,OBJECT_INIT,0})\n\t[kslowd] \u003c\u003d\u003d fscache_object_state_machine() [-\u003eOBJECT_LOOKING_UP]\n\t[kslowd] \u003d\u003d\u003e fscache_object_state_machine({OBJ52,OBJECT_DYING,24})\n\t[kslowd] \u003c\u003d\u003d fscache_object_state_machine() [-\u003eOBJECT_RECYCLING]\n\nThe old object (OBJ52) is going through the terminal states to get rid of it,\nwhilst the new object - (OBJ53) - is coming into being.\n\n\t[kslowd] \u003d\u003d\u003e fscache_object_state_machine({OBJ53,OBJECT_LOOKING_UP,0})\n\t[kslowd] \u003d\u003d\u003e cachefiles_walk_to_object({ffff88003029d8b8},OBJ53,@68,)\n\t[kslowd] lookup \u0027@68\u0027\n\t[kslowd] next -\u003e ffff88002ce41bd0 positive\n\t[kslowd] advance\n\t[kslowd] lookup \u0027Es0g00og0_Nd_XCYe3BOzvXrsBLMlN6aw16M1htaA\u0027\n\t[kslowd] next -\u003e ffff8800369faac8 positive\n\nThe new object has looked up the subdir in which the file would be in (getting\ndentry ffff88002ce41bd0) and then looked up the file itself (getting dentry\nffff8800369faac8).\n\n\t[kslowd] validate \u0027Es0g00og0_Nd_XCYe3BOzvXrsBLMlN6aw16M1htaA\u0027\n\t[kslowd] \u003d\u003d\u003e cachefiles_bury_object(,\u0027@68\u0027,\u0027Es0g00og0_Nd_XCYe3BOzvXrsBLMlN6aw16M1htaA\u0027)\n\t[kslowd] remove ffff8800369faac8 from ffff88002ce41bd0\n\t[kslowd] unlink stale object\n\t[kslowd] \u003c\u003d\u003d cachefiles_bury_object() \u003d 0\n\nIt then checks the file\u0027s xattrs to see if it\u0027s valid.  NFS says that the\nauxiliary data indicate the file is out of date (obvious to us - that\u0027s why NFS\nditched the old version and got a new one).  CacheFiles then deletes the old\nfile (dentry ffff8800369faac8).\n\n\t[kslowd] redo lookup\n\t[kslowd] lookup \u0027Es0g00og0_Nd_XCYe3BOzvXrsBLMlN6aw16M1htaA\u0027\n\t[kslowd] next -\u003e ffff88002cd94288 negative\n\t[kslowd] create -\u003e ffff88002cd94288{ffff88002cdaf238{ino\u003d148247}}\n\nCacheFiles then redoes the lookup and gets a negative result in a new dentry\n(ffff88002cd94288) which it then creates a file for.\n\n\t[kslowd] \u003d\u003d\u003e cachefiles_mark_object_active(,OBJ53)\n\t[kslowd] \u003c\u003d\u003d cachefiles_mark_object_active() \u003d 0\n\t[kslowd] \u003d\u003d\u003d OBTAINED_OBJECT \u003d\u003d\u003d\n\t[kslowd] \u003c\u003d\u003d cachefiles_walk_to_object() \u003d 0 [148247]\n\t[kslowd] \u003c\u003d\u003d fscache_object_state_machine() [-\u003eOBJECT_AVAILABLE]\n\nThe new object is then marked active and the state machine moves to the\navailable state - at which point NFS can start filling the object.\n\n\t[kslowd] \u003d\u003d\u003e fscache_object_state_machine({OBJ52,OBJECT_RECYCLING,20})\n\t[kslowd] \u003d\u003d\u003e fscache_release_object()\n\t[kslowd] \u003d\u003d\u003e cachefiles_drop_object({OBJ52,2})\n\t[kslowd] \u003d\u003d\u003e cachefiles_delete_object(,OBJ52{ffff8800369faac8})\n\nThe old object, meanwhile, goes on with being retired.  If allocation occurs\nfirst, cachefiles_delete_object() has to wait for dir-\u003ed_inode-\u003ei_mutex to\nbecome available before it can continue.\n\n\t[kslowd] \u003d\u003d\u003e cachefiles_bury_object(,\u0027@68\u0027,\u0027Es0g00og0_Nd_XCYe3BOzvXrsBLMlN6aw16M1htaA\u0027)\n\t[kslowd] remove ffff8800369faac8 from ffff88002ce41bd0\n\t[kslowd] unlink stale object\n\tEXT4-fs warning (device sda6): ext4_unlink: Inode number mismatch in unlink (148247!\u003d148193)\n\tCacheFiles: I/O Error: Unlink failed\n\tFS-Cache: Cache cachefiles stopped due to I/O error\n\nCacheFiles then tries to delete the file for the old object, but the dentry it\nhas (ffff8800369faac8) no longer points to a valid inode for that directory\nentry, and so ext4_unlink() returns -EIO when de-\u003einode does not match i_ino.\n\n\t[kslowd] \u003c\u003d\u003d cachefiles_bury_object() \u003d -5\n\t[kslowd] \u003c\u003d\u003d cachefiles_delete_object() \u003d -5\n\t[kslowd] \u003c\u003d\u003d fscache_object_state_machine() [-\u003eOBJECT_DEAD]\n\t[kslowd] \u003d\u003d\u003e fscache_object_state_machine({OBJ53,OBJECT_AVAILABLE,0})\n\t[kslowd] \u003c\u003d\u003d fscache_object_state_machine() [-\u003eOBJECT_ACTIVE]\n\n(Note that the above trace includes extra information beyond that produced by\nthe upstream code).\n\nThe fix is to note when an object that is being retired has had its object\ndeleted preemptively by a replacement object that is being created, and to\nskip the second removal attempt in such a case.\n\nReported-by: Greg M \u003cgregm@servu.net.au\u003e\nReported-by: Mark Moseley \u003cmoseleymark@gmail.com\u003e\nReported-by: Romain DEGEZ \u003cromain.degez@smartjog.com\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9abf82b8bc93dd904738a71ca69aa5df356d4d24",
      "tree": "208c5112173832092f93b8d91b8e8ec6f36209aa",
      "parents": [
        "d85b705663905b3dae30007f824355bdcfcf3f00"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 10 21:58:38 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 09:53:57 2010 -0700"
      },
      "message": "ceph: fix locking for waking session requests after reconnect\n\nThe session-\u003es_waiting list is protected by mdsc-\u003emutex, not s_mutex.  This\nwas causing (rare) s_waiting list corruption.\n\nFix errors paths too, while we\u0027re here.  A more thorough cleanup of this\nfunction is coming soon.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "d85b705663905b3dae30007f824355bdcfcf3f00",
      "tree": "e47262683ed704786be3f0dae62bc4c57bd50ad7",
      "parents": [
        "04d000eb358919043da538f197d63f2a5924a525"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 10 10:24:48 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 09:53:56 2010 -0700"
      },
      "message": "ceph: resubmit requests on pg mapping change (not just primary change)\n\nOSD requests need to be resubmitted on any pg mapping change, not just when\nthe pg primary changes.  Resending only when the primary changes results in\noccasional \u0027hung\u0027 requests during osd cluster recovery or rebalancing.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "04d000eb358919043da538f197d63f2a5924a525",
      "tree": "725f4031c083323b63664f03b4d0d7ce9c183b21",
      "parents": [
        "0ceed5db321ac0f9782e77dda476ebe28a8e2199"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri May 07 11:26:34 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 09:53:55 2010 -0700"
      },
      "message": "ceph: fix open file counting on snapped inodes when mds returns no caps\n\nIt\u0027s possible the MDS will not issue caps on a snapped inode, in which case\nan open request may not __ceph_get_fmode(), botching the open file\ncounting.  (This is actually a server bug, but the client shouldn\u0027t BUG out\nin this case.)\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0ceed5db321ac0f9782e77dda476ebe28a8e2199",
      "tree": "356f6a3f2dc26ba04589e9abd603139c62094730",
      "parents": [
        "54ad023ba8108d0163acc931ed4b5e4a8a3a7327"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 09:53:18 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 11 09:53:18 2010 -0700"
      },
      "message": "ceph: unregister osd request on failure\n\nThe osd request wasn\u0027t being unregistered when the osd returned a failure\ncode, even though the result was returned to the caller.  This would cause\nit to eventually time out, and then crash the kernel when it tried to\nresend the request using a stale page vector.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "f7422464b57088071201cd94027662d8469f153b",
      "tree": "d6eea687462815fbcbe43aa6b273f672babd5f2e",
      "parents": [
        "b77b907fae863f3bc546a336a8bc5e660d371788"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Mon May 10 16:46:08 2010 +0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 10 09:48:10 2010 -0700"
      },
      "message": "autofs4-2.6.34-rc1 - fix link_count usage\n\nAfter commit 1f36f774b2 (\"Switch !O_CREAT case to use of do_last()\") in\n2.6.34-rc1 autofs direct mounts stopped working.  This is caused by\ncurrent-\u003elink_count being 0 when -\u003efollow_link() is called from\ndo_filp_open().\n\nI can\u0027t work out why this hasn\u0027t been seen before Als patch series.\n\nThis patch removes the autofs dependence on current-\u003elink_count.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "91677467163b847f1a5497789a893ada97f375b6",
      "tree": "2b505e413ad1fd2f5237b968747a87a7e9983695",
      "parents": [
        "4a2253313653bcc4126287818b676f95ac26dc09",
        "17d2c0a0c4d4e074f0a2a5c0090ff6d88f5e1d44"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 07 13:59:48 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 07 13:59:48 2010 -0700"
      },
      "message": "Merge branch \u0027bugfixes\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027bugfixes\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6:\n  NFS: Fix RCU issues in the NFSv4 delegation code\n  NFSv4: Fix the locking in nfs_inode_reclaim_delegation()\n"
    },
    {
      "commit": "54ad023ba8108d0163acc931ed4b5e4a8a3a7327",
      "tree": "93edeaba0b8f851c9b5a18c6e42c92b2237480c5",
      "parents": [
        "5dfc589a8467470226feccdc50f1b32713318e7b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed May 05 21:30:35 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed May 05 21:31:40 2010 -0700"
      },
      "message": "ceph: don\u0027t use writeback_control in writepages completion\n\nThe -\u003ewritepages writeback_control is not still valid in the writepages\ncompletion.  We were touching it solely to adjust pages_skipped when there\nwas a writeback error (EIO, ENOSPC, EPERM due to bad osd credentials),\ncausing an oops in the writeback code shortly thereafter.  Updating\npages_skipped on error isn\u0027t correct anyway, so let\u0027s just rip out this\n(clearly broken) code to pass the wbc to the completion.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "7572e56314a7e2568f7196862222b45cfb9d6eda",
      "tree": "345bc292de14b24f28d5367f999bcf7500abedc3",
      "parents": [
        "a66f6375bdeb64d7a56c532bda7c006358845820",
        "d577632e65ea01fb3b124b652d7bd2381251da3c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 04 16:33:18 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 04 16:33:18 2010 -0700"
      },
      "message": "Merge branch \u0027fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2\n\n* \u0027fixes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2:\n  ocfs2: Avoid a gcc warning in ocfs2_wipe_inode().\n  ocfs2: Avoid direct write if we fall back to buffered I/O\n  ocfs2_dlmfs: Fix math error when reading LVB.\n  ocfs2: Update VFS inode\u0027s id info after reflink.\n  ocfs2: potential ERR_PTR dereference on error paths\n  ocfs2: Add directory entry later in ocfs2_symlink() and ocfs2_mknod()\n  ocfs2: use OCFS2_INODE_SKIP_ORPHAN_DIR in ocfs2_mknod error path\n  ocfs2: use OCFS2_INODE_SKIP_ORPHAN_DIR in ocfs2_symlink error path\n  ocfs2: add OCFS2_INODE_SKIP_ORPHAN_DIR flag and honor it in the inode wipe code\n  ocfs2: Reset status if we want to restart file extension.\n  ocfs2: Compute metaecc for superblocks during online resize.\n  ocfs2: Check the owner of a lockres inside the spinlock\n  ocfs2: one more warning fix in ocfs2_file_aio_write(), v2\n  ocfs2_dlmfs: User DLM_* when decoding file open flags.\n"
    },
    {
      "commit": "5dfc589a8467470226feccdc50f1b32713318e7b",
      "tree": "82998c57555055cf3763e9a4fc757d5de0628c21",
      "parents": [
        "b0930f8d38c6ab76dc8222a5a910a21392d38208"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 04 16:14:46 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 04 16:14:46 2010 -0700"
      },
      "message": "ceph: unregister bdi before kill_anon_super releases device name\n\nUnregister and destroy the bdi in put_super, after mount is r/o, but before\nput_anon_super releases the device name.\n\nFor symmetry, bdi_destroy in destroy_client (we bdi_init in create_client).\n\nOnly set s_bdi if bdi_register succeeds, since we use it to decide whether\nto bdi_unregister.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "d577632e65ea01fb3b124b652d7bd2381251da3c",
      "tree": "64a567b77fb5163572375f457ea7eeedecf60f30",
      "parents": [
        "6b933c8e6f1a2f3118082c455eef25f9b1ac7b45"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon May 03 19:15:49 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon May 03 19:15:49 2010 -0700"
      },
      "message": "ocfs2: Avoid a gcc warning in ocfs2_wipe_inode().\n\ngcc warns that a variable is uninitialized.  It\u0027s actually handled, but\nan early return fools gcc.  Let\u0027s just initialize the variable to a\ngarbage value that will crash if the usage is ever broken.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "d93ac51c7a129db7a1431d859a3ef45a0b1f3fc5",
      "tree": "c584c3df3abf2c7624d76f7d711b7db1050aa9c4",
      "parents": [
        "37e27e36bc416b07d853d493e6818d6a785507a2",
        "b0930f8d38c6ab76dc8222a5a910a21392d38208"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 03 16:36:19 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 03 16:36:19 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  ceph: remove bad auth_x kmem_cache\n  ceph: fix lockless caps check\n  ceph: clear dir complete, invalidate dentry on replayed rename\n  ceph: fix direct io truncate offset\n  ceph: discard incoming messages with bad seq #\n  ceph: fix seq counting for skipped messages\n  ceph: add missing #includes\n  ceph: fix leaked spinlock during mds reconnect\n  ceph: print more useful version info on module load\n  ceph: fix snap realm splits\n  ceph: clear dir complete on d_move\n"
    },
    {
      "commit": "b0930f8d38c6ab76dc8222a5a910a21392d38208",
      "tree": "0aad65459eaa8fd5fdf8b621eb9b851e7864ae6e",
      "parents": [
        "7ff899da02cb674211858fcd919f8b4511a4423f"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Apr 29 13:26:53 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:25 2010 -0700"
      },
      "message": "ceph: remove bad auth_x kmem_cache\n\nIt\u0027s useless, since our allocations are already a power of 2.  And it was\nallocated per-instance (not globally), which caused a name collision when\nwe tried to mount a second file system with auth_x enabled.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "7ff899da02cb674211858fcd919f8b4511a4423f",
      "tree": "a200faf72a5ff982a03287c65809d0c78ef11bfd",
      "parents": [
        "ea1409f96197c1bffe5d7d5bc967b3445edcc1fa"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Apr 23 10:25:33 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:25 2010 -0700"
      },
      "message": "ceph: fix lockless caps check\n\nThe __ variant requires caller to hold i_lock.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ea1409f96197c1bffe5d7d5bc967b3445edcc1fa",
      "tree": "cbbd8ed4cca9bb718a596277f1152f2f1d629c37",
      "parents": [
        "5c6a2cdb4fe8aaf6b54f022c14f13d2a12b45914"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Apr 28 16:12:06 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:25 2010 -0700"
      },
      "message": "ceph: clear dir complete, invalidate dentry on replayed rename\n\nIf a rename operation is resent to the MDS following an MDS restart, the\nclient does not get a full reply (containing the resulting metadata) back.\nIn that case, a ceph_rename() needs to compensate by doing anything useful\nthat fill_inode() would have, like d_move().\n\nIt also needs to invalidate the dentry (to workaround the vfs_rename_dir()\nbug) and clear the dir complete flag, just like fill_trace().\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "5c6a2cdb4fe8aaf6b54f022c14f13d2a12b45914",
      "tree": "68b777f391b68f91ba8c587ded4f9d9526f9279a",
      "parents": [
        "ae18756b9fa7bb93132cff06cd8575e3d46633f9"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Apr 22 13:48:59 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:25 2010 -0700"
      },
      "message": "ceph: fix direct io truncate offset\n\ntruncate_inode_pages_range wants the end offset to align with the last byte\nin a page.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ae18756b9fa7bb93132cff06cd8575e3d46633f9",
      "tree": "e09f5c89b4611e2c53bb50118d8fa8133b58c73b",
      "parents": [
        "684be25c52a1e43638ced160be0b0b46596e7f2b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Apr 22 07:47:01 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:24 2010 -0700"
      },
      "message": "ceph: discard incoming messages with bad seq #\n\nWe can get old message seq #\u0027s after a tcp reconnect for stateful sessions\n(i.e., the MDS).  If we get a higher seq #, that is an error, and we\nshouldn\u0027t see any bad seq #\u0027s for stateless (mon, osd) connections.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "684be25c52a1e43638ced160be0b0b46596e7f2b",
      "tree": "c6cde28f26e12f1ef33990a6d8cb10ab975dddba",
      "parents": [
        "d45d0d970f495e04a4e4f46acd74e90f4a4564f9"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Apr 21 20:45:59 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:24 2010 -0700"
      },
      "message": "ceph: fix seq counting for skipped messages\n\nIncrement in_seq even when the message is skipped for some reason.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "d45d0d970f495e04a4e4f46acd74e90f4a4564f9",
      "tree": "f5be41231ee8b925c01b3d291f8919b8e451101d",
      "parents": [
        "0b0c06d1476290cea248923c0ee7be9fd61cacea"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Apr 20 15:20:33 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:24 2010 -0700"
      },
      "message": "ceph: add missing #includes\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0b0c06d1476290cea248923c0ee7be9fd61cacea",
      "tree": "557eacf9666cf0c2f989c2ff1955805d5557d07d",
      "parents": [
        "c8f16584ac85444d51d8753c5df502350cfc7bb7"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Apr 20 10:27:13 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:23 2010 -0700"
      },
      "message": "ceph: fix leaked spinlock during mds reconnect\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "c8f16584ac85444d51d8753c5df502350cfc7bb7",
      "tree": "8fd47c13e4577e10487b3cba001a029ba43aa669",
      "parents": [
        "91dee39eebcfb47085c4d457a584b0e9723b6ca0"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Apr 19 13:50:26 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:23 2010 -0700"
      },
      "message": "ceph: print more useful version info on module load\n\nDecouple the client version from the server side.  Print relevant protocol\nand map version info instead.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "91dee39eebcfb47085c4d457a584b0e9723b6ca0",
      "tree": "52bdeb4795c3b60b1d23460cada8c813c94fb7a9",
      "parents": [
        "c10f5e12bafde7f7a2f9b75d76f7a68d62154e91"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Apr 19 10:15:44 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:23 2010 -0700"
      },
      "message": "ceph: fix snap realm splits\n\nThe snap realm split was checking i_snap_realm, not the list_head, to\ndetermine if an inode belonged in the new realm.  The check always failed,\nwhich meant we always moved the inode, corrupting the old realm\u0027s list and\ncausing various crashes.\n\nAlso wait to release old realm reference to avoid possibility of use after\nfree.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "c10f5e12bafde7f7a2f9b75d76f7a68d62154e91",
      "tree": "422e4a5898dea5fddaa4b6b73379b9ac4db230b5",
      "parents": [
        "66f41d4c5c8a5deed66fdcc84509376c9a0bf9d8"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Apr 16 12:56:11 2010 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon May 03 10:49:22 2010 -0700"
      },
      "message": "ceph: clear dir complete on d_move\n\nd_move() reorders the d_subdirs list, breaking the readdir result caching.\nUnless/until d_move preserves that ordering, clear CEPH_I_COMPLETE on\nrename.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "973bec34bfc1bc2465646181653d67f767d418c8",
      "tree": "05c84524a1c1fb273e399a9eb99c099e84499182",
      "parents": [
        "54413b825ca502b9384edabf972c512c29d64010"
      ],
      "author": {
        "name": "Ryusuke Konishi",
        "email": "konishi.ryusuke@lab.ntt.co.jp",
        "time": "Mon May 03 21:00:48 2010 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 03 07:36:01 2010 -0700"
      },
      "message": "nilfs2: fix sync silent failure\n\nAs of 32a88aa1, __sync_filesystem() will return 0 if s_bdi is not set.\nAnd nilfs does not set s_bdi anywhere.  I noticed this problem by the\nwarning introduced by the recent commit 5129a469 (\"Catch filesystem\nlacking s_bdi\").\n\n WARNING: at fs/super.c:959 vfs_kern_mount+0xc5/0x14e()\n Hardware name: PowerEdge 2850\n Modules linked in: nilfs2 loop tpm_tis tpm tpm_bios video shpchp pci_hotplug output dcdbas\n Pid: 3773, comm: mount.nilfs2 Not tainted 2.6.34-rc6-debug #38\n Call Trace:\n  [\u003cc1028422\u003e] warn_slowpath_common+0x60/0x90\n  [\u003cc102845f\u003e] warn_slowpath_null+0xd/0x10\n  [\u003cc1095936\u003e] vfs_kern_mount+0xc5/0x14e\n  [\u003cc1095a03\u003e] do_kern_mount+0x32/0xbd\n  [\u003cc10a811e\u003e] do_mount+0x671/0x6d0\n  [\u003cc1073794\u003e] ? __get_free_pages+0x1f/0x21\n  [\u003cc10a684f\u003e] ? copy_mount_options+0x2b/0xe2\n  [\u003cc107b634\u003e] ? strndup_user+0x48/0x67\n  [\u003cc10a81de\u003e] sys_mount+0x61/0x8f\n  [\u003cc100280c\u003e] sysenter_do_call+0x12/0x32\n\nThis ensures to set s_bdi for nilfs and fixes the sync silent failure.\n\nSigned-off-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "17d2c0a0c4d4e074f0a2a5c0090ff6d88f5e1d44",
      "tree": "f658bdd3a88849f76dcbab16129321eacd604a5d",
      "parents": [
        "8f649c376254755f2261a693b3d48d09126218dc"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat May 01 12:37:18 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 01 12:37:18 2010 -0400"
      },
      "message": "NFS: Fix RCU issues in the NFSv4 delegation code\n\nFix a number of RCU issues in the NFSv4 delegation code.\n\n (1) delegation-\u003ecred doesn\u0027t need to be RCU protected as it\u0027s essentially an\n     invariant refcounted structure.\n\n     By the time we get to nfs_free_delegation(), the delegation is being\n     released, so no one else should be attempting to use the saved\n     credentials, and they can be cleared.\n\n     However, since the list of delegations could still be under traversal at\n     this point by such as nfs_client_return_marked_delegations(), the cred\n     should be released in nfs_do_free_delegation() rather than in\n     nfs_free_delegation().  Simply using rcu_assign_pointer() to clear it is\n     insufficient as that doesn\u0027t stop the cred from being destroyed, and nor\n     does calling put_rpccred() after call_rcu(), given that the latter is\n     asynchronous.\n\n (2) nfs_detach_delegation_locked() and nfs_inode_set_delegation() should use\n     rcu_derefence_protected() because they can only be called if\n     nfs_client::cl_lock is held, and that guards against anyone changing\n     nfsi-\u003edelegation under it.  Furthermore, the barrier imposed by\n     rcu_dereference() is superfluous, given that the spin_lock() is also a\n     barrier.\n\n (3) nfs_detach_delegation_locked() is now passed a pointer to the nfs_client\n     struct so that it can issue lockdep advice based on clp-\u003ecl_lock for (2).\n\n (4) nfs_inode_return_delegation_noreclaim() and nfs_inode_return_delegation()\n     should use rcu_access_pointer() outside the spinlocked region as they\n     merely examine the pointer and don\u0027t follow it, thus rendering unnecessary\n     the need to impose a partial ordering over the one item of interest.\n\n     These result in an RCU warning like the following:\n\n[ INFO: suspicious rcu_dereference_check() usage. ]\n---------------------------------------------------\nfs/nfs/delegation.c:332 invoked rcu_dereference_check() without protection!\n\nother info that might help us debug this:\n\nrcu_scheduler_active \u003d 1, debug_locks \u003d 0\n2 locks held by mount.nfs4/2281:\n #0:  (\u0026type-\u003es_umount_key#34){+.+...}, at: [\u003cffffffff810b25b4\u003e] deactivate_super+0x60/0x80\n #1:  (iprune_sem){+.+...}, at: [\u003cffffffff810c332a\u003e] invalidate_inodes+0x39/0x13a\n\nstack backtrace:\nPid: 2281, comm: mount.nfs4 Not tainted 2.6.34-rc1-cachefs #110\nCall Trace:\n [\u003cffffffff8105149f\u003e] lockdep_rcu_dereference+0xaa/0xb2\n [\u003cffffffffa00b4591\u003e] nfs_inode_return_delegation_noreclaim+0x5b/0xa0 [nfs]\n [\u003cffffffffa0095d63\u003e] nfs4_clear_inode+0x11/0x1e [nfs]\n [\u003cffffffff810c2d92\u003e] clear_inode+0x9e/0xf8\n [\u003cffffffff810c3028\u003e] dispose_list+0x67/0x10e\n [\u003cffffffff810c340d\u003e] invalidate_inodes+0x11c/0x13a\n [\u003cffffffff810b1dc1\u003e] generic_shutdown_super+0x42/0xf4\n [\u003cffffffff810b1ebe\u003e] kill_anon_super+0x11/0x4f\n [\u003cffffffffa009893c\u003e] nfs4_kill_super+0x3f/0x72 [nfs]\n [\u003cffffffff810b25bc\u003e] deactivate_super+0x68/0x80\n [\u003cffffffff810c6744\u003e] mntput_no_expire+0xbb/0xf8\n [\u003cffffffff810c681b\u003e] release_mounts+0x9a/0xb0\n [\u003cffffffff810c689b\u003e] put_mnt_ns+0x6a/0x79\n [\u003cffffffffa00983a1\u003e] nfs_follow_remote_path+0x5a/0x146 [nfs]\n [\u003cffffffffa0098334\u003e] ? nfs_do_root_mount+0x82/0x95 [nfs]\n [\u003cffffffffa00985a9\u003e] nfs4_try_mount+0x75/0xaf [nfs]\n [\u003cffffffffa0098874\u003e] nfs4_get_sb+0x291/0x31a [nfs]\n [\u003cffffffff810b2059\u003e] vfs_kern_mount+0xb8/0x177\n [\u003cffffffff810b2176\u003e] do_kern_mount+0x48/0xe8\n [\u003cffffffff810c810b\u003e] do_mount+0x782/0x7f9\n [\u003cffffffff810c8205\u003e] sys_mount+0x83/0xbe\n [\u003cffffffff81001eeb\u003e] system_call_fastpath+0x16/0x1b\n\nAlso on:\n\nfs/nfs/delegation.c:215 invoked rcu_dereference_check() without protection!\n [\u003cffffffff8105149f\u003e] lockdep_rcu_dereference+0xaa/0xb2\n [\u003cffffffffa00b4223\u003e] nfs_inode_set_delegation+0xfe/0x219 [nfs]\n [\u003cffffffffa00a9c6f\u003e] nfs4_opendata_to_nfs4_state+0x2c2/0x30d [nfs]\n [\u003cffffffffa00aa15d\u003e] nfs4_do_open+0x2a6/0x3a6 [nfs]\n ...\n\nAnd:\n\nfs/nfs/delegation.c:40 invoked rcu_dereference_check() without protection!\n [\u003cffffffff8105149f\u003e] lockdep_rcu_dereference+0xaa/0xb2\n [\u003cffffffffa00b3bef\u003e] nfs_free_delegation+0x3d/0x6e [nfs]\n [\u003cffffffffa00b3e71\u003e] nfs_do_return_delegation+0x26/0x30 [nfs]\n [\u003cffffffffa00b406a\u003e] __nfs_inode_return_delegation+0x1ef/0x1fe [nfs]\n [\u003cffffffffa00b448a\u003e] nfs_client_return_marked_delegations+0xc9/0x124 [nfs]\n ...\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "8f649c376254755f2261a693b3d48d09126218dc",
      "tree": "818338eca6dea5c7e022a3a6df51c3b2aa9e54b7",
      "parents": [
        "be1066bbcd443a65df312fdecea7e4959adedb45"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 01 12:36:18 2010 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Sat May 01 12:36:18 2010 -0400"
      },
      "message": "NFSv4: Fix the locking in nfs_inode_reclaim_delegation()\n\nEnsure that we correctly rcu-dereference the delegation itself, and that we\nprotect against removal while we\u0027re changing the contents.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "6b933c8e6f1a2f3118082c455eef25f9b1ac7b45",
      "tree": "bf31f4067a95aa23a354edfa89810c9eaaf71aaa",
      "parents": [
        "f9221fd80343285514568da6c5dbda0f87109de8"
      ],
      "author": {
        "name": "Li Dongyang",
        "email": "lidongyang@novell.com",
        "time": "Sat Apr 17 17:49:10 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Apr 30 13:45:13 2010 -0700"
      },
      "message": "ocfs2: Avoid direct write if we fall back to buffered I/O\n\nwhen we fall back to buffered write from direct write, we call\n__generic_file_aio_write() but that will end up doing direct write\neven we are only prepared to do buffered write because the file\nhas the O_DIRECT flag set. This is a fix for\nhttps://bugzilla.novell.com/show_bug.cgi?id\u003d591039\nrevised with Joel\u0027s comments.\n\nSigned-off-by: Li Dongyang \u003clidongyang@novell.com\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "f9221fd80343285514568da6c5dbda0f87109de8",
      "tree": "3a2f0077ebea9d094bdeedb319c97cb591d51c51",
      "parents": [
        "a36d515c7a2dfacebcf41729f6812dbc424ebcf0",
        "a9743fcdc0eb43d028b71267438076e1b0112ba0"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Apr 30 13:37:29 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Fri Apr 30 13:37:29 2010 -0700"
      },
      "message": "Merge branch \u0027skip_delete_inode\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2-mark into ocfs2-fixes\n"
    },
    {
      "commit": "12b1b321689cf92236fb216472744e39419fab30",
      "tree": "16505df17a901583b3c1ab28b5cb7e9b573d8809",
      "parents": [
        "8f2adb7cab81fc4984ddfe3a1efd1b62d52bead8"
      ],
      "author": {
        "name": "Ralf Baechle",
        "email": "ralf@linux-mips.org",
        "time": "Mon Mar 08 20:51:03 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 30 10:14:56 2010 -0700"
      },
      "message": "Inotify: Fix build failure in inotify user support\n\nCONFIG_INOTIFY_USER defined but CONFIG_ANON_INODES undefined will result\nin the following build failure:\n\n    LD      vmlinux\n  fs/built-in.o: In function \u0027sys_inotify_init1\u0027:\n  (.text.sys_inotify_init1+0x22c): undefined reference to \u0027anon_inode_getfd\u0027\n  fs/built-in.o: In function `sys_inotify_init1\u0027:\n  (.text.sys_inotify_init1+0x22c): relocation truncated to fit: R_MIPS_26 against \u0027anon_inode_getfd\u0027\n  make[2]: *** [vmlinux] Error 1\n  make[1]: *** [sub-make] Error 2\n  make: *** [all] Error 2\n\nSigned-off-by: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e97e7120eb24800cf8eb62c7da07b161cc2a8c73",
      "tree": "b48bf7a1f1e8192c5e3cb4e1289adc7a378c2d8d",
      "parents": [
        "fed0a9c644c7872f5bcaeb87a71103aef8e96761",
        "9bf729c0af67897ea8498ce17c29b0683f7f2028"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 29 19:49:34 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 29 19:49:34 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs\n\n* \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs:\n  xfs: add a shrinker to background inode reclaim\n"
    },
    {
      "commit": "fed0a9c644c7872f5bcaeb87a71103aef8e96761",
      "tree": "9615901a5b387aa57c39fcd1d5fee22149a9dbcc",
      "parents": [
        "6bec11921a7d7b11d0b1909596636632aece5a26",
        "3c2023dd8ed31e2ecfbb2d5aa20e8884d4b339e2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 29 17:18:07 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 29 17:18:07 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block:\n  exofs: Fix \"add bdi backing to mount session\" fall out\n  fs: fs/super.c needs to include backing-dev.h for !CONFIG_BLOCK\n"
    },
    {
      "commit": "9bf729c0af67897ea8498ce17c29b0683f7f2028",
      "tree": "9e6350fd9da5aef0b53ddeddd82f618ae16bf931",
      "parents": [
        "79dba2eaa771c3173957eccfd288e0e0d12e4d3f"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Thu Apr 29 09:55:50 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Apr 29 16:22:13 2010 -0500"
      },
      "message": "xfs: add a shrinker to background inode reclaim\n\nOn low memory boxes or those with highmem, kernel can OOM before the\nbackground reclaims inodes via xfssyncd. Add a shrinker to run inode\nreclaim so that it inode reclaim is expedited when memory is low.\n\nThis is more complex than it needs to be because the VM folk don\u0027t\nwant a context added to the shrinker infrastructure. Hence we need\nto add a global list of XFS mount structures so the shrinker can\ntraverse them.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "3c2023dd8ed31e2ecfbb2d5aa20e8884d4b339e2",
      "tree": "df6e57bac0477e18c80786d5b014533ffe0eee34",
      "parents": [
        "5477d0face8a3ba4e9a1e7283692fff9c92f8e5e"
      ],
      "author": {
        "name": "Boaz Harrosh",
        "email": "bharrosh@panasas.com",
        "time": "Thu Apr 29 20:35:29 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 29 20:35:29 2010 +0200"
      },
      "message": "exofs: Fix \"add bdi backing to mount session\" fall out\n\nThe patch: add bdi backing to mount session\n\t(b3d0ab7e60d1865bb6f6a79a77aaba22f2543236)\n\nHas a bug in the placement of the bdi member at\nstruct exofs_sb_info. The layout member must be kept\nlast.\n\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "5477d0face8a3ba4e9a1e7283692fff9c92f8e5e",
      "tree": "59bdad300f2be01911f9120e349b22664f199387",
      "parents": [
        "79dba2eaa771c3173957eccfd288e0e0d12e4d3f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 29 20:33:35 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Apr 29 20:33:35 2010 +0200"
      },
      "message": "fs: fs/super.c needs to include backing-dev.h for !CONFIG_BLOCK\n\nWhen CONFIG_BLOCK is set, it ends up getting backing-dev.h included.\nBut for !CONFIG_BLOCK, it isn\u0027t so lucky. The proper thing to do is\ninclude \u003clinux/backing-dev.h\u003e directly from the file it\u0027s used from,\nso do that.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "27fb8d7b1fe7c2fa2d7c1f243b899793e1b080e0",
      "tree": "25a8ca59a3743459bbd48674731becea89a16318",
      "parents": [
        "f80a0ca6ad8f2800453e819dafa09a0ed9e56850",
        "9699eda6bc1f708a28acb716e1477aa351362fe2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 29 10:23:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 29 10:23:44 2010 -0700"
      },
      "message": "Merge branch \u0027bugfixes\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027bugfixes\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6:\n  nfs: fix memory leak in nfs_get_sb with CONFIG_NFS_V4\n  nfs: fix some issues in nfs41_proc_reclaim_complete()\n  NFS: Ensure that nfs_wb_page() waits for Pg_writeback to clear\n  NFS: Fix an unstable write data integrity race\n  nfs: testing for null instead of ERR_PTR()\n  NFS: rsize and wsize settings ignored on v4 mounts\n  NFSv4: Don\u0027t attempt an atomic open if the file is a mountpoint\n  SUNRPC: Fix a bug in rpcauth_prune_expired\n"
    },
    {
      "commit": "f80a0ca6ad8f2800453e819dafa09a0ed9e56850",
      "tree": "bdbffa0e212888c31e11e89dc1194935f6825085",
      "parents": [
        "a36fed12a4d980eebb2e67b87ea30ad090238cff"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Apr 28 14:36:41 2010 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 29 08:44:37 2010 -0700"
      },
      "message": "pktcdvd: improve BKL and compat_ioctl.c usage\n\nThe pktcdvd driver uses proper locking and does not need the BKL in the\nioctl and llseek functions of the character device, so kill both.\n\nMoving the compat_ioctl handling from common code into the driver itself\nfixes build problems when CONFIG_BLOCK is disabled.\n\nAcked-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a36fed12a4d980eebb2e67b87ea30ad090238cff",
      "tree": "ff56582ba7ccca5d303b909c146032013bf047d0",
      "parents": [
        "dfad53d48e32cd0e10eab98e986c76cdd957600f"
      ],
      "author": {
        "name": "Boaz Harrosh",
        "email": "bharrosh@panasas.com",
        "time": "Thu Apr 29 13:38:00 2010 +0300"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 29 07:59:16 2010 -0700"
      },
      "message": "exofs: Fix \"add bdi backing to mount session\" fall out\n\nCommit b3d0ab7e60d1865bb6f6a79a77aaba22f2543236 (\"exofs: add bdi backing\nto mount session\") has a bug in the placement of the bdi member at\nstruct exofs_sb_info.  The layout member must be kept last.\n\nSigned-off-by: Boaz Harrosh \u003cbharrosh@panasas.com\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d9e80b7de91db05c1c4d2e5ebbfd70b3b3ba0e0f",
      "tree": "0ca15a8b9250337c810e18756422c17b5f651b08",
      "parents": [
        "1d16b0f2f3edf05f12a9e3960588e0d4854157bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Thu Apr 29 03:10:43 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 28 20:40:03 2010 -0700"
      },
      "message": "nfs d_revalidate() is too trigger-happy with d_drop()\n\nIf dentry found stale happens to be a root of disconnected tree, we\ncan\u0027t d_drop() it; its d_hash is actually part of s_anon and d_drop()\nwould simply hide it from shrink_dcache_for_umount(), leading to\nall sorts of fun, including busy inodes on umount and oopsen after\nthat.\n\nBug had been there since at least 2006 (commit c636eb already has it),\nso it\u0027s definitely -stable fodder.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9699eda6bc1f708a28acb716e1477aa351362fe2",
      "tree": "61d6841d38f047c9cb80e2efd08acea67f80b223",
      "parents": [
        "acf82b85a70f39786e3cbb1ffed8655bcc972424"
      ],
      "author": {
        "name": "Xiaotian Feng",
        "email": "dfeng@redhat.com",
        "time": "Thu Apr 22 18:56:17 2010 +0800"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 28 13:46:28 2010 -0400"
      },
      "message": "nfs: fix memory leak in nfs_get_sb with CONFIG_NFS_V4\n\nWith CONFIG_NFS_V4 and data version 4, nfs_get_sb will allocate memory for\nexport_path in nfs4_validate_text_mount_data, so we need to free it then.\nThis is addressed in following kmemleak report:\n\nunreferenced object 0xffff88016bf48a50 (size 16):\n  comm \"mount.nfs\", pid 22567, jiffies 4651574704 (age 175471.200s)\n  hex dump (first 16 bytes):\n    2f 6f 70 74 2f 77 6f 72 6b 00 6b 6b 6b 6b 6b a5  /opt/work.kkkkk.\n  backtrace:\n    [\u003cffffffff814b34f9\u003e] kmemleak_alloc+0x60/0xa7\n    [\u003cffffffff81102c76\u003e] kmemleak_alloc_recursive.clone.5+0x1b/0x1d\n    [\u003cffffffff811046b3\u003e] __kmalloc_track_caller+0x18f/0x1b7\n    [\u003cffffffff810e1b08\u003e] kstrndup+0x37/0x54\n    [\u003cffffffffa0336971\u003e] nfs_parse_devname+0x152/0x204 [nfs]\n    [\u003cffffffffa0336af3\u003e] nfs4_validate_text_mount_data+0xd0/0xdc [nfs]\n    [\u003cffffffffa0338deb\u003e] nfs_get_sb+0x325/0x736 [nfs]\n    [\u003cffffffff81113671\u003e] vfs_kern_mount+0xbd/0x17c\n    [\u003cffffffff81113798\u003e] do_kern_mount+0x4d/0xed\n    [\u003cffffffff81129a87\u003e] do_mount+0x787/0x7fe\n    [\u003cffffffff81129b86\u003e] sys_mount+0x88/0xc2\n    [\u003cffffffff81009b42\u003e] system_call_fastpath+0x16/0x1b\n\nSigned-off-by: Xiaotian Feng \u003cdfeng@redhat.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Benny Halevy \u003cbhalevy@panasas.com\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Andy Adamson \u003candros@netapp.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "acf82b85a70f39786e3cbb1ffed8655bcc972424",
      "tree": "99e1a7b0815aa1ca1d9196a323c9c28df185d2aa",
      "parents": [
        "ba8b06e67ed7a560b0e7c80091bcadda4f4727a5"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Thu Apr 22 11:28:39 2010 +0200"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 28 13:45:12 2010 -0400"
      },
      "message": "nfs: fix some issues in nfs41_proc_reclaim_complete()\n\nThe original code passed an ERR_PTR() to rpc_put_task() and instead of\nreturning zero on success it returned -ENOMEM.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "970b06485ffee36aa3549dfe4c6b2a2c2118354d",
      "tree": "1b0f6f4182e73d19071addf8a209e5fb58483d08",
      "parents": [
        "696e65c3606aa3f587eeb181766baf49ea750cfc",
        "33f60e9640b2f60dde6735293d4aa5ecc5b1d5d5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 28 07:56:05 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 28 07:56:05 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block:\n  coda: move backing-dev.h kernel include inside __KERNEL__\n  mtd: ensure that bdi entries are properly initialized and registered\n  Move mtd_bdi_*mappable to mtdcore.c\n  btrfs: convert to using bdi_setup_and_register()\n  Catch filesystems lacking s_bdi\n  drbd: Terminate a connection early if sending the protocol fails\n  drbd: fix memory leak\n  Fix JFFS2 sync silent failure\n  smbfs: add bdi backing to mount session\n  ncpfs: add bdi backing to mount session\n  exofs: add bdi backing to mount session\n  ecryptfs: add bdi backing to mount session\n  coda: add bdi backing to mount session\n  cifs: add bdi backing to mount session\n  afs: add bdi backing to mount session.\n  9p: add bdi backing to mount session\n  bdi: add helper function for doing init and register of a bdi for a file system\n  block: ensure jiffies wrap is handled correctly in blk_rq_timed_out_timer\n"
    },
    {
      "commit": "11e39d993dc693e0bfc5521d367b2494cb3bcd38",
      "tree": "b6e418811a47c0a92ed6f386360f07c73b8f3b87",
      "parents": [
        "03449cd9eaa4fa3a7faa4a59474bafe2e90bd143",
        "2bc3c1179c781b359d4f2f3439cb3df72afc17fc"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 27 16:26:21 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 27 16:26:21 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.34\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.34\u0027 of git://linux-nfs.org/~bfields/linux:\n  nfsd4: bug in read_buf\n"
    }
  ],
  "next": "3835541dd481091c4dbf5ef83c08aed12e50fd61"
}
