)]}'
{
  "log": [
    {
      "commit": "4e7d2c0aefb77f7b24942e5af042a083be4d60bb",
      "tree": "59d127eac9d9c0ff5feea9d741739ccc6fae65c3",
      "parents": [
        "cb3c82992f62f838e6476a0bff12909158007fc6"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:11 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:11 2009 -0700"
      },
      "message": "md/raid5: factor out mark_uptodate from ops_complete_compute5\n\nops_complete_compute5 can be reused in the raid6 path if it is updated to\ngenerically handle a second target.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "cb3c82992f62f838e6476a0bff12909158007fc6",
      "tree": "d6ced15a81340b9b8343c369fea22940f31f06eb",
      "parents": [
        "58691d64c44ae41ddf098ecb31e9a994026e3cff"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 12:20:37 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:28 2009 -0700"
      },
      "message": "async_tx: raid6 recovery self test\n\nPort drivers/md/raid6test/test.c to use the async raid6 recovery\nroutines.  This is meant as a unit test for raid6 acceleration drivers.  In\naddition to the 16-drive test case this implements tests for the 4-disk and\n5-disk special cases (dma devices can not generically handle less than 2\nsources), and adds a test for the D+Q case.\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n\n"
    },
    {
      "commit": "58691d64c44ae41ddf098ecb31e9a994026e3cff",
      "tree": "93c36b2d244648a9b5880dc97de3cb945fdebda7",
      "parents": [
        "0a82a6239beecc95db6e05fe43ee62d16b381d38"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:27 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:27 2009 -0700"
      },
      "message": "dmatest: add pq support\n\nTest raid6 p+q operations with a simple \"always multiply by 1\" q\ncalculation to fit into dmatest\u0027s current destination verification\nscheme.\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n\n"
    },
    {
      "commit": "0a82a6239beecc95db6e05fe43ee62d16b381d38",
      "tree": "524f6417ae8128f5b1da322872e860bd4af5840d",
      "parents": [
        "b2f46fd8ef3dff2ab30f31126833f78b7480283a"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 12:20:37 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:27 2009 -0700"
      },
      "message": "async_tx: add support for asynchronous RAID6 recovery operations\n\n async_raid6_2data_recov() recovers two data disk failures\n\n async_raid6_datap_recov() recovers a data disk and the P disk\n\nThese routines are a port of the synchronous versions found in\ndrivers/md/raid6recov.c.  The primary difference is breaking out the xor\noperations into separate calls to async_xor.  Two helper routines are\nintroduced to perform scalar multiplication where needed.\nasync_sum_product() multiplies two sources by scalar coefficients and\nthen sums (xor) the result.  async_mult() simply multiplies a single\nsource by a scalar.\n\nThis implemention also includes, in contrast to the original\nsynchronous-only code, special case handling for the 4-disk and 5-disk\narray cases.  In these situations the default N-disk algorithm will\npresent 0-source or 1-source operations to dma devices.  To cover for\ndma devices where the minimum source count is 2 we implement 4-disk and\n5-disk handling in the recovery code.\n\n[ Impact: asynchronous raid6 recovery routines for 2data and datap cases ]\n\nCc: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nCc: Ilya Yanok \u003cyanok@emcraft.com\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n\n"
    },
    {
      "commit": "b2f46fd8ef3dff2ab30f31126833f78b7480283a",
      "tree": "9f111e3e313b4d142c12d2d8156a2704a36904f8",
      "parents": [
        "95475e57113c66aac7583925736ed2e2d58c990d"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 12:20:36 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:27 2009 -0700"
      },
      "message": "async_tx: add support for asynchronous GF multiplication\n\n[ Based on an original patch by Yuri Tikhonov ]\n\nThis adds support for doing asynchronous GF multiplication by adding\ntwo additional functions to the async_tx API:\n\n async_gen_syndrome() does simultaneous XOR and Galois field\n    multiplication of sources.\n\n async_syndrome_val() validates the given source buffers against known P\n    and Q values.\n\nWhen a request is made to run async_pq against more than the hardware\nmaximum number of supported sources we need to reuse the previous\ngenerated P and Q values as sources into the next operation.  Care must\nbe taken to remove Q from P\u0027 and P from Q\u0027.  For example to perform a 5\nsource pq op with hardware that only supports 4 sources at a time the\nfollowing approach is taken:\n\np, q \u003d PQ(src0, src1, src2, src3, COEF({01}, {02}, {04}, {08}))\np\u0027, q\u0027 \u003d PQ(p, q, q, src4, COEF({00}, {01}, {00}, {10}))\n\np\u0027 \u003d p + q + q + src4 \u003d p + src4\nq\u0027 \u003d {00}*p + {01}*q + {00}*q + {10}*src4 \u003d q + {10}*src4\n\nNote: 4 is the minimum acceptable maxpq otherwise we punt to\nsynchronous-software path.\n\nThe DMA_PREP_CONTINUE flag indicates to the driver to reuse p and q as\nsources (in the above manner) and fill the remaining slots up to maxpq\nwith the new sources/coefficients.\n\nNote1: Some devices have native support for P+Q continuation and can skip\nthis extra work.  Devices with this capability can advertise it with\ndma_set_maxpq.  It is up to each driver how to handle the\nDMA_PREP_CONTINUE flag.\n\nNote2: The api supports disabling the generation of P when generating Q,\nthis is ignored by the synchronous path but is implemented by some dma\ndevices to save unnecessary writes.  In this case the continuation\nalgorithm is simplified to only reuse Q as a source.\n\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "95475e57113c66aac7583925736ed2e2d58c990d",
      "tree": "933aa0ca3bffef5b1457c516fbe3e8690b4c4cb1",
      "parents": [
        "af1f951eb6ef27b01cbfb3f6c21b770af4368a6d"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 12:19:02 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:27 2009 -0700"
      },
      "message": "async_tx: remove walk of tx-\u003eparent chain in dma_wait_for_async_tx\n\nWe currently walk the parent chain when waiting for a given tx to\ncomplete however this walk may race with the driver cleanup routine.\nThe routines in async_raid6_recov.c may fall back to the synchronous\npath at any point so we need to be prepared to call async_tx_quiesce()\n(which calls  dma_wait_for_async_tx).  To remove the -\u003eparent walk we\nguarantee that every time a dependency is attached -\u003eissue_pending() is\ninvoked, then we can simply poll the initial descriptor until\ncompletion.\n\nThis also allows for a lighter weight \u0027issue pending\u0027 implementation as\nthere is no longer a requirement to iterate through all the channels\u0027\n-\u003eissue_pending() routines as long as operations have been submitted in\nan ordered chain.  async_tx_issue_pending() is added for this case.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "af1f951eb6ef27b01cbfb3f6c21b770af4368a6d",
      "tree": "2009d83f93be62856eebbe9a41310d8ead4a6a13",
      "parents": [
        "ad283ea4a3ce82cda2efe33163748a397b31b1eb"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:26 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:26 2009 -0700"
      },
      "message": "async_tx: kill needless module_{init|exit}\n\nIf module_init and module_exit are nops then neither need to be defined.\n\n[ Impact: pure cleanup ]\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "ad283ea4a3ce82cda2efe33163748a397b31b1eb",
      "tree": "11cd739195f336895abe9e4a62d824e49a41c24f",
      "parents": [
        "d6f38f31f3ad4b0dd33fe970988f14e7c65ef702"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:26 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:26 2009 -0700"
      },
      "message": "async_tx: add sum check flags\n\nReplace the flat zero_sum_result with a collection of flags to contain\nthe P (xor) zero-sum result, and the soon to be utilized Q (raid6 reed\nsolomon syndrome) zero-sum result.  Use the SUM_CHECK_ namespace instead\nof DMA_ since these flags will be used on non-dma-zero-sum enabled\nplatforms.\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "d6f38f31f3ad4b0dd33fe970988f14e7c65ef702",
      "tree": "0b881c68e676376f2f0eccb2eb377dc3561d395f",
      "parents": [
        "36d1c6476be51101778882897b315bd928c8c7b5"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 11:50:52 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:26 2009 -0700"
      },
      "message": "md/raid5,6: add percpu scribble region for buffer lists\n\nUse percpu memory rather than stack for storing the buffer lists used in\nparity calculations.  Include space for dma address conversions and pass\nthat to async_tx via the async_submit_ctl.scribble pointer.\n\n[ Impact: move memory pressure from stack to heap ]\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n\n\n"
    },
    {
      "commit": "36d1c6476be51101778882897b315bd928c8c7b5",
      "tree": "55b4ecd93ce9c22722c9c9da0dd28a2d2f7c082d",
      "parents": [
        "a11034b4282515fd7d9f6fdc0a1380781da461c3"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 11:48:22 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:26 2009 -0700"
      },
      "message": "md/raid6: move the spare page to a percpu allocation\n\nIn preparation for asynchronous handling of raid6 operations move the\nspare page to a percpu allocation to allow multiple simultaneous\nsynchronous raid6 recovery operations.\n\nMake this allocation cpu hotplug aware to maximize allocation\nefficiency.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n\n\n"
    },
    {
      "commit": "a11034b4282515fd7d9f6fdc0a1380781da461c3",
      "tree": "31731cf11de0f1fbeaa3e818740b83221badee4c",
      "parents": [
        "04ce9ab385dc97eb55299d533cd3af79b8fc7529"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 11:48:16 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 11:48:16 2009 -0700"
      },
      "message": "md/raid6: release spare page at -\u003estop()\n\nAdd missing call to safe_put_page from stop() by unifying open coded\nraid5_conf_t de-allocation under free_conf().\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "04ce9ab385dc97eb55299d533cd3af79b8fc7529",
      "tree": "9b8d0b9c1eba820a8a107d05abc2e2f8d4d20a59",
      "parents": [
        "a08abd8ca890a377521d65d493d174bebcaf694b"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Jun 03 14:22:28 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Jun 03 14:22:28 2009 -0700"
      },
      "message": "async_xor: permit callers to pass in a \u0027dma/page scribble\u0027 region\n\nasync_xor() needs space to perform dma and page address conversions.  In\nmost cases the code can simply reuse the struct page * array because the\nsize of the native pointer matches the size of a dma/page address.  In\norder to support archs where sizeof(dma_addr_t) is larger than\nsizeof(struct page *), or to preserve the input parameters, we utilize a\nmemory region passed in by the caller.\n\nSince the code is now prepared to handle the case where it cannot\nperform address conversions on the stack, we no longer need the\n!HIGHMEM64G dependency in drivers/dma/Kconfig.\n\n[ Impact: don\u0027t clobber input buffers for address conversions ]\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "a08abd8ca890a377521d65d493d174bebcaf694b",
      "tree": "987c149a2d7d6ab345f426ac28191627b4a02a3e",
      "parents": [
        "88ba2aa586c874681c072101287e15d40de7e6e2"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Jun 03 11:43:59 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Jun 03 14:07:35 2009 -0700"
      },
      "message": "async_tx: structify submission arguments, add scribble\n\nPrepare the api for the arrival of a new parameter, \u0027scribble\u0027.  This\nwill allow callers to identify scratchpad memory for dma address or page\naddress conversions.  As this adds yet another parameter, take this\nopportunity to convert the common submission parameters (flags,\ndependency, callback, and callback argument) into an object that is\npassed by reference.\n\nAlso, take this opportunity to fix up the kerneldoc and add notes about\nthe relevant ASYNC_TX_* flags for each routine.\n\n[ Impact: moves api pass-by-value parameters to a pass-by-reference struct ]\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "88ba2aa586c874681c072101287e15d40de7e6e2",
      "tree": "69a124fcd0a8a75ef9aae0cc4081bad83c770374",
      "parents": [
        "099f53cb50e45ef617a9f1d63ceec799e489418b"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Thu Apr 09 16:16:18 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Jun 03 14:07:34 2009 -0700"
      },
      "message": "async_tx: kill ASYNC_TX_DEP_ACK flag\n\nIn support of inter-channel chaining async_tx utilizes an ack flag to\ngate whether a dependent operation can be chained to another.  While the\nflag is not set the chain can be considered open for appending.  Setting\nthe ack flag closes the chain and flags the descriptor for garbage\ncollection.  The ASYNC_TX_DEP_ACK flag essentially means \"close the\nchain after adding this dependency\".  Since each operation can only have\none child the api now implicitly sets the ack flag at dependency\nsubmission time.  This removes an unnecessary management burden from\nclients of the api.\n\n[ Impact: clean up and enforce one dependency per operation ]\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "099f53cb50e45ef617a9f1d63ceec799e489418b",
      "tree": "fd57f259f58bcf615fe2b17734ed0cbec612782d",
      "parents": [
        "fd74ea65883c7e6903e9b652795f72b723a2be69"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Apr 08 14:28:37 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Apr 08 14:28:37 2009 -0700"
      },
      "message": "async_tx: rename zero_sum to val\n\n\u0027zero_sum\u0027 does not properly describe the operation of generating parity\nand checking that it validates against an existing buffer.  Change the\nname of the operation to \u0027val\u0027 (for \u0027validate\u0027).  This is in\nanticipation of the p+q case where it is a requirement to identify the\ntarget parity buffers separately from the source buffers, because the\ntarget parity buffers will not have corresponding pq coefficients.\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "fd74ea65883c7e6903e9b652795f72b723a2be69",
      "tree": "0792ad598080eae201d2836ac3c5a8fc46d0d03e",
      "parents": [
        "c8f517c444e4f9f55b5b5ca202b8404691a35805",
        "8c6db1bbf80123839ec87bdd6cb364aea384623d"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Apr 08 14:28:13 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Apr 08 14:28:13 2009 -0700"
      },
      "message": "Merge branch \u0027dmaengine\u0027 into async-tx-raid6\n"
    },
    {
      "commit": "8c6db1bbf80123839ec87bdd6cb364aea384623d",
      "tree": "848b8d42f093c03a046bd9ae204b360b5174ea28",
      "parents": [
        "d9de451989a88a2003ca06e524aca4665c0c7f06"
      ],
      "author": {
        "name": "Guennadi Liakhovetski",
        "email": "lg@denx.de",
        "time": "Thu Apr 02 11:36:58 2009 +0200"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Thu Apr 02 16:59:10 2009 -0700"
      },
      "message": "dma: Add SoF and EoF debugging to ipu_idmac.c, minor cleanup\n\nAdd Start-of-Frame and End-of-Frame debugging to ipu_idmac.c, in the\nfuture it might also be needed for the actual video processing in\nmx3-camera, at which point, the ISRs will have to be transferred to\nmx3_camera.c, for which ipu_irq_map() and ipu_irq_unmap() functions will\nhave to be exported.\n\nAlso simplify a couple of pointer-dereferences.\n\nSigned-off-by: Guennadi Liakhovetski \u003clg@denx.de\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "d9de451989a88a2003ca06e524aca4665c0c7f06",
      "tree": "a926d4ff1b73da88d5112324611a579a94e28095",
      "parents": [
        "0f571515c332e00b3515dbe0859ceaa30ab66e00"
      ],
      "author": {
        "name": "Hans-Christian Egtvedt",
        "email": "hans-christian.egtvedt@atmel.com",
        "time": "Wed Apr 01 15:47:02 2009 +0200"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Apr 01 15:42:34 2009 -0700"
      },
      "message": "dw_dmac: add cyclic API to DW DMA driver\n\nThis patch adds a cyclic DMA interface to the DW DMA driver. This is\nvery useful if you want to use the DMA controller in combination with a\nsound device which uses cyclic buffers.\n\nUsing a DMA channel for cyclic DMA will disable the possibility to use\nit as a normal DMA engine until the user calls the cyclic free function\non the DMA channel. Also a cyclic DMA list can not be prepared if the\nchannel is already active.\n\nSigned-off-by: Hans-Christian Egtvedt \u003chans-christian.egtvedt@atmel.com\u003e\nAcked-by: Haavard Skinnemoen \u003chaavard.skinnemoen@atmel.com\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "c8f517c444e4f9f55b5b5ca202b8404691a35805",
      "tree": "e679ae13a07e1a2644da0dfc4a4d66bf73f83626",
      "parents": [
        "b0f9ec047b79a92e8b8a9dfbf97537c8fbef234a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:28:40 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:28:40 2009 +1100"
      },
      "message": "md/raid5 revise rules for when to update metadata during reshape\n\nWe currently update the metadata :\n 1/ every 3Megabytes\n 2/ When the place we will write new-layout data to is recorded in\n    the metadata as still containing old-layout data.\n\nRule one exists to avoid having to re-do too much reshaping in the\nface of a crash/restart.  So it should really be time based rather\nthan size based.  So change it to \"every 10 seconds\".\n\nRule two turns out to be too harsh when restriping an array\n\u0027in-place\u0027, as in that case the metadata much be updates for every\nstripe.\nFor the in-place update, it can only possibly be safe from a crash if\nsome user-space program data a backup of every e.g. few hundred\nstripes before allowing them to be reshaped.  In that case, the\nconstant metadata update is pointless.\nSo only update the metadata if the new metadata will report that the\nend of the \u0027old-layout\u0027 data is beyond where we are currently\nwriting \u0027new-layout\u0027 data.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b0f9ec047b79a92e8b8a9dfbf97537c8fbef234a",
      "tree": "2761193e869ed51d08674c39ed3df105cd91f4de",
      "parents": [
        "2cffc4a01dd90a502324e3453d7b245d6d16e1c2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:27:18 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:27:18 2009 +1100"
      },
      "message": "md/raid5: minor code cleanups in make_request.\n\n... and to be certain the that make_request doesn\u0027t wait forever,\nadd a \u0027wake_up\u0027 when -\u003ereshape_progress has been set to MaxSector\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2cffc4a01dd90a502324e3453d7b245d6d16e1c2",
      "tree": "bcaf6e9fb8169c4e863173d33624de4c9a181246",
      "parents": [
        "ab69ae12ceef7f23c578a3c230144e94a167a821"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:27:05 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:27:05 2009 +1100"
      },
      "message": "md: remove CONFIG_MD_RAID_RESHAPE config option.\n\nThis was only needed when the code was experimental.  Most of it\nis well tested now, so the option is no longer useful.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ab69ae12ceef7f23c578a3c230144e94a167a821",
      "tree": "01bee8e4c4a91a1714596c4f85769bfe72e328ce",
      "parents": [
        "d1a7c50369835f9ecbd7752016cd9302ecfae678"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:26:47 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:26:47 2009 +1100"
      },
      "message": "md/raid5: be more careful about write ordering when reshaping.\n\nWhen we are reshaping an array, it is very important that we read\nthe data from a particular sector offset before writing new data\nat that offset.\n\nIn most cases when growing or shrinking an array we read long before\nwe even consider writing.  But when restriping an array without\nchanging it size, there is a small possibility that we might have\nsome data to available write before the read has happened at the same\nlocation.  This would require some stripes to be in cache already.\n\nTo guard against this small possibility, we check, before writing,\nthat the \u0027old\u0027 stripe at the same location is not in the process of\nbeing read.  And we ensure that we mark all \u0027source\u0027 stripes as such\nbefore allowing new \u0027destination\u0027 stripes to proceed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d1a7c50369835f9ecbd7752016cd9302ecfae678",
      "tree": "2c6bcc8c5cb4d045d555e0d030321cb887a4e05a",
      "parents": [
        "88ce4930e2b80378d45506ce2c3bb5820e156e85"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:24:32 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:24:32 2009 +1100"
      },
      "message": "md: don\u0027t display meaningless values in sysfs files resync_start and sync_speed\n\nWhen no resync if happening, both of these files currently have\nmeaningless values (is slightly different ways).\nChange them to \"none\" in that case.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "88ce4930e2b80378d45506ce2c3bb5820e156e85",
      "tree": "75847293ede7cd396b5470c0d1c4f50dc79ff031",
      "parents": [
        "7a6613810785872b7c028fba22fc0bae1c91733d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:24:23 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:24:23 2009 +1100"
      },
      "message": "md/raid5: allow layout and chunksize to be changed on active array.\n\nIf an array has 3 or more devices, we allow the chunksize or layout\nto be changed and when a reshape starts, we use these as the \u0027new\u0027\nvalues.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7a6613810785872b7c028fba22fc0bae1c91733d",
      "tree": "b716e9278d42e83c82888d82671062d64fbf0bea",
      "parents": [
        "e183eaedd53807e33f02ee80573e2833890e1f21"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:21:40 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:21:40 2009 +1100"
      },
      "message": "md/raid5: reshape using largest of old and new chunk size\n\nThis ensures that even when old and new stripes are overlapping,\nwe will try to read all of the old before having to write any\nof the new.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e183eaedd53807e33f02ee80573e2833890e1f21",
      "tree": "ba648feacbc930936e5a66006a19ee8822ac28f5",
      "parents": [
        "784052ecc6ade6b6acf4f67e4ada8e5f2e6df446"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:20:22 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:20:22 2009 +1100"
      },
      "message": "md/raid5: prepare for allowing reshape to change layout\n\nAdd prev_algo to raid5_conf_t along the same lines as prev_chunk\nand previous_raid_disks.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "784052ecc6ade6b6acf4f67e4ada8e5f2e6df446",
      "tree": "f0b1060215922ba30a4d676a00dbdad8ddb724c9",
      "parents": [
        "86b42c713be3e5f6807aa14b4cbdb005d35c64d5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:19:07 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:19:07 2009 +1100"
      },
      "message": "md/raid5: prepare for allowing reshape to change chunksize.\n\nAdd \"prev_chunk\" to raid5_conf_t, similar to \"previous_raid_disks\", to\nremember what the chunk size was before the reshape that is currently\nunderway.\n\nThis seems like duplication with \"chunk_size\" and \"new_chunk\" in\nmddev_t, and to some extent it is, but there are differences.\nThe values in mddev_t are always defined and often the same.\nThe prev* values are only defined if a reshape is underway.\n\nAlso (and more significantly) the raid5_conf_t values will be changed\nat the same time (inside an appropriate lock) that the reshape is\nstarted by setting reshape_position.  In contrast, the new_chunk value\nis set when the sysfs file is written which could be well before the\nreshape starts.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "86b42c713be3e5f6807aa14b4cbdb005d35c64d5",
      "tree": "d6c70a966a6bda99e6cd4ce055efa84ab0ded701",
      "parents": [
        "11373542344bdc35be1e6e68b0baadd1b6f7acbb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:19:03 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:19:03 2009 +1100"
      },
      "message": "md/raid5: clearly differentiate \u0027before\u0027 and \u0027after\u0027 stripes during reshape.\n\nDuring a raid5 reshape, we have some stripes in the cache that are\n\u0027before\u0027 the reshape (and are still to be processed) and some that are\n\u0027after\u0027.  They are currently differentiated by having different\n-\u003edisks values as the only reshape current supported involves changing\nthe number of disks.\n\nHowever we will soon support reshapes that do not change the number\nof disks (chunk parity or chunk size).  So make the difference more\nexplicit with a \u0027generation\u0027 number.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "11373542344bdc35be1e6e68b0baadd1b6f7acbb",
      "tree": "655d730a9d512b2ed7077be32c4422f40b3ea5ad",
      "parents": [
        "ec32a2bd35bd6b933a5db6542c48210ce069a376"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:18:37 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:18:37 2009 +1100"
      },
      "message": "Documentation/md.txt update\n\nUpdate md.txt to reflect recent changes in a number of sysfs\nattributes.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ec32a2bd35bd6b933a5db6542c48210ce069a376",
      "tree": "32d30344202025cf1c6cd202394e65ff7e99753f",
      "parents": [
        "fef9c61fdfabf97a307c2cf3621a6949f0a4b995"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:17:38 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:17:38 2009 +1100"
      },
      "message": "md: allow number of drives in raid5 to be reduced\n\nWhen reshaping a raid5 to have fewer devices, we work from the end of\nthe array to the beginning.\nmd_do_sync gives addresses to sync_request that go from the beginning\nto the end.  So largely ignore them use the internal state variable\n\"reshape_progress\" to keep track of what to do next.\n\nNever allow the size to be reduced below the minimum (4 for raid6,\n3 otherwise).\n\nWe require that the size of the array has already been reduced before\nthe array is reshaped to a smaller size.  This is because simply\nreducing the size is an easily reversible operation, while the reshape\nis immediately destructive and so is not reversible for the blocks at\nthe ends of the devices.\nThus to reshape an array to have fewer devices, you must first write\nan appropriately small size to md/array_size.\n\nWhen reshape finished, we remove any drives that are no longer\nneeded and fix up -\u003edegraded.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fef9c61fdfabf97a307c2cf3621a6949f0a4b995",
      "tree": "82b128341c12205db62fe092d692d32103a7ea9f",
      "parents": [
        "cea9c22800773cecb1d41f4a6139f9eb6a95368b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:16:46 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:16:46 2009 +1100"
      },
      "message": "md/raid5: change reshape-progress measurement to cope with reshaping backwards.\n\nWhen reducing the number of devices in a raid4/5/6, the reshape\nprocess has to start at the end of the array and work down to the\nbeginning.  So we need to handle expand_progress and expand_lo\ndifferently.\n\nThis patch renames \"expand_progress\" and \"expand_lo\" to avoid the\nimplication that anything is getting bigger (expand-\u003ereshape) and\nevery place they are used, we make sure that they are used the right\nway depending on whether delta_disks is positive or negative.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "cea9c22800773cecb1d41f4a6139f9eb6a95368b",
      "tree": "d070d22390b86768fefb8ba04c64d74993ed28e9",
      "parents": [
        "7ec0547838976d088dfb9cb0adb073e6e8a15aa3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:15:05 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:15:05 2009 +1100"
      },
      "message": "md: add explicit method to signal the end of a reshape.\n\nCurrently raid5 (the only module that supports restriping)\nnotices that the reshape has finished be sync_request being\ngiven a large value, and handles any cleanup them.\n\nThis patch changes it so md_check_recovery calls into an\nexplicit finish_reshape method as well.\n\nThe clean-up from sync_request can do things that need to be\ndone promptly, typically things local to the raid5_conf_t\nstructure.\n\nThe \"finish_reshape\" method is called under the mddev_lock\nso it can do things involving reconfiguring the device.\n\nThis allows us to get rid of md_set_array_sectors_locked, which\nwould have caused a deadlock if you tried to stop and array\nwhile a reshape was happening.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7ec0547838976d088dfb9cb0adb073e6e8a15aa3",
      "tree": "32f2d5aa5d112e99bebbfb9bfde49ba82b66809d",
      "parents": [
        "34e04e87fb8b2c62c9e8868f41c8179d0e15f51a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:10:36 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:10:36 2009 +1100"
      },
      "message": "md/raid5: enhance raid5_size to work correctly with negative delta_disks\n\nThis is the first of four patches which combine to allow md/raid5 to\nreduce the number of devices in the array by restriping the data over\na subset of the devices.\n\nIf the number of disks in a raid4/5/6 is being reduced, then the\ndefault size must be based on the new number, not the old number\nof devices.\nIn general, it should be based on the smaller of new and old.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "34e04e87fb8b2c62c9e8868f41c8179d0e15f51a",
      "tree": "19d62e6b77f6f786902cc5ab5f8f068fb889efe1",
      "parents": [
        "f701d589aa34d7531183c9ac6f7713ba14212b02"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:10:16 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:10:16 2009 +1100"
      },
      "message": "md/raid5: drop qd_idx from r6_state\n\nWe now have this value in stripe_head so we don\u0027t need to duplicate\nit.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f701d589aa34d7531183c9ac6f7713ba14212b02",
      "tree": "d388cd7fa54c520f12233470a35ebb0676677e7a",
      "parents": [
        "18b0033491f584a2d79697da714b1ef9d6b27d22"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 31 15:09:39 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:09:39 2009 +1100"
      },
      "message": "md/raid6: move raid6 data processing to raid6_pq.ko\n\nMove the raid6 data processing routines into a standalone module\n(raid6_pq) to prepare them to be called from async_tx wrappers and other\nnon-md drivers/modules.  This precludes a circular dependency of raid456\nneeding the async modules for data processing while those modules in\nturn depend on raid456 for the base level synchronous raid6 routines.\n\nTo support this move:\n1/ The exportable definitions in raid6.h move to include/linux/raid/pq.h\n2/ The raid6_call, recovery calls, and table symbols are exported\n3/ Extra #ifdef __KERNEL__ statements to enable the userspace raid6test to\n   compile\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "18b0033491f584a2d79697da714b1ef9d6b27d22",
      "tree": "c06549a4d8fb65418671d6f55a9d647975b9abbc",
      "parents": [
        "b522adcde9c4d3fb7b579cfa9160d8bde7744be8"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Tue Mar 31 15:00:56 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:00:56 2009 +1100"
      },
      "message": "md: raid5 run(): Fix max_degraded for raid level 4.\n\nraid4 allows only one failed disk.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b522adcde9c4d3fb7b579cfa9160d8bde7744be8",
      "tree": "4208e3dcec3ebdfa6ad9bc153f76129400532717",
      "parents": [
        "1f403624bde3c678a166984b1e6a727a0ce06f2b"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 31 15:00:31 2009 +1100"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 31 15:00:31 2009 +1100"
      },
      "message": "md: \u0027array_size\u0027 sysfs attribute\n\nAllow userspace to set the size of the array according to the following\nsemantics:\n\n1/ size must be \u003c\u003d to the size returned by mddev-\u003epers-\u003esize(mddev, 0, 0)\n   a) If size is set before the array is running, do_md_run will fail\n      if size is greater than the default size\n   b) A reshape attempt that reduces the default size to less than the set\n      array size should be blocked\n2/ once userspace sets the size the kernel will not change it\n3/ writing \u0027default\u0027 to this attribute returns control of the size to the\n   kernel and reverts to the size reported by the personality\n\nAlso, convert locations that need to know the default size from directly\nreading -\u003earray_sectors to \u003cpers\u003e_size.  Resync/reshape operations\nalways follow the default size.\n\nFinally, fixup other locations that read a number of 1k-blocks from\nuserspace to use strict_blocks_to_sectors() which checks for unsigned\nlong long to sector_t overflow and blocks to sectors overflow.\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "1f403624bde3c678a166984b1e6a727a0ce06f2b",
      "tree": "b66ed37091e825bcde1cd0d333d4ebba86772805",
      "parents": [
        "80c3a6ce4ba4470379b9e6a4d9bcd9d2ee26ae03"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 31 14:59:03 2009 +1100"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 31 14:59:03 2009 +1100"
      },
      "message": "md: centralize -\u003earray_sectors modifications\n\nGet personalities out of the business of directly modifying\n-\u003earray_sectors.  Lays groundwork to introduce policy on when\n-\u003earray_sectors can be modified.\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "80c3a6ce4ba4470379b9e6a4d9bcd9d2ee26ae03",
      "tree": "de88622f05a7e681ac7bff7714e8f2d8953b66ac",
      "parents": [
        "93ed05e2a56b5ee06c0100a169433b11c4aa5d0b"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 17 18:10:40 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 31 14:57:49 2009 +1100"
      },
      "message": "md: add \u0027size\u0027 as a personality method\n\nIn preparation for giving userspace control over -\u003earray_sectors we need\nto be able to retrieve the \u0027default\u0027 size, and the \u0027anticipated\u0027 size\nwhen a reshape is requested.  For personalities that do not reshape emit\na warning if anything but the default size is requested.\n\nIn the raid5 case we need to update -\u003eprevious_raid_disks to make the\nnew \u0027default\u0027 size available.\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "93ed05e2a56b5ee06c0100a169433b11c4aa5d0b",
      "tree": "7d66d1c72a0dafaf5542f3733c221b54dbf8c13e",
      "parents": [
        "fc9739c6d626ee79a148ec367d143b0601299a9d"
      ],
      "author": {
        "name": "Atsushi SAKAI",
        "email": "sakaia@jp.fujitsu.com",
        "time": "Tue Mar 31 14:57:37 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:57:37 2009 +1100"
      },
      "message": "md: fix typo in FSF address\n\nHello,\n\n I found a typo Bosto\"m\" in FSF address.\nAnd I am checking around linux source code.\nHere is the only place which uses Bosto\"m\" (not Boston).\n\nSigned-off-by: Atsushi SAKAI \u003csakaia@jp.fujitsu.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fc9739c6d626ee79a148ec367d143b0601299a9d",
      "tree": "492a3a29fe44fdd99d9177bef77b16a463a771f9",
      "parents": [
        "e9d4758f6e93488dc719a1445ce54659a570938f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:57:20 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:57:20 2009 +1100"
      },
      "message": "md: add takeover support for converting raid6 back into raid5\n\nIf a raid6 is still in the layout that comes from converting raid5\ninto a raid6. this will allow us to convert it back again.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e9d4758f6e93488dc719a1445ce54659a570938f",
      "tree": "13fb97a1f47f806b25b957cbf9d1ec69df8d0de8",
      "parents": [
        "b3546035277847028df650b147469fc943cf5c71"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:57:09 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:57:09 2009 +1100"
      },
      "message": "md: add takeover support for raid4 -\u003e raid5 conversion.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b3546035277847028df650b147469fc943cf5c71",
      "tree": "87966abc5456a62845326eb8d5a5cf0f88879b2d",
      "parents": [
        "d562b0c4313e3ddea402a400371afa47ddf679f9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:56:41 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:56:41 2009 +1100"
      },
      "message": "md/raid5: allow layout/chunksize to be changed on an active 2-drive raid5.\n\n2-drive raid5\u0027s aren\u0027t very interesting.  But if you are converting\na raid1 into a raid5, you will at least temporarily have one.  And\nthat it a good time to set the layout/chunksize for the new RAID5\nif you aren\u0027t happy with the defaults.\n\nlayout and chunksize don\u0027t actually affect the placement of data\non a 2-drive raid5, so we just do some internal book-keeping.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d562b0c4313e3ddea402a400371afa47ddf679f9",
      "tree": "e895c3f1688493f6587ad61d9824e96994ca38d6",
      "parents": [
        "245f46c2c221ef09c7db892f0e3fc2149be42052"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "message": "md: add -\u003etakeover method for raid5 to be able to take over raid1\n\nThe RAID1 must have two drives and be a suitable size to\nbe a multiple of a chunksize that isn\u0027t too small.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "245f46c2c221ef09c7db892f0e3fc2149be42052",
      "tree": "be7e6f4b7b65b682c43e59ef17f7ed580bc8a82b",
      "parents": [
        "409c57f3801701dfee27a28103dda4831306cb20"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "message": "md: add -\u003etakeover method to support changing the personality managing an array\n\nImplement this for RAID6 to be able to \u0027takeover\u0027 a RAID5 array.  The\nnew RAID6 will use a layout which places Q on the last device, and\nthat device will be missing.\nIf there are any available spares, one will immediately have Q\nrecovered onto it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "409c57f3801701dfee27a28103dda4831306cb20",
      "tree": "430c8e4ebe879b27250e061dc1a1171b12aaadf0",
      "parents": [
        "e0cf8f045b2023b0b3f919ee93eb94345f648434"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "message": "md: enable suspend/resume of md devices.\n\nTo be able to change the \u0027level\u0027 of an md/raid array, we need to\nsuspend the device so that no requests are active - then move some\npointers around etc.\n\nThe code already keeps counts of active requests and the -\u003equiesce\nfunction can be used to wait until those counts hit zero.\nHowever the quiesce function blocks new requests once they are all\nready \u0027inside\u0027 the personality module, and that is too late if we want\nto replace the personality modules.\n\nSo make all md requests come in through a common md_make_request\nfunction that keeps track of how many requests have entered the\nmodules but may not yet be on the internal reference counts.\nAllow md_make_request to be blocked when we want to suspend the\ndevice, and make it possible to wait for all those in-transit requests\nto be added to internal lists so that -\u003equiesce can wait for them.\n\nThere is still a problem that when a request completes, we drop the\nref count inside the personality code so there is a short time between\nwhen the refcount hits zero, and when the personality code is no\nlonger being used.\nThe personality code never blocks (schedule or spinlock) between\ndropping the refcount and exiting the routine, so this should be safe\n(as put_module calls synchronize_sched() before unmapping the module\ncode).\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e0cf8f045b2023b0b3f919ee93eb94345f648434",
      "tree": "21d8d0741a5ae4676fea5b53939cc806ae2b41bd",
      "parents": [
        "91adb56473febeeb3ef657bb5147ddd355465700"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "message": "md: md_unregister_thread should cope with being passed NULL\n\nMostly md_unregister_thread is only called when we know that the\nthread is NULL, but sometimes we need to check first.  It is safer\nto put the check inside md_unregister_thread itself.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "91adb56473febeeb3ef657bb5147ddd355465700",
      "tree": "9ed414dd2bf999d91a536449c01273ee23ddbcfa",
      "parents": [
        "34817e8c3948ea20316dfa8fd8947d6d0ee82ba9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "message": "md/raid5: refactor raid5 \"run\"\n\n.. so that the code to create the private data structures is separate.\nThis will help with future code to change the level of an active\narray.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "34817e8c3948ea20316dfa8fd8947d6d0ee82ba9",
      "tree": "f4d2e75473b46db94928e21e9fe54b029432418b",
      "parents": [
        "67cc2b8165857ba019920d1f00d64bcc4140075d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "message": "md: make sure new_level, new_chunksize, new_layout always have sensible values.\n\nWhen an md array is undergoing a change, we have new_* fields that\nshow the new values.\nWhen no change is happening, it is least confusing if these have\nthe same value as the normal fields.\nThis is true in most cases, but not when the values are set via sysfs.\n\nSo fix this up.\n\nA subsequent patch will BUG_ON if these things aren\u0027t consistent.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "67cc2b8165857ba019920d1f00d64bcc4140075d",
      "tree": "ff8e8eed440640acfa561160115ac44aedf811c2",
      "parents": [
        "99c0fb5f92828ae96909d390f2df137b89093b37"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "message": "md/raid5: finish support for DDF/raid6\n\nDDF requires RAID6 calculations over different devices in a different\norder.\nFor md/raid6, we calculate over just the data devices, starting\nimmediately after the \u0027Q\u0027 block.\nFor ddf/raid6 we calculate over all devices, using zeros in place of\nthe P and Q blocks.\n\nThis requires unfortunately complex loops...\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "99c0fb5f92828ae96909d390f2df137b89093b37",
      "tree": "67757972da005990d619b810c3b75fb8b6c9969f",
      "parents": [
        "911d4ee8536d89ea8a6cd3e96b1c95a3ebc5ea66"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "message": "md/raid5: Add support for new layouts for raid5 and raid6.\n\nDDF uses different layouts for P and Q blocks than current md/raid6\nso add those that are missing.\nAlso add support for RAID6 layouts that are identical to various\nraid5 layouts with the simple addition of one device to hold all of\nthe \u0027Q\u0027 blocks.\nFinally add \u0027raid5\u0027 layouts to match raid4.\nThese last to will allow online level conversion.\n\nNote that this does not provide correct support for DDF/raid6 yet\nas the order in which data blocks are summed to produce the Q block\nis significant and different between current md code and DDF\nrequirements.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "911d4ee8536d89ea8a6cd3e96b1c95a3ebc5ea66",
      "tree": "222c79b83b7cdcd0b73501c40ed11092b9af10cf",
      "parents": [
        "d0dabf7e577411c2bf6b616c751544dc241213d4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "message": "md/raid5: simplify raid5_compute_sector interface\n\nRather than passing \u0027pd_idx\u0027 and \u0027qd_idx\u0027 to be filled in, pass\na \u0027struct stripe_head *\u0027 and fill in the relevant fields.  This is\nmore extensible.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d0dabf7e577411c2bf6b616c751544dc241213d4",
      "tree": "26a41b66f1ae83e2127eceace281332134518eb0",
      "parents": [
        "112bf8970dbdfc00bd4667da5996e57c2ce58066"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "message": "md/raid6: remove expectation that Q device is immediately after P device.\n\n\nCode currently assumes that the devices in a raid6 stripe are\n  0 1 ... N-1 P Q\nin some rotated order.  We will shortly add new layouts in which\nthis strict pattern is broken.\nSo remove this expectation.  We still assume that the data disks\nare roughly in-order.  However P and Q can be inserted anywhere within\nthat order.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "112bf8970dbdfc00bd4667da5996e57c2ce58066",
      "tree": "504afc2dec2ef28d27ef9248eb80b6165cdf95de",
      "parents": [
        "b5663ba405fe3e51176ddb6c91a5e186590c26b5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "message": "md/raid5: change raid5_compute_sector and stripe_to_pdidx to take a \u0027previous\u0027 argument\n\nThis similar to the recent change to get_active_stripe.\nThere is no functional change, just come rearrangement to make\nfuture patches cleaner.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b5663ba405fe3e51176ddb6c91a5e186590c26b5",
      "tree": "5eb8f009b97a02a90cf23db012588971c2f9aa0d",
      "parents": [
        "dd8ac336c13fd8afdb082ebacb1cddd5cf727889"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "message": "md/raid5: simplify interface for init_stripe and get_active_stripe\n\nRather than passing \u0027pd_idx\u0027 and \u0027disks\u0027 to these functions, just pass\n\u0027previous\u0027 which tells whether to use the \u0027previous\u0027 or \u0027current\u0027\ngeometry during a reshape, and let init_stripe calculate\ndisks and pd_idx and anything else it might need.\n\nThis is not a substantial simplification and even adds a division.\nHowever we will shortly be adding more complexity to init_stripe\nto handle more interesting \u0027reshape\u0027 activities, and without this\nchange, the interface to these functions would get very complex.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "dd8ac336c13fd8afdb082ebacb1cddd5cf727889",
      "tree": "0baa8111d7406774525a1053be461135257d73d2",
      "parents": [
        "58c0fed400603a802968b23ddf78f029c5a84e41"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: Represent raid device size in sectors.\n\nThis patch renames the \"size\" field of struct mdk_rdev_s to\n\"sectors\" and changes this field to store sectors instead of\nblocks.\n\nAll users of this field, linear.c, raid0.c and md.c, are fixed up\naccordingly which gets rid of many multiplications and divisions.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "58c0fed400603a802968b23ddf78f029c5a84e41",
      "tree": "474fcb9775bb07f39ebb7802fb9b51d69222dcbb",
      "parents": [
        "575a80fa4f623141e9791e41879d87800fb6d862"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: Make mddev-\u003esize sector-based.\n\nThis patch renames the \"size\" field of struct mddev_s to \"dev_sectors\"\nand stores the number of 512-byte sectors instead of the number of\n1K-blocks in it.\n\nAll users of that field, including raid levels 1,4-6,10, are adjusted\naccordingly. This simplifies the code a bit because it allows to get\nrid of a couple of divisions/multiplications by two.\n\nIn order to make checkpatch happy, some minor coding style issues\nhave also been addressed. In particular, size_store() now uses\nstrict_strtoull() instead of simple_strtoull().\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "575a80fa4f623141e9791e41879d87800fb6d862",
      "tree": "f316efc3ee33b2914d8b9f3a3041394560ee9e90",
      "parents": [
        "97e4f42d62badb0f9fbc27c013e89bc1336a03bc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: be more consistent about setting WriteMostly flag when adding a drive to an array\n\nWhen a drive is added to an array using ADD_NEW_DISK, there are two\nplaces we can get certain flags from:  the metadata on the disk or the\nflags passed through the IOCTL.\n\nFor the WriteMostly flag (aka MD_DISK_WRITEMOSTLY) we take the value\nfrom either of those sources depending on if it is set (i.e. we\neffectively \u0027or\u0027 the two sources together).\n\nThis makes it awkward to clear, and is at best inconsistent.\n\nAs documented code (in mdadm) requires that setting\nMD_DISK_WRITEMOSTLY in the ioctl will be effective, we resolve the\ninconsistency by always using the value for this flag from the ioctl,\nand ignoring the value on disk.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "97e4f42d62badb0f9fbc27c013e89bc1336a03bc",
      "tree": "04cc809702a6b080c417c4ddf605642bbf7de521",
      "parents": [
        "43b2e5d86d8bdd77386226db0bc961529492c043"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: occasionally checkpoint drive recovery to reduce duplicate effort after a crash\n\nVersion 1.x metadata has the ability to record the status of a\npartially completed drive recovery.\nHowever we only update that record on a clean shutdown.\nIt would be nice to update it on unclean shutdowns too, particularly\nwhen using a bitmap that removes much to the \u0027sync\u0027 effort after an\nunclean shutdown.\n\nOne complication with checkpointing recovery is that we only know\nwhere we are up to in terms of IO requests started, not which ones\nhave completed.  And we need to know what has completed to record\nhow much is recovered.  So occasionally pause the recovery until all\nsubmitted requests are completed, then update the record of where\nwe are up to.\n\nWhen we have a bitmap, we already do that pause occasionally to keep\nthe bitmap up-to-date.  So enhance that code to record the recovery\noffset and schedule a superblock update.\nAnd when there is no bitmap, just pause 16 times during the resync to\ndo a checkpoint.\n\u002716\u0027 is a fairly arbitrary number.  But we don\u0027t really have any good\nway to judge how often is acceptable, and it seems like a reasonable\nnumber for now.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "43b2e5d86d8bdd77386226db0bc961529492c043",
      "tree": "601a885b1410324678cf319eee77cc54a02f2cf3",
      "parents": [
        "bff61975b3d6c18ee31457cc5b4d73042f44915f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: move md_k.h from include/linux/raid/ to drivers/md/\n\nIt really is nicer to keep related code together..\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bff61975b3d6c18ee31457cc5b4d73042f44915f",
      "tree": "3aff48088b35172e74f56ae54f0b53e76a0c2150",
      "parents": [
        "92022950c6b1bb3da90b2976b20271cdfd98b8a3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: move lots of #include lines out of .h files and into .c\n\nThis makes the includes more explicit, and is preparation for moving\nmd_k.h to drivers/md/md.h\n\nRemove include/raid/md.h as its only remaining use was to #include\nother files.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "92022950c6b1bb3da90b2976b20271cdfd98b8a3",
      "tree": "5405257242ddcadef6e90ea597289558de4e03f2",
      "parents": [
        "8b2b5c217c20b5460218ab8731295f2e46c7dd29"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: move most content from md.h to md_k.h\n\nThe extern function definitions are kernel-internal definitions, so\nthey belong in md_k.h\n\nThe MD_*_VERSION values could reasonably go in a number of places,\nbut md_u.h seems most reasonable.\n\nThis leaves almost nothing in md.h.  It will go soon.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8b2b5c217c20b5460218ab8731295f2e46c7dd29",
      "tree": "f5da8b06b3d2a53e80c31e0c0aa386e381b3a841",
      "parents": [
        "ef740c372dfd80e706dbf955d4e4aedda6c0c148"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:03 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:03 2009 +1100"
      },
      "message": "md: move LEVEL_* definition from md_k.h to md_u.h\n\n.. as they are part of the user-space interface.\nAlso move MdpMinorShift into there so we can remove duplication.\n\nLastly move mdp_major in.  It is less obviously part of the user-space\ninterface, but do_mounts_md.c uses it, and it is acting a bit like\nuser-space.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ef740c372dfd80e706dbf955d4e4aedda6c0c148",
      "tree": "8d9ef9db346ee1ba319a125c9de83cdde049510d",
      "parents": [
        "2a40a8aed083d988df6822bb9b1b08fb7ce21e1d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Mar 31 14:27:03 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:03 2009 +1100"
      },
      "message": "md: move headers out of include/linux/raid/\n\nMove the headers with the local structures for the disciplines and\nbitmap.h into drivers/md/ so that they are more easily grepable for\nhacking and not far away.  md.h is left where it is for now as there\nare some uses from the outside.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2a40a8aed083d988df6822bb9b1b08fb7ce21e1d",
      "tree": "73b814307d6c6beaea2013496518696f515f7cf4",
      "parents": [
        "3dbd8c2e3ff0185585e068f190289d2a267a3e83"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "message": "cleanup drivers/md/Makefile\n\nUse the -y variables instead of the old -objs so we can easily add\nconditional objects to the modules.  Also always use +\u003d to add\nsubobjects to avoid problems when placing additional objects in\nsome place in the file.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3dbd8c2e3ff0185585e068f190289d2a267a3e83",
      "tree": "f49dfbb19fc57e7888a53e763449c36e692367c4",
      "parents": [
        "3f9d99c12a533809342b475c95452e82761bcc1c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "message": "md: stop defining MAJOR_NR\n\nMAJOR_NR was only required for magic in linux/blk.h in 2.4 or earlier\nkernels, so no need to keep it around.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3f9d99c12a533809342b475c95452e82761bcc1c",
      "tree": "8e8bcc72dce1b69e958317f77c351bc0bd4e1c28",
      "parents": [
        "355a43e641b948a7b755cb4c2466ec548d5b495f"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "message": "MD data integrity support\n\nmd: Add support for data integrity to MD\n\nIf all subdevices support the same protection format the MD device is\nflagged as integrity capable.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "355a43e641b948a7b755cb4c2466ec548d5b495f",
      "tree": "bed8f87adde74f054c6b822ffdbae74395e76710",
      "parents": [
        "d0a4bb492772ce5c4bdfba3744a99ed6f6fb238f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "message": "md: write bitmap information to devices that are undergoing recovery.\n\nWhen we add some spares to an array and start recovery, and we have\na bitmap which is stored \u0027internally\u0027 on all devices, we call\nbitmap_write_all to make sure the bitmap is correct on the new\ndevice(s).\nHowever that doesn\u0027t work as write_sb_page only writes to\n\u0027In_sync\u0027 devices, and devices undergoing recovery are not\n\u0027In_sync\u0027 until recovery finishes.\n\nSo extend write_sb_page (actually next_active_rdev) to include devices\nthat are under recovery.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d0a4bb492772ce5c4bdfba3744a99ed6f6fb238f",
      "tree": "a76356c2051e6f225c31989dbf278689554dfcbf",
      "parents": [
        "1187cf0a3c8b647d08bc86e043563c8d2a327adc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "message": "md: never clear bit from the write-intent bitmap when the array is degraded.\n\n\nIt is safe to clear a bit from the write-intent bitmap for a raid1\nif we know the data has been written to all devices, which is\nwhat the current test does.\n\nBut it is not always safe to update the \u0027events_cleared\u0027 counter in\nthat case.  This is because one request could complete successfully\nafter some other request has partially failed.\n\nSo simply disable the clearing and updating of events_cleared whenever\nthe array is degraded.  This might end up not clearing some bits that\ncould safely be cleared, but it is safest approach.\n\nNote that the bug fixed here did not risk corrupting data by letting\nthe array get out-of-sync.  Rather it meant that when a device is\nremoved and re-added to the array, it might incorrectly require a full\nrecovery rather than just recovering based on the bitmap.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1187cf0a3c8b647d08bc86e043563c8d2a327adc",
      "tree": "759515a3fdcbf962f35255f90ea6c4d7c708391a",
      "parents": [
        "eea1bf384e05b5ab747f8530c4fba9e9e6907fff"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "message": "md: Allow write-intent bitmaps to have chunksize \u003c PAGE_SIZE\n\nmd currently insists that the chunk size used for write-intent\nbitmaps (the amount of data that corresponds to one chunk)\nbe at least one page.\n\nThe reason for this restriction is lost in the mists of time,\nbut a review of the code (and a vague memory) suggests that the only\nproblem would be related to resync.  Resync tries very hard to\nwork in multiples of a page, but also needs to sync with units\nof a bitmap_chunk too.\n\nThis connection comes out in the bitmap_start_sync call.\n\nSo change bitmap_start_sync to always work in multiples of a page.\nIf the bitmap chunk size is less that one page, we flag multiple\nchunks as \u0027syncing\u0027 and generally make them all appear to the\nresync routines like one chunk.\n\nAll other code either already works with data ranges that could\nspan multiple chunks, or explicitly only cares about a single chunk.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "eea1bf384e05b5ab747f8530c4fba9e9e6907fff",
      "tree": "ed4c05f8bd7e5805092e9c6a2c257ca71dc0fe2d",
      "parents": [
        "99adcd9d67aaf04e28f5ae96df280f236bde4b66"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "message": "md: Fix is_mddev_idle test (again).\n\nThere are two problems with is_mddev_idle.\n\n1/ sync_io is \u0027atomic_t\u0027 and hence \u0027int\u0027.  curr_events and all the\n   rest are \u0027long\u0027.\n   So if sync_io were to wrap on a 64bit host, the value of\n   curr_events would go very negative suddenly, and take a very\n   long time to return to positive.\n\n   So do all calculations as \u0027int\u0027.  That gives us plenty of precision\n   for what we need.\n\n2/ To initialise rdev-\u003elast_events we simply call is_mddev_idle, on\n   the assumption that it will make sure that last_events is in a\n   suitable range.  It used to do this, but now it does not.\n   So now we need to be more explicit about initialisation.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0f571515c332e00b3515dbe0859ceaa30ab66e00",
      "tree": "6d67c555714264dda749e387cee6738f770abc5d",
      "parents": [
        "e44e0aa3cfa97cddff01704751a4b25151830c72"
      ],
      "author": {
        "name": "Atsushi Nemoto",
        "email": "anemo@mba.ocn.ne.jp",
        "time": "Fri Mar 06 20:07:14 2009 +0900"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Thu Mar 26 09:48:09 2009 -0700"
      },
      "message": "dmaengine: Add privatecnt to revert DMA_PRIVATE property\n\nCurrently dma_request_channel() set DMA_PRIVATE capability but never\nclear it.  So if a public channel was once grabbed by\ndma_request_channel(), the device stay PRIVATE forever.  Add\nprivatecnt member to dma_device to correctly revert it.\n\n[lg@denx.de: fix bad usage of \u0027chan\u0027 in dma_async_device_register]\nSigned-off-by: Atsushi Nemoto \u003canemo@mba.ocn.ne.jp\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "e44e0aa3cfa97cddff01704751a4b25151830c72",
      "tree": "9d876e5e47813101a4fc125831e0188664c486e0",
      "parents": [
        "b54d5cb9156868fb4f27ccd46a3afb0bf3ef8e0c"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Mar 25 09:13:25 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Mar 25 09:13:25 2009 -0700"
      },
      "message": "dmatest: add dma interrupts and callbacks\n\nUse the callback infrastructure to report driver/hardware hangs or\nmissed interrupts.  Since this makes the test threads much more\naggressive (from: explicit 1ms sleep to: wait_for_completion) we set the\nnice value to 10 so as to not swamp legitimate tasks.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "b54d5cb9156868fb4f27ccd46a3afb0bf3ef8e0c",
      "tree": "e825eb374b73240180d33b34be8ab10d6dffbd1a",
      "parents": [
        "729b5d1b8ec72c28e99840b3f300ba67726e3ab9"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Mar 25 09:13:25 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Mar 25 09:13:25 2009 -0700"
      },
      "message": "dmatest: add xor test\n\nExtend dmatest to launch a thread per supported operation type and add\nan xor test.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "729b5d1b8ec72c28e99840b3f300ba67726e3ab9",
      "tree": "8eac6444ea80bf05f461eb77243f56b008ee5083",
      "parents": [
        "06164f3194e01ea4c76941ac60f541d656c8975f"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Mar 25 09:13:25 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Mar 25 09:13:25 2009 -0700"
      },
      "message": "dmaengine: allow dma support for async_tx to be toggled\n\nProvide a config option for blocking the allocation of dma channels to\nthe async_tx api.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "06164f3194e01ea4c76941ac60f541d656c8975f",
      "tree": "0a5edc96e053ce0cf90139b48bc2ca7c7c130186",
      "parents": [
        "54aee6a5f560d0e1bf3f39987c6ebe06daeb0ce1"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Mar 25 09:13:25 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Mar 25 09:13:25 2009 -0700"
      },
      "message": "async_tx: provide __async_inline for HAS_DMA\u003dn archs\n\nTo allow an async_tx routine to be compiled away on HAS_DMA\u003dn arch it\nneeds to be declared __always_inline otherwise the compiler may emit\ncode and cause a link error.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "54aee6a5f560d0e1bf3f39987c6ebe06daeb0ce1",
      "tree": "b1cab9a10387f12305f5e92ce5e91eabdfc78367",
      "parents": [
        "ccccce229c633a92c42cd1a40c0738d7b0d12644"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Mar 25 09:13:24 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Mar 25 09:13:24 2009 -0700"
      },
      "message": "dmaengine: kill some unused headers\n\nThe dmaengine redux left some unneeded headers in\ninclude/linux/dmaengine.h, clean them up.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "ccccce229c633a92c42cd1a40c0738d7b0d12644",
      "tree": "a954537ae73f2e03c4431b244796cdc255af7a10",
      "parents": [
        "8d47bae004f062630f69f7f83d098424252e232d"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Mar 25 09:13:24 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Mar 25 09:13:24 2009 -0700"
      },
      "message": "dmaengine: initialize tx_list in dma_async_tx_descriptor_init\n\nCentralize this common initialization (and one case where ipu_idmac is\nduplicating -\u003echan initialization).\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "8d47bae004f062630f69f7f83d098424252e232d",
      "tree": "68379790587eef10926d029ffce74b763175b10c",
      "parents": [
        "234f2df56f5b05756c444edc9879145deddf69f4"
      ],
      "author": {
        "name": "Guennadi Liakhovetski",
        "email": "g.liakhovetski@gmx.de",
        "time": "Wed Mar 25 09:13:24 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Mar 25 09:13:24 2009 -0700"
      },
      "message": "dma: i.MX31 IPU DMA robustness improvements\n\nAdd DMA error handling to the ISR, move common code fragments to functions, fix\nscatter-gather element queuing in the ISR, survive channel freeing and\nre-allocation in a quick succession.\n\nSigned-off-by: Guennadi Liakhovetski \u003clg@denx.de\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "234f2df56f5b05756c444edc9879145deddf69f4",
      "tree": "6946d1561e3243cbb4046652d1d70b647bb7947d",
      "parents": [
        "0149f7d5dc66dcffbb044ba005a5378a5864d2a3"
      ],
      "author": {
        "name": "Guennadi Liakhovetski",
        "email": "lg@denx.de",
        "time": "Wed Mar 25 09:13:24 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Mar 25 09:13:24 2009 -0700"
      },
      "message": "dma: improve section assignment in i.MX31 IPU DMA driver\n\nThe i.MX31 IPU DMA driver is a platform driver, but doesn\u0027t need hotplug, so we\ncan use __init and __exit function attributes.\n\nSigned-off-by: Guennadi Liakhovetski \u003clg@denx.de\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "0149f7d5dc66dcffbb044ba005a5378a5864d2a3",
      "tree": "9ba399f0c71d62d23563d74308a58cc7eb5baf62",
      "parents": [
        "257b17ca030387cb17314cd1851507bdd1b4ddd5"
      ],
      "author": {
        "name": "Guennadi Liakhovetski",
        "email": "lg@denx.de",
        "time": "Wed Mar 25 09:13:23 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Mar 25 09:13:23 2009 -0700"
      },
      "message": "dma: ipu_idmac driver cosmetic clean-up\n\nRemove superfluous semicolons, update comments.\n\nSigned-off-by: Guennadi Liakhovetski \u003clg@denx.de\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "257b17ca030387cb17314cd1851507bdd1b4ddd5",
      "tree": "74f88050ecfb70e6370399bc8b34843b22472f85",
      "parents": [
        "041b62374c7fedc11a8a1eeda2868612d3d1436c"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Mar 25 09:13:23 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Mar 25 09:13:23 2009 -0700"
      },
      "message": "dmaengine: fail device registration if channel registration fails\n\nAtsushi points out:\n\"If alloc_percpu or kzalloc failed, chan_id does not match with its\nposition in device-\u003echannels list.\n\nAnd above \"continue\" looks buggy anyway.  Keeping incomplete channels\nin device-\u003echannels list looks very dangerous...\"\n\nAlso, fix up leakage of idr_ref in the idr_pre_get() and channel init\nfail cases.\n\nReported-by: Atsushi Nemoto \u003canemo@mba.ocn.ne.jp\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "041b62374c7fedc11a8a1eeda2868612d3d1436c",
      "tree": "c2ecd57b35e329b3dbc129ac6c9ee4e59421fa2c",
      "parents": [
        "aa8e4fc68d8024cd3132035d13c3cefa7baeac8f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 19:39:28 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 19:39:28 2009 -0700"
      },
      "message": "Linus 2.6.29-rc8\n"
    },
    {
      "commit": "aa8e4fc68d8024cd3132035d13c3cefa7baeac8f",
      "tree": "ace4457c20730a5a557f91599ba30274a89c46a8",
      "parents": [
        "9ead64974b05501bbac0d63a47c99fa786d064ba"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 19:32:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 19:32:51 2009 -0700"
      },
      "message": "bitmap: fix end condition in bitmap_find_free_region\n\nGuennadi Liakhovetski noticed that the end condition for the loop in\nbitmap_find_free_region() is wrong, and the \"return if error\" was also\nusing the wrong conditional that would only trigger if the bitmap was an\nexact multiple of the allocation size, which is not necessarily the case\nwith dma_alloc_from_coherent().\n\nSuch a failure would end up in bitmap_find_free_region() accessing\nbeyond the end of the bitmap.\n\nReported-by: Guennadi Liakhovetski \u003clg@denx.de\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9ead64974b05501bbac0d63a47c99fa786d064ba",
      "tree": "b385f49a07e92f5080c8e7219d888935ed46cc80",
      "parents": [
        "0b80e3adc289de13cc70b33d90812ef136b6ea01",
        "75bccd881a49d2da796ec0852158f957dc023f61"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:35:26 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:35:26 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes:\n  kbuild: remove unused -r option for module-init-tool depmod\n  kbuild: fix \u0027make rpm\u0027 when CONFIG_LOCALVERSION_AUTO\u003dy and using SCM tree\n  kbuild: fix mkspec to cleanup RPM_BUILD_ROOT\n  kbuild: fix C libary confusion in unifdef.c due to getline()\n"
    },
    {
      "commit": "0b80e3adc289de13cc70b33d90812ef136b6ea01",
      "tree": "316be5cb417bc244cb6480ff02dff141e70f2afa",
      "parents": [
        "188de5ec56dc27e0556ad1bc41ec6bd84418d7bf",
        "45e575ab9bfada5a5ef1b6174f8e749b1ecf0864"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:34:59 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:34:59 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus:\n  cpumask: mm_cpumask for accessing the struct mm_struct\u0027s cpu_vm_mask.\n  cpumask: tsk_cpumask for accessing the struct task_struct\u0027s cpus_allowed.\n"
    },
    {
      "commit": "188de5ec56dc27e0556ad1bc41ec6bd84418d7bf",
      "tree": "3b177cbf31053926bf37d4e300312ee8c3cb8f12",
      "parents": [
        "5216a3c6d10c891015474fbf7126c92a1845bf74",
        "363911d027d1de1c6df79eb3f487f5476b9619f4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:32:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:32:36 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-linus\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/pkl/squashfs-linus:\n  Squashfs: Valid filesystems are flagged as bad by the corrupted fs patch\n"
    },
    {
      "commit": "5216a3c6d10c891015474fbf7126c92a1845bf74",
      "tree": "8655b8f225c620432368db57195e69884beee506",
      "parents": [
        "ab03eca8d4754ef2ba9821d581975b10b8f317e7",
        "51b3e2700177b89fdb0d985926ce777a7ad52b15"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:25:04 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:25:04 2009 -0700"
      },
      "message": "Merge branch \u0027hwmon-for-linus\u0027 of git://jdelvare.pck.nerim.net/jdelvare-2.6\n\n* \u0027hwmon-for-linus\u0027 of git://jdelvare.pck.nerim.net/jdelvare-2.6:\n  hwmon: (f75375s) Remove unnecessary and confusing initialization\n  hwmon: (it87) Properly decode -128 degrees C temperature\n  hwmon: (lm90) Document support for the MAX6648/6692 chips\n  hwmon: (abituguru3) Fix I/O error handling\n"
    },
    {
      "commit": "ab03eca8d4754ef2ba9821d581975b10b8f317e7",
      "tree": "102e8bfaeb4f59054dbc39b5bb7f117315a50606",
      "parents": [
        "8be3e1f1cabaf85486a1c68873299cfade8ef243"
      ],
      "author": {
        "name": "Jody McIntyre",
        "email": "scjody@sun.com",
        "time": "Thu Mar 12 17:39:23 2009 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:24:25 2009 -0700"
      },
      "message": "trivial: fix bad links in the ext2 and ext3 documentation\n\nTrivial patch to fix bad links in the ext2 and ext3 documentation.\n\nSigned-off-by: Jody McIntyre \u003cscjody@sun.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8be3e1f1cabaf85486a1c68873299cfade8ef243",
      "tree": "f0cd3febcc22e69abf5bc9bda76df77814c5854a",
      "parents": [
        "c12e56ef6951f4fce1afe9ef6aab9243ea9a9b04",
        "d89987193631bf23d1735c55d13a06d4b8d0e9bd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:22:51 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:22:51 2009 -0700"
      },
      "message": "Merge branch \u0027fixes-20090312\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/willy/pci\n\n* \u0027fixes-20090312\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/willy/pci:\n  PCIe: portdrv: call pci_disable_device during remove\n  pci: Fix typo in message while disabling HT MSI mapping\n  pci: don\u0027t disable too many HT MSI mapping\n  powerpc/pseries: The RPA PCI hotplug driver depends on EEH\n  PCIe: AER: during disable, check subordinate before walking\n  PCI: Add PCI quirk to disable L0s ASPM state for 82575 and 82598\n"
    },
    {
      "commit": "c12e56ef6951f4fce1afe9ef6aab9243ea9a9b04",
      "tree": "677319ae34074efbf98a87d9496a7d5cb47c0524",
      "parents": [
        "7ef0d7377cb287e08f3ae94cebc919448e1f5dff"
      ],
      "author": {
        "name": "Faisal Latif",
        "email": "faisal.latif@intel.com",
        "time": "Thu Mar 12 14:34:59 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:21:41 2009 -0700"
      },
      "message": "RDMA/nes: Don\u0027t allow userspace QPs to use STag zero\n\nSTag zero is a special STag that allows consumers to access any bus\naddress without registering memory.  The nes driver unfortunately\nallows STag zero to be used even with QPs created by unprivileged\nuserspace consumers, which means that any process with direct verbs\naccess to the nes device can read and write any memory accessible to\nthe underlying PCI device (usually any memory in the system).  Such\naccess is usually given for cluster software such as MPI to use, so\nthis is a local privilege escalation bug on most systems running this\ndriver.\n\nThe driver was using STag zero to receive the last streaming mode\ndata; to allow STag zero to be disabled for unprivileged QPs, the\ndriver now registers a special MR for this data.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Faisal Latif \u003cfaisal.latif@intel.com\u003e\nSigned-off-by: Roland Dreier \u003crolandd@cisco.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7ef0d7377cb287e08f3ae94cebc919448e1f5dff",
      "tree": "3ab288db22eb17e76b5db1d9b8c6f7517570632f",
      "parents": [
        "f272b7bc447553410dde691aa31fc531adf9c175"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Mar 12 14:31:38 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:20:24 2009 -0700"
      },
      "message": "fs: new inode i_state corruption fix\n\nThere was a report of a data corruption\nhttp://lkml.org/lkml/2008/11/14/121.  There is a script included to\nreproduce the problem.\n\nDuring testing, I encountered a number of strange things with ext3, so I\ntried ext2 to attempt to reduce complexity of the problem.  I found that\nfsstress would quickly hang in wait_on_inode, waiting for I_LOCK to be\ncleared, even though instrumentation showed that unlock_new_inode had\nalready been called for that inode.  This points to memory scribble, or\nsynchronisation problme.\n\ni_state of I_NEW inodes is not protected by inode_lock because other\nprocesses are not supposed to touch them until I_LOCK (and I_NEW) is\ncleared.  Adding WARN_ON(inode-\u003ei_state \u0026 I_NEW) to sites where we modify\ni_state revealed that generic_sync_sb_inodes is picking up new inodes from\nthe inode lists and passing them to __writeback_single_inode without\nwaiting for I_NEW.  Subsequently modifying i_state causes corruption.  In\nmy case it would look like this:\n\nCPU0                            CPU1\nunlock_new_inode()              __sync_single_inode()\n reg \u003c- inode-\u003ei_state\n reg -\u003e reg \u0026 ~(I_LOCK|I_NEW)   reg \u003c- inode-\u003ei_state\n reg -\u003e inode-\u003ei_state          reg -\u003e reg | I_SYNC\n                                reg -\u003e inode-\u003ei_state\n\nNon-atomic RMW on CPU1 overwrites CPU0 store and sets I_LOCK|I_NEW again.\n\nFix for this is rather than wait for I_NEW inodes, just skip over them:\ninodes concurrently being created are not subject to data integrity\noperations, and should not significantly contribute to dirty memory\neither.\n\nAfter this change, I\u0027m unable to reproduce any of the added warnings or\nhangs after ~1hour of running.  Previously, the new warnings would start\nimmediately and hang would happen in under 5 minutes.\n\nI\u0027m also testing on ext3 now, and so far no problems there either.  I\ndon\u0027t know whether this fixes the problem reported above, but it fixes a\nreal problem for me.\n\nCc: \"Jorge Boncompte [DTI2]\" \u003cjorge@dti2.net\u003e\nReported-by: Adrian Hunter \u003cext-adrian.hunter@nokia.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f272b7bc447553410dde691aa31fc531adf9c175",
      "tree": "95bd28ba8cea8471c0f461cfe6a9f2f0c2f00dff",
      "parents": [
        "02d46e07e538c285accb5c000a7db3a97eff1fbf"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Thu Mar 12 14:31:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:20:24 2009 -0700"
      },
      "message": "memcg: use correct scan number at reclaim\n\nEven when page reclaim is under mem_cgroup, # of scan page is determined by\nstatus of global LRU. Fix that.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "02d46e07e538c285accb5c000a7db3a97eff1fbf",
      "tree": "eb5792dc5aad2ab9e365d7e5921e23a9691f92e9",
      "parents": [
        "1ba869ec581fd9078b684c56c399ffe3d2345e27"
      ],
      "author": {
        "name": "Mark Brown",
        "email": "broonie@opensource.wolfsonmicro.com",
        "time": "Thu Mar 12 14:31:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:20:24 2009 -0700"
      },
      "message": "mfd: add support for WM8351 revision B\n\nNo software visible difference from revision A.\n\nSigned-off-by: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nCc: Samuel Ortiz \u003csameo@openedhand.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1ba869ec581fd9078b684c56c399ffe3d2345e27",
      "tree": "42da774663a9093eeb5c42421d823013f781a761",
      "parents": [
        "7c48ed3383bfb2106694807361ec187fe8a4333d"
      ],
      "author": {
        "name": "Michael Spang",
        "email": "mspang@csclub.uwaterloo.ca",
        "time": "Thu Mar 12 14:31:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:20:24 2009 -0700"
      },
      "message": "acer-wmi: fix regression in backlight detection\n\nCurrently we disable the Acer WMI backlight device if there is no ACPI\nbacklight device.  As a result, we end up with no backlight device at all.\n We should instead disable it if there is an ACPI device, as the other\nlaptop drivers do.  This regression was introduced in febf2d9 (\"Acer-WMI:\nfingers off backlight if video.ko is serving this functionality\").\n\nEach laptop driver with backlight support got a similar change around\nfebf2d9.  The changes to the other drivers look correct; see e.g.\na598c82f for a similar but correct change.  The regression is also in\n2.6.28.\n\nSigned-off-by: Michael Spang \u003cmspang@csclub.uwaterloo.ca\u003e\nAcked-by: Thomas Renninger \u003ctrenn@suse.de\u003e\nCc: Zhang Rui \u003crui.zhang@intel.com\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Carlos Corbacho \u003ccarlos@strangeworlds.co.uk\u003e\nCc: Len Brown \u003clen.brown@intel.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.28.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7c48ed3383bfb2106694807361ec187fe8a4333d",
      "tree": "ffcf0bfde2db112f6fe8651a48b98d8a77ccd119",
      "parents": [
        "1b53dc74ef957f134d93e989150f983e92fb88e3"
      ],
      "author": {
        "name": "Ben Dooks",
        "email": "ben@simtec.co.uk",
        "time": "Thu Mar 12 14:31:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:20:24 2009 -0700"
      },
      "message": "mmc: s3cmci: fix s3c2410_dma_config() arguments.\n\nThe s3cmci driver is calling s3c2410_dma_config with incorrect data for\nthe DCON register.  The S3C2410_DCON_HWTRIG is implicit in the channel\nconfiguration and the device selection of S3C2410_DCON_CH0_SDI is\nincorrect as the DMA system may not select channel 0.\n\nSigned-off-by: Ben Dooks \u003cben@simtec.co.uk\u003e\nAcked-by: Pierre Ossman \u003cdrzeus@drzeus.cx\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1b53dc74ef957f134d93e989150f983e92fb88e3",
      "tree": "a6ba39f3b09ccd18d567ee879f2024a2bf4c1afa",
      "parents": [
        "a4e3f91b98d86ae0b5c816fe45190bb29ac32f71"
      ],
      "author": {
        "name": "Michael Kerrisk",
        "email": "mtk.manpages@googlemail.com",
        "time": "Thu Mar 12 14:31:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:20:24 2009 -0700"
      },
      "message": "MAINTAINERS: downgrade support for man-pages\n\nUnfortunately, Linux Foundation funding for my work on\nman-pages/testing/doc under the auspices of the LF documentation\nfellowship unfortunately ran out a short while ago (after earlier attempts\nto seek funding, only Google stepped forward with a bit of further funding\nfor the position), so the patch below acknowledges something closer to\nreality.\n\nUnfortunately, there will (probably very) soon be a further downgrade from\n\"Maintained\" to \"Odd Fixes\" or \"Orphan\", unless some funding miracle\noccurs.  So, if anyone is looking to become man-pages maintainer, there\nmay soon be an opening (okay, don\u0027t trample me in the rush ;-).)\n\nSigned-off-by: Michael Kerrisk \u003cmtk.manpages@googlemail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a4e3f91b98d86ae0b5c816fe45190bb29ac32f71",
      "tree": "a7a24399163031587cd63ea24112a90d9cc3e84e",
      "parents": [
        "a3cfbb53b1764a3d1f58ddc032737ab9edaa7d41"
      ],
      "author": {
        "name": "Daniel Mack",
        "email": "daniel@caiaq.de",
        "time": "Thu Mar 12 14:31:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:20:23 2009 -0700"
      },
      "message": "ds2760_battery.c: fix division by zero\n\nThe \u0027battery remaining capacity\u0027 calculation in\ndrivers/power/ds2760_battery.c lacks a parameter check to a division\noperation which causes the kernel to oops on my board.\n\n[   21.233750] Division by zero in kernel.\n[   21.237646] [\u003cc002955c\u003e] (__div0+0x0/0x20) from [\u003cc012561c\u003e] (Ldiv0+0x8/0x10)\n[   21.244816] [\u003cc01bef34\u003e] (ds2760_battery_read_status+0x0/0x2a4) from [\u003cc01bf3a4\u003e] (ds2760_battery_get_property+0x30/0xdc)\n[   21.255803]  r8:c03a22c0 r7:c7886100 r6:00000009 r5:c782fe7c r4:c7886084\n[   21.262518] [\u003cc01bf374\u003e] (ds2760_battery_get_property+0x0/0xdc) from [\u003cc01bde98\u003e] (power_supply_show_property+0x48/0x114)\n[   21.273480]  r6:c7996000 r5:00000009 r4:00000000\n[   21.278111] [\u003cc01bde50\u003e] (power_supply_show_property+0x0/0x114) from [\u003cc01be158\u003e] (power_supply_uevent+0x188/0x280)\n[   21.288537]  r8:00000001 r7:c7886100 r6:c7996000 r5:000000b4 r4:00000000\n[   21.295222] [\u003cc01bdfd0\u003e] (power_supply_uevent+0x0/0x280) from [\u003cc015c664\u003e] (dev_uevent+0xd4/0x10c)\n[   21.304199] [\u003cc015c590\u003e] (dev_uevent+0x0/0x10c) from [\u003cc0128440\u003e] (kobject_uevent_env+0x180/0x390)\n[   21.313170]  r5:00000000 r4:c78860ac\n[   21.316725] [\u003cc01282c0\u003e] (kobject_uevent_env+0x0/0x390) from [\u003cc0128664\u003e] (kobject_uevent+0x14/0x18)\n[   21.325850] [\u003cc0128650\u003e] (kobject_uevent+0x0/0x18) from [\u003cc01bdc34\u003e] (power_supply_changed_work+0x5c/0x70)\n[   21.335506] [\u003cc01bdbd8\u003e] (power_supply_changed_work+0x0/0x70) from [\u003cc004d290\u003e] (run_workqueue+0xbc/0x144)\n[   21.345167]  r4:c7812040\n[   21.347716] [\u003cc004d1d4\u003e] (run_workqueue+0x0/0x144) from [\u003cc004d94c\u003e] (worker_thread+0xa8/0xbc)\n[   21.356296]  r7:c7812040 r6:c7820b00 r5:c782ffa4 r4:c7812048\n[   21.361957] [\u003cc004d8a4\u003e] (worker_thread+0x0/0xbc) from [\u003cc0051008\u003e] (kthread+0x5c/0x94)\n[   21.369971]  r7:00000000 r6:c004d8a4 r5:c7812040 r4:c782e000\n[   21.375612] [\u003cc0050fac\u003e] (kthread+0x0/0x94) from [\u003cc00403d0\u003e] (do_exit+0x0/0x688)\n\nSigned-off-by: Daniel Mack \u003cdaniel@caiaq.de\u003e\nCc: Szabolcs Gyurko \u003cszabolcs.gyurko@tlt.hu\u003e\nAcked-by: Matt Reimer \u003cmreimer@vpop.net\u003e\nAcked-by: Anton Vorontsov \u003ccbou@mail.ru\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a3cfbb53b1764a3d1f58ddc032737ab9edaa7d41",
      "tree": "818ca39043749382a4b91d0310f532bf2fdc22ce",
      "parents": [
        "e5bc49ba7439b9726006d031d440cba96819f0f8"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Thu Mar 12 14:31:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:20:23 2009 -0700"
      },
      "message": "vfs: add missing unlock in sget()\n\nIn sget(), destroy_super(s) is called with s-\u003es_umount held, which makes\nlockdep unhappy.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e5bc49ba7439b9726006d031d440cba96819f0f8",
      "tree": "103c02a297e4c7ba3ba1fd3c90a6bd2d6687f511",
      "parents": [
        "8d0df7a3d1ecbaf5d5602a59055c8ca993855bed"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Mar 12 14:31:28 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 12 16:20:23 2009 -0700"
      },
      "message": "pipe_rdwr_fasync: fix the error handling to prevent the leak/crash\n\nIf the second fasync_helper() fails, pipe_rdwr_fasync() returns the error\nbut leaves the file on -\u003efasync_readers.\n\nThis was always wrong, but since 233e70f4228e78eb2f80dc6650f65d3ae3dbf17c\n\"saner FASYNC handling on file close\" we have the new problem.  Because in\nthis case setfl() doesn\u0027t set FASYNC bit, __fput() will not do\n-\u003efasync(0), and we leak fasync_struct with -\u003efa_file pointing to the\nfreed file.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Jonathan Corbet \u003ccorbet@lwn.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "8d0df7a3d1ecbaf5d5602a59055c8ca993855bed"
}
