)]}'
{
  "log": [
    {
      "commit": "dfc7064500061677720fa26352963c772d3ebe6b",
      "tree": "a8ca495bccf98837c6762ffba54a8009c9772259",
      "parents": [
        "90b08710e41a07d4ff0fb8940dcce3a552991a56"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 23 13:04:39 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:10 2008 -0700"
      },
      "message": "md: restart recovery cleanly after device failure.\n\nWhen we get any IO error during a recovery (rebuilding a spare), we abort\nthe recovery and restart it.\n\nFor RAID6 (and multi-drive RAID1) it may not be best to restart at the\nbeginning: when multiple failures can be tolerated, the recovery may be\nable to continue and re-doing all that has already been done doesn\u0027t make\nsense.\n\nWe already have the infrastructure to record where a recovery is up to\nand restart from there, but it is not being used properly.\nThis is because:\n  - We sometimes abort with MD_RECOVERY_ERR rather than just MD_RECOVERY_INTR,\n    which causes the recovery not be be checkpointed.\n  - We remove spares and then re-added them which loses important state\n    information.\n\nThe distinction between MD_RECOVERY_ERR and MD_RECOVERY_INTR really isn\u0027t\nneeded.  If there is an error, the relevant drive will be marked as\nFaulty, and that is enough to ensure correct handling of the error.  So we\nfirst remove MD_RECOVERY_ERR, changing some of the uses of it to\nMD_RECOVERY_INTR.\n\nThen we cause the attempt to remove a non-faulty device from an array to\nfail (unless recovery is impossible as the array is too degraded).  Then\nwhen remove_and_add_spares attempts to remove the devices on which\nrecovery can continue, it will fail, they will remain in place, and\nrecovery will continue on them as desired.\n\nIssue:  If we are halfway through rebuilding a spare and another drive\nfails, and a new spare is immediately available,  do we want to:\n 1/ complete the current rebuild, then go back and rebuild the new spare or\n 2/ restart the rebuild from the start and rebuild both devices in\n    parallel.\n\nBoth options can be argued for.  The code currently takes option 2 as\n  a/ this requires least code change\n  b/ this results in a minimally-degraded array in minimal time.\n\nCc: \"Eivind Sarto\" \u003civan@kasenna.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@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": "90b08710e41a07d4ff0fb8940dcce3a552991a56",
      "tree": "8e45d1c6d9b4020099fd36781065bf8b8fdb76e4",
      "parents": [
        "4f54b0e9485644a3c5fca2ae43bcbe7376825747"
      ],
      "author": {
        "name": "Bernd Schubert",
        "email": "bs@q-leap.de",
        "time": "Fri May 23 13:04:38 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:10 2008 -0700"
      },
      "message": "md: allow parallel resync of md-devices.\n\nIn some configurations, a raid6 resync can be limited by CPU speed\n(Calculating P and Q and moving data) rather than by device speed.  In\nthese cases there is nothing to be gained byt serialising resync of arrays\nthat share a device, and doing the resync in parallel can provide benefit.\n So add a sysfs tunable to flag an array as being allowed to resync in\nparallel with other arrays that use (a different part of) the same device.\n\nSigned-off-by: Bernd Schubert \u003cbs@q-leap.de\u003e\nSigned-off-by: Neil Brown \u003cneilb@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": "4f54b0e9485644a3c5fca2ae43bcbe7376825747",
      "tree": "10033228aa5efc868c25aed924b5a0d6b98ac090",
      "parents": [
        "09a44cc15079f80c1416cde1a1d5b2cdd8f2118a"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri May 23 13:04:37 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:10 2008 -0700"
      },
      "message": "md: notify userspace on \u0027stop\u0027 events\n\nThis additional notification to \u0027array_state\u0027 is needed to allow the\nmonitor application to learn about stop events via sysfs.  The\nsysfs_notify(\"sync_action\") call that comes at the end of do_md_stop()\n(via md_new_event) is insufficient since the \u0027sync_action\u0027 attribute has\nbeen removed by this point.\n\n(Seems like a sysfs-notify-on-removal patch is a better fix.  Currently\nremoval updates the event count but does not wake up waiters)\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@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": "09a44cc15079f80c1416cde1a1d5b2cdd8f2118a",
      "tree": "5a01eeb38627026ace5b8956fdddec08b414cf76",
      "parents": [
        "698b18c1e8bddf39cbf1ba50792b0fe302dbe6d6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 23 13:04:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:10 2008 -0700"
      },
      "message": "md: notify userspace on \u0027write-pending\u0027 changes to array_state\n\nWhen an array enters write pending, \u0027array_state\u0027 changes, so we must be\nsure to sysfs_notify.\n\nAlso, when waiting for user-space to acknowledge \u0027write-pending\u0027 by\nmarking the metadata as dirty, we don\u0027t want to wait for MD_CHANGE_DEVS to\nbe cleared as that might not happen.  So explicity test for the bits that\nwe are really interested in.\n\nSigned-off-by: Neil Brown \u003cneilb@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": "698b18c1e8bddf39cbf1ba50792b0fe302dbe6d6",
      "tree": "9a65cf296b2b37654e30a1f2f9f6f13468259345",
      "parents": [
        "6be9d4940134b36f9ed020aead36f831f19b49f1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 23 13:04:35 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:10 2008 -0700"
      },
      "message": "md: raid1: Fix restoration of bio between failed read and write.\n\nWhen performing a \"recovery\" or \"check\" pass on a RAID1 array, we read\nfrom each device and possible, if there is a difference or a read error,\nwrite back to some devices.\n\nWe use the same \u0027bio\u0027 for both read and write, resetting various fields\nbetween the two operations.\n\nWe forgot to reset bv_offset and bv_len however.  These are often left\nunchanged, but in the case where there is an IO error one or two sectors\ninto a page, they are changed.\n\nThis results in correctable errors not being corrected properly.  It does\nnot result in any data corruption.\n\nCc: \"Fairbanks, David\" \u003cDavid.Fairbanks@stratus.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@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": "6be9d4940134b36f9ed020aead36f831f19b49f1",
      "tree": "af74a03897cc8ee2ce4ae68a82a18f1d86d34f31",
      "parents": [
        "6bcfd601861cce45ca73ac1d714f1286b6b3f0d4"
      ],
      "author": {
        "name": "Bernd Schubert",
        "email": "bernd-schubert@gmx.de",
        "time": "Fri May 23 13:04:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:10 2008 -0700"
      },
      "message": "md: md: raid5 rate limit error printk\n\nLast night we had scsi problems and a hardware raid unit was offlined\nduring heavy i/o.  While this happened we got for about 3 minutes a huge\nnumber messages like these\n\nApr 12 03:36:07 pfs1n14 kernel: [197510.696595] raid5:md7: read error not correctable (sector 2993096568 on sdj2).\n\nI guess the high error rate is responsible for not scheduling other events\n- during this time the system was not pingable and in the end also other\ndevices run into scsi command timeouts causing problems on these unrelated\ndevices as well.\n\nSigned-off-by: Bernd Schubert \u003cbernd-schubert@gmx.de\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@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": "6bcfd601861cce45ca73ac1d714f1286b6b3f0d4",
      "tree": "175173d057e10dd006d6dbd033395977aff55dd9",
      "parents": [
        "03de250a269bfa8e6a9e6ccb4a1dbce19dae8a61"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri May 23 13:04:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:09 2008 -0700"
      },
      "message": "md: kill file_path wrapper\n\nKill the trivial and rather pointless file_path wrapper around d_path.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Neil Brown \u003cneilb@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": "84255d1018c50e72c71a49f359989597d53a3f53",
      "tree": "242c639d1e110f241e802e6b0a27a670deb8b174",
      "parents": [
        "80119ef5c8153e0a6cc5edf00c083dc98a9bd348"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 23 13:04:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:09 2008 -0700"
      },
      "message": "md: fix possible oops when removing a bitmap from an active array\n\nIt is possible to add a write-intent bitmap to an active array, or remove\nthe bitmap that is there.\n\nWhen we do with the \u0027quiesce\u0027 the array, which causes make_request to\nblock in \"wait_barrier()\".\n\nHowever we are sampling the value of \"mddev-\u003ebitmap\" before the\nwait_barrier call, and using it afterwards.  This can result in using a\nbitmap structure that has been freed.\n\nSigned-off-by: Neil Brown \u003cneilb@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": "e7e72bf641b1fc7b9df6f40bd2c36dfccd8d647c",
      "tree": "81b1db5434c9635bf23fb40415056e10390cd692",
      "parents": [
        "4920916f728fe3c51f54c25ab7b3d271254aab5a"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Wed May 14 16:05:54 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 14 19:11:15 2008 -0700"
      },
      "message": "Remove blkdev warning triggered by using md\n\nAs setting and clearing queue flags now requires that we hold a spinlock\non the queue, and as blk_queue_stack_limits is called without that lock,\nget the lock inside blk_queue_stack_limits.\n\nFor blk_queue_stack_limits to be able to find the right lock, each md\npersonality needs to set q-\u003equeue_lock to point to the appropriate lock.\nThose personalities which didn\u0027t previously use a spin_lock, us\nq-\u003e__queue_lock.  So always initialise that lock when allocated.\n\nWith this in place, setting/clearing of the QUEUE_FLAG_PLUGGED bit will no\nlonger cause warnings as it will be clear that the proper lock is held.\n\nThanks to Dan Williams for review and fixing the silly bugs.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: Dan Williams \u003cdan.j.williams@intel.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Alistair John Strachan \u003calistair@devzero.co.uk\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Jacek Luczak \u003cdifrost.kernel@gmail.com\u003e\nCc: Prakash Punnoor \u003cprakash@punnoor.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c8894419acf5e56851de9741c5047bebd78acd1f",
      "tree": "6294b87ebf31d577cd48880a201ff4b1a6a50ffc",
      "parents": [
        "3f275ea3086054205795972b8e87f2046fd3de98"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon May 12 14:02:12 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 13 08:02:24 2008 -0700"
      },
      "message": "md: fix raid5 \u0027repair\u0027 operations\n\ncommit bd2ab67030e9116f1e4aae1289220255412b37fd \"md: close a livelock window\nin handle_parity_checks5\" introduced a bug in handling \u0027repair\u0027 operations.\nAfter a repair operation completes we clear the state bits tracking this\noperation.  However, they are cleared too early and this results in the code\ndeciding to re-run the parity check operation.  Since we have done the repair\nin memory the second check does not find a mismatch and thus does not do a\nwriteback.\n\nTest results:\n$ echo repair \u003e /sys/block/md0/md/sync_action\n$ cat /sys/block/md0/md/mismatch_cnt\n51072\n$ echo repair \u003e /sys/block/md0/md/sync_action\n$ cat /sys/block/md0/md/mismatch_cnt\n0\n\n(also fix incorrect indentation)\n\nCc: \u003cstable@kernel.org\u003e\nTested-by: George Spelvin \u003clinux@horizon.com\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cb6969e8cdef39e613b1755eff595f830b89bc82",
      "tree": "bc3c9f88b85c1f62a07da422033c37c6d3195fa6",
      "parents": [
        "8594303a7abc1a117b1d91412ce9b3d77ed35d02"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Tue May 06 20:42:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 08 10:46:55 2008 -0700"
      },
      "message": "misc: fix integer as NULL pointer warnings\n\ndrivers/md/raid10.c:889:17: warning: Using plain integer as NULL pointer\ndrivers/media/video/cx18/cx18-driver.c:616:12: warning: Using plain integer as NULL pointer\nsound/oss/kahlua.c:70:12: warning: Using plain integer as NULL pointer\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Mauro Carvalho Chehab \u003cmchehab@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": "6bfe0b499082fd3950429017cd8ebf2a6c458aa5",
      "tree": "81476cf7f7ddbea135bdb93729e0bffae0e7c163",
      "parents": [
        "11e2ede0228ee0f81ccacd15894908c3bf241f73"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Apr 30 00:52:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:33 2008 -0700"
      },
      "message": "md: support blocking writes to an array on device failure\n\nAllows a userspace metadata handler to take action upon detecting a device\nfailure.\n\nBased on an original patch by Neil Brown.\n\nChanges:\n-added blocked_wait waitqueue to rdev\n-don\u0027t qualify Blocked with Faulty always let userspace block writes\n-added md_wait_for_blocked_rdev to wait for the block device to be clear, if\n userspace misses the notification another one is sent every 5 seconds\n-set MD_RECOVERY_NEEDED after clearing \"blocked\"\n-kill DoBlock flag, just test mddev-\u003eexternal\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@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": "11e2ede0228ee0f81ccacd15894908c3bf241f73",
      "tree": "78bf7c8e2762d5dc07f2b9acb92ef5804ac40f38",
      "parents": [
        "242b363e2207d14125f52a6701cfda7376a2a2fc"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Apr 30 00:52:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:33 2008 -0700"
      },
      "message": "md: prevent duplicates in bind_rdev_to_array\n\nFound when trying to reassemble an active externally managed array.  Without\nthis check we hit the more noisy \"sysfs duplicate\" warning in the later call\nto kobject_add.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@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": "242b363e2207d14125f52a6701cfda7376a2a2fc",
      "tree": "1ae3f6c59f01f22bde668799674d57a0daacc50b",
      "parents": [
        "648b629ed406233b0a607a3cf29d8a169876131f"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Apr 30 00:52:31 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:33 2008 -0700"
      },
      "message": "md: remove a stray command from a copy and paste error in resync_start_store\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@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": "648b629ed406233b0a607a3cf29d8a169876131f",
      "tree": "4faf3a965c6f369608b5187a3ecdd25e00264d63",
      "parents": [
        "31a59e3425d32743738e043c1df1668e0f22bbab"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 30 00:52:30 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:32 2008 -0700"
      },
      "message": "md: fix up switching md arrays between read-only and read-write\n\nWhen setting an array to \u0027readonly\u0027 or to \u0027active\u0027 via sysfs, we must make the\nappropriate set_disk_ro call too.\n\nAlso when switching to \"read_auto\" (which is like readonly, but blocks on the\nfirst write so that metadata can be marked \u0027dirty\u0027) we need to be more careful\nabout what state we are changing from.\n\nSigned-off-by: Neil Brown \u003cneilb@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": "31a59e3425d32743738e043c1df1668e0f22bbab",
      "tree": "0329549fd16aeedb767511e6a58df3ed84f463c7",
      "parents": [
        "d897dbf91490f26dccef3d7056ffd09eb83a15a5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 30 00:52:30 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:32 2008 -0700"
      },
      "message": "md: fix \u0027safemode\u0027 handling for external metadata.\n\n\u0027safemode\u0027 relates to marking an array as \u0027clean\u0027 if there has been no write\ntraffic for a while (a couple of seconds), to reduce the chance of the array\nbeing found dirty on reboot.\n\n-\u003esafemode is set to \u00271\u0027 when there have been no write for a while, and it\ngets set to \u00270\u0027 when the superblock is updates with the \u0027clean\u0027 flag set.\n\nThis requires a few fixes for \u0027external\u0027 metadata:\n - When an array is set to \u0027clean\u0027 via sysfs, \u0027safemode\u0027 must be cleared.\n - when we write to an array that has \u0027safemode\u0027 set (there must have been\n        some delay in updating the metadata), we need to clear safemode.\n - Don\u0027t try to update external metadata in md_check_recovery for safemode\n        transitions - it won\u0027t work.\n\nAlso, don\u0027t try to support \"immediate safe mode\" (safemode\u003d\u003d2) for external\nmetadata, it cannot really work (the safemode timeout can be set very low if\nthis is really needed).\n\nSigned-off-by: Neil Brown \u003cneilb@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": "d897dbf91490f26dccef3d7056ffd09eb83a15a5",
      "tree": "c9e812bf24f39a497d197f516cf3023482403d19",
      "parents": [
        "8377bc808029251c2c0f52116cf87d80291b25bf"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 30 00:52:29 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:32 2008 -0700"
      },
      "message": "md: reinitialise more mddev fields in do_md_stop.\n\nI keep finding problems where an mddev gets reused and some fields has a value\nfrom a previous usage that confuses the new usage.  So clear all fields that\ncould possible need clearing when calling do_md_stop.\n\nAlso initialise the \u0027level\u0027 of a new array to LEVEL_NONE (which isn\u0027t 0).\n\nSigned-off-by: Neil Brown \u003cneilb@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": "8377bc808029251c2c0f52116cf87d80291b25bf",
      "tree": "4cf50fc32d81a6c5f6f98a0503cc05ea924b58eb",
      "parents": [
        "6a51830e14529063cb2685921e1177d9af50e49a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 30 00:52:28 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:32 2008 -0700"
      },
      "message": "md: skip all metadata update processing when using external metadata.\n\nAll the metadata update processing for external metadata is on in user-space\nor through the sysfs interfaces, so make \"md_update_sb\" a no-op in that case.\n\nSigned-off-by: Neil Brown \u003cneilb@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": "6a51830e14529063cb2685921e1177d9af50e49a",
      "tree": "d10f96946d36928e8b4cd021be67072321eb4943",
      "parents": [
        "7f1133cbf20bc308d73ba49f971180924e12119b"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Apr 30 00:52:28 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:32 2008 -0700"
      },
      "message": "md: fix use after free when removing rdev via sysfs\n\nrdev-\u003emddev is no longer valid upon return from entry-\u003estore() when the\n\u0027remove\u0027 command is given.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@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": "c9a3f6d6f541915bd7451fc7e9cb23a8b33a3ab8",
      "tree": "3d6d54e43b4bd7d5409bc47837e72b45788da1d4",
      "parents": [
        "a217656cb26c5b7ebe9900354b2e808c1f74b470"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 29 19:12:35 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 10:21:12 2008 -0700"
      },
      "message": "dm: use unlocked variants of queue flag check/set\n\ndm.c already provides mutual exclusion through -\u003emap_lock.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bd5d435a96837c3495e62eef37cbe4cb728b79ae",
      "tree": "82aacaf5a1d220910c4b0a1088d7d2482c0d9ee0",
      "parents": [
        "fee4b19fb3f28d17c0b9f9ea0668db5275697178",
        "ac9fafa1243640349aa481adf473db283a695766"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:18:03 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:18:03 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block:\n  block: Skip I/O merges when disabled\n  block: add large command support\n  block: replace sizeof(rq-\u003ecmd) with BLK_MAX_CDB\n  ide: use blk_rq_init() to initialize the request\n  block: use blk_rq_init() to initialize the request\n  block: rename and export rq_init()\n  block: no need to initialize rq-\u003ecmd with blk_get_request\n  block: no need to initialize rq-\u003ecmd in prepare_flush_fn hook\n  block/blk-barrier.c:blk_ordered_cur_seq() mustn\u0027t be inline\n  block/elevator.c:elv_rq_merge_ok() mustn\u0027t be inline\n  block: make queue flags non-atomic\n  block: add dma alignment and padding support to blk_rq_map_kern\n  unexport blk_max_pfn\n  ps3disk: Remove superfluous cast\n  block: make rq_init() do a full memset()\n  relay: fix splice problem\n"
    },
    {
      "commit": "c7705f3449c7edd5c1744871097f93977227afc4",
      "tree": "d2f121a4b1ae3ae458db76ec0210ea2172c31e5a",
      "parents": [
        "1b50221738108c438d5f25c7a043fb89e9e27044"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Tue Apr 29 01:02:35 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:22 2008 -0700"
      },
      "message": "drivers: use non-racy method for proc entries creation (2)\n\nUse proc_create()/proc_create_data() to make sure that -\u003eproc_fops and -\u003edata\nbe setup before gluing PDE to main tree.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Peter Osterlund \u003cpetero2@telia.com\u003e\nCc: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\nCc: Dmitry Torokhov \u003cdtor@mail.ru\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Mauro Carvalho Chehab \u003cmchehab@infradead.org\u003e\nCc: Bjorn Helgaas \u003cbjorn.helgaas@hp.com\u003e\nCc: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "992b5bceee447a32ef2d617730ae0d03c063eedd",
      "tree": "cf8a457afc939b9d6040b809382e8a45adc9eee1",
      "parents": [
        "4917fa292558593d36b2880977ea206f7727dbe5"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Tue Apr 29 09:54:36 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 29 14:48:55 2008 +0200"
      },
      "message": "block: no need to initialize rq-\u003ecmd with blk_get_request\n\nblk_get_request initializes rq-\u003ecmd (rq_init does) so the users don\u0027t\nneed to do that.\n\nThe purpose of this patch is to remove sizeof(rq-\u003ecmd) and \u0026rq-\u003ecmd,\nas a preparation for large command support, which changes rq-\u003ecmd from\nthe static array to a pointer. sizeof(rq-\u003ecmd) will not make sense and\n\u0026rq-\u003ecmd won\u0027t work.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "75ad23bc0fcb4f992a5d06982bf0857ab1738e9e",
      "tree": "8668ef63b1f420252ae41aed9e13737d49fd8054",
      "parents": [
        "68154e90c9d1492d570671ae181d9a8f8530da55"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Apr 29 14:48:33 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Apr 29 14:48:33 2008 +0200"
      },
      "message": "block: make queue flags non-atomic\n\nWe can save some atomic ops in the IO path, if we clearly define\nthe rules of how to modify the queue flags.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "62b0559aad5cba060568cb962e4bbb111ec73a14",
      "tree": "01a04c2011ae0cfaf37b55dcd53383bb99d30972",
      "parents": [
        "d7a420c9472a95c46600a0345434b7b166e0b9c7"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Mon Apr 28 02:15:56 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:42 2008 -0700"
      },
      "message": "drivers/md: use time_before, time_before_eq, etc\n\nThe functions time_before, time_before_eq, time_after, and time_after_eq\nare more robust for comparing jiffies against other values.\n\nA simplified version of the semantic patch making this change is as follows:\n(http://www.emn.fr/x-info/coccinelle/)\n\n// \u003csmpl\u003e\n@ change_compare_np @\nexpression E;\n@@\n\n(\n- jiffies \u003c\u003d E\n+ time_before_eq(jiffies,E)\n|\n- jiffies \u003e\u003d E\n+ time_after_eq(jiffies,E)\n|\n- jiffies \u003c E\n+ time_before(jiffies,E)\n|\n- jiffies \u003e E\n+ time_after(jiffies,E)\n)\n\n@ include depends on change_compare_np @\n@@\n\n#include \u003clinux/jiffies.h\u003e\n\n@ no_include depends on !include \u0026\u0026 change_compare_np @\n@@\n\n  #include \u003clinux/...\u003e\n+ #include \u003clinux/jiffies.h\u003e\n// \u003c/smpl\u003e\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Neil Brown \u003cneilb@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": "d7a420c9472a95c46600a0345434b7b166e0b9c7",
      "tree": "b95005ce8ab92efdb5cd04b3d85c3b01a0455ebc",
      "parents": [
        "4ef197d87ad7d4bb326de3e9b8ecbb26f9e86253"
      ],
      "author": {
        "name": "Nick Andrew",
        "email": "nick@nick-andrew.net",
        "time": "Mon Apr 28 02:15:55 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:42 2008 -0700"
      },
      "message": "raid: remove leading TAB on printk messages\n\nMD drivers use one printk() call to print 2 log messages and the second line\nmay be prefixed by a TAB character.  It may also output a trailing space\nbefore newline.  klogd (I think) turns the TAB character into the 2 characters\n\u0027^I\u0027 when logging to a file.  This looks ugly.\n\nInstead of a leading TAB to indicate continuation, prefix both output lines\nwith \u0027raid:\u0027 or similar.  Also remove any trailing space in the vicinity of\nthe affected code and consistently end the sentences with a period.\n\nSigned-off-by: Nick Andrew \u003cnick@nick-andrew.net\u003e\nCc: Neil Brown \u003cneilb@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": "4ef197d87ad7d4bb326de3e9b8ecbb26f9e86253",
      "tree": "f6bc4fde8c1955d9b8d6669fcc08e15e3cd6fa7e",
      "parents": [
        "8b3e6cdc53b7f29f7026955d6cb6902a49322a15"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Apr 28 02:15:54 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:42 2008 -0700"
      },
      "message": "md: raid5.c convert simple_strtoul to strict_strtoul\n\nstrict_strtoul handles the open-coded sanity checks in\nraid5_store_stripe_cache_size and raid5_store_preread_threshold\n\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8b3e6cdc53b7f29f7026955d6cb6902a49322a15",
      "tree": "69d9f22a526e687fe2892d327caa3fa6ddd65cf6",
      "parents": [
        "e46b272b6608783ed7aa7b0594871550ce20b849"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Apr 28 02:15:53 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:42 2008 -0700"
      },
      "message": "md: introduce get_priority_stripe() to improve raid456 write performance\n\nImprove write performance by preventing the delayed_list from dumping all its\nstripes onto the handle_list in one shot.  Delayed stripes are now further\ndelayed by being held on the \u0027hold_list\u0027.  The \u0027hold_list\u0027 is bypassed when:\n\n  * a STRIPE_IO_STARTED stripe is found at the head of \u0027handle_list\u0027\n  * \u0027handle_list\u0027 is empty and i/o is being done to satisfy full stripe-width\n    write requests\n  * \u0027bypass_count\u0027 is less than \u0027bypass_threshold\u0027.  By default the threshold\n    is 1, i.e. every other stripe handled is a preread stripe provided the\n    top two conditions are false.\n\nBenchmark data:\nSystem: 2x Xeon 5150, 4x SATA, mem\u003d1GB\nBaseline: 2.6.24-rc7\nConfiguration: mdadm --create /dev/md0 /dev/sd[b-e] -n 4 -l 5 --assume-clean\nTest1: dd if\u003d/dev/zero of\u003d/dev/md0 bs\u003d1024k count\u003d2048\n  * patched:  +33% (stripe_cache_size \u003d 256), +25% (stripe_cache_size \u003d 512)\n\nTest2: tiobench --size 2048 --numruns 5 --block 4096 --block 131072 (XFS)\n  * patched: +13%\n  * patched + preread_bypass_threshold \u003d 0: +37%\n\nChanges since v1:\n* reduce bypass_threshold from (chunk_size / sectors_per_chunk) to (1) and\n  make it configurable.  This defaults to fairness and modest performance\n  gains out of the box.\nChanges since v2:\n* [neilb@suse.de]: kill STRIPE_PRIO_HI and preread_needed as they are not\n  necessary, the important change was clearing STRIPE_DELAYED in\n  add_stripe_bio and this has been moved out to make_request for the hang\n  fix.\n* [neilb@suse.de]: simplify get_priority_stripe\n* [dan.j.williams@intel.com]: reset the bypass_count when -\u003ehold_list is\n  sampled empty (+11%)\n* [dan.j.williams@intel.com]: decrement the bypass_count at the detection\n  of stripes being naturally promoted off of hold_list +2%.  Note, resetting\n  bypass_count instead of decrementing on these events yields +4% but that is\n  probably too aggressive.\nChanges since v3:\n* cosmetic fixups\n\nTested-by: James W. Laferriere \u003cbabydr@baby-dragons.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@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": "e46b272b6608783ed7aa7b0594871550ce20b849",
      "tree": "a65834f60bee7e77f9669a7ff7e95a1ec3cd74ee",
      "parents": [
        "9a7b2b0f36c40beeb252cb5ceff36bb295e88d97"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Mon Apr 28 02:15:50 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:42 2008 -0700"
      },
      "message": "md: replace remaining __FUNCTION__ occurrences\n\n__FUNCTION__ is gcc-specific, use __func__\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Neil Brown \u003cneilb@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": "9a7b2b0f36c40beeb252cb5ceff36bb295e88d97",
      "tree": "2a9623989c9f32eac319e1220499e596f9b0fa19",
      "parents": [
        "5ae121705bed9ea7425daef4d7d29038f7312f3f"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Mon Apr 28 02:15:49 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:42 2008 -0700"
      },
      "message": "md: fix integer as NULL pointer warnings in md.c\n\ndrivers/md/md.c:734:16: warning: Using plain integer as NULL pointer\ndrivers/md/md.c:1115:16: warning: Using plain integer as NULL pointer\n\nAdd some braces to match the else-block as well.\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Neil Brown \u003cneilb@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": "cf13ab8e02d452e2236d0b5fda9972b3b7f503cb",
      "tree": "135509aa2852deebba7b4a81cdafc2a2ee2e358f",
      "parents": [
        "4fdfe401e9d7e30029972d568c667234c0c1d828"
      ],
      "author": {
        "name": "Frederik Deweerdt",
        "email": "frederik.deweerdt@gmail.com",
        "time": "Thu Apr 24 22:10:59 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:27:02 2008 +0100"
      },
      "message": "dm: remove md argument from specific_minor\n\nThe small patch below:\n- Removes the unused md argument from both specific_minor() and next_free_minor()\n- Folds kmalloc + memset(0) into a single kzalloc call in alloc_dev()\n\nThis has been compile tested on x86.\n\nSigned-off-by: Frederik Deweerdt \u003cfrederik.deweerdt@gmail.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4fdfe401e9d7e30029972d568c667234c0c1d828",
      "tree": "e9e8f45ceccda2e73008da8f404302b056a059b3",
      "parents": [
        "e8488d08586e6df7fab3db7881631bb13619311b"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Thu Apr 24 22:10:56 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:27:00 2008 +0100"
      },
      "message": "dm table: remove unused dm_create_error_table\n\ndm_create_error_table() was added in kernel 2.6.18 and never used...\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "e8488d08586e6df7fab3db7881631bb13619311b",
      "tree": "9fdd6451287c1eb0396f5ea43ca638f905f50e70",
      "parents": [
        "7ff14a36159d947872870e7a3e9dcaebc46b23eb"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Thu Apr 24 22:10:51 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:59 2008 +0100"
      },
      "message": "dm table: drop void suspend_targets return\n\nvoid returning functions returned the return value of another void\nreturning function...\n\nSpotted by sparse.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7ff14a36159d947872870e7a3e9dcaebc46b23eb",
      "tree": "69544b7f29f2ffc392951f9e9c23f566e3cc41f7",
      "parents": [
        "a2aebe03be60ae4da03507a00d60211d5e0327c3"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Apr 24 22:10:47 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:57 2008 +0100"
      },
      "message": "dm: unplug queues in threads\n\nRemove an avoidable 3ms delay on some dm-raid1 and kcopyd I/O.\n\nIt is specified that any submitted bio without BIO_RW_SYNC flag may plug the\nqueue (i.e. block the requests from being dispatched to the physical device).\n\nThe queue is unplugged when the caller calls blk_unplug() function. Usually, the\nsequence is that someone calls submit_bh to submit IO on a buffer. The IO plugs\nthe queue and waits (to be possibly joined with other adjacent bios). Then, when\nthe caller calls wait_on_buffer(), it unplugs the queue and submits the IOs to\nthe disk.\n\nThis was happenning:\n\nWhen doing O_SYNC writes, function fsync_buffers_list() submits a list of\nbios to dm_raid1, the bios are added to dm_raid1 write queue and kmirrord is\nwoken up.\n\nfsync_buffers_list() calls wait_on_buffer().  That unplugs the queue, but\nthere are no bios on the device queue as they are still in the dm_raid1 queue.\n\nwait_on_buffer() starts waiting until the IO is finished.\n\nkmirrord is scheduled, kmirrord takes bios and submits them to the devices.\n\nThe submitted bio plugs the harddisk queue but there is no one to unplug it.\n(The process that called wait_on_buffer() is already sleeping.)\n\nSo there is a 3ms timeout, after which the queues on the harddisks are\nunplugged and requests are processed.\n\nThis 3ms timeout meant that in certain workloads (e.g. O_SYNC, 8kb writes),\ndm-raid1 is 10 times slower than md raid1.\n\nEvery time we submit something asynchronously via dm_io, we must unplug the\nqueue actually to send the request to the device.\n\nThis patch adds an unplug call to kmirrord - while processing requests, it keeps\nthe queue plugged (so that adjacent bios can be merged); when it finishes\nprocessing all the bios, it unplugs the queue to submit the bios.\n\nIt also fixes kcopyd which has the same potential problem. All kcopyd requests\nare submitted with BIO_RW_SYNC.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a2aebe03be60ae4da03507a00d60211d5e0327c3",
      "tree": "9475bf530b36f3f4a26c8307d94b3c53787d9ef2",
      "parents": [
        "a765e20eeb423d0fa6a02ffab51141e53bbd93cb"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Apr 24 22:10:42 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:56 2008 +0100"
      },
      "message": "dm raid1: use timer\n\nThis patch replaces the schedule() in the main kmirrord thread with a timer.\nThe schedule() could introduce an unwanted delay when work is ready to be\nprocessed.\n\nThe code instead calls wake() when there\u0027s work to be done immediately, and\ndelayed_wake() after a failure to give a short delay before retrying.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a765e20eeb423d0fa6a02ffab51141e53bbd93cb",
      "tree": "fc7279fa73a21518373e1ba2efad27dab89a2214",
      "parents": [
        "2d1e580afe23287871529ce54429e249809525a1"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 24 22:02:01 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:55 2008 +0100"
      },
      "message": "dm: move include files\n\nPublish the dm-io, dm-log and dm-kcopyd headers in include/linux.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "2d1e580afe23287871529ce54429e249809525a1",
      "tree": "82a0e8b442308c9b9bcf8f8d59c405950dd827d5",
      "parents": [
        "0da336e5fab75c712ba8c67f3135d5a20528465f"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 24 21:55:00 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:54 2008 +0100"
      },
      "message": "dm kcopyd: rename\n\nRename kcopyd.[ch] to dm-kcopyd.[ch].\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0da336e5fab75c712ba8c67f3135d5a20528465f",
      "tree": "8907bfc6db07ba73979df23d99424984aa02d3d7",
      "parents": [
        "945fa4d283a3a472186c11028f6fea1e77a91d14"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 24 21:43:52 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:53 2008 +0100"
      },
      "message": "dm: expose macros\n\nMake dm.h macros and inlines available in include/linux/device-mapper.h\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "945fa4d283a3a472186c11028f6fea1e77a91d14",
      "tree": "99af5b3623665680417a61a43f5effcfbeba903b",
      "parents": [
        "08d8757a4d52d21d825b9170af36f2696d1da1a8"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Apr 24 21:43:49 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:52 2008 +0100"
      },
      "message": "dm kcopyd: remove redundant client counting\n\nRemove client counting code that is no longer needed.\n\nInitialization and destruction is made globally from dm_init and dm_exit and is\nnot based on client counts. Initialization allocates only one empty slab cache,\nso there is no negative impact from performing the initialization always,\nregardless of whether some client uses kcopyd or not.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "08d8757a4d52d21d825b9170af36f2696d1da1a8",
      "tree": "fd3e2b5620f3e8dca28464d2d0ade39c60d543c9",
      "parents": [
        "8c0cbc2f79bb222d21b466422fde71fcc9bd37e3"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Apr 24 21:43:46 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:50 2008 +0100"
      },
      "message": "dm kcopyd: private mempool\n\nChange the global mempool in kcopyd into a per-device mempool to avoid\ndeadlock possibilities.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "8c0cbc2f79bb222d21b466422fde71fcc9bd37e3",
      "tree": "392d54c0fb5cc92300ef2b93237fb5accca9ead4",
      "parents": [
        "2a23aa1ddb1f0c9eef2c929c89565c387f6bf68b"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Apr 24 21:43:44 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:49 2008 +0100"
      },
      "message": "dm kcopyd: per device\n\nMake one kcopyd thread per device.\n\nThe original shared kcopyd could deadlock.\n\nConfiguration:\n"
    },
    {
      "commit": "2a23aa1ddb1f0c9eef2c929c89565c387f6bf68b",
      "tree": "dc029b4230dc1282363a16d8a9d9126f1c9d7ffe",
      "parents": [
        "b8206bc3de0b0665d47655d270c18ea46aff5372"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Apr 24 21:43:41 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:48 2008 +0100"
      },
      "message": "dm log: make module use tracking internal\n\nRemove internal module reference fields from the interface.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b8206bc3de0b0665d47655d270c18ea46aff5372",
      "tree": "ae52f89c65b36f12887015104a37c4178303e889",
      "parents": [
        "416cd17b1982217bca3dc41b9f00b0b38fdaadad"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 24 21:43:38 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:47 2008 +0100"
      },
      "message": "dm log: move register functions\n\nReorder a couple of functions in the file so the next patch is readable.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "416cd17b1982217bca3dc41b9f00b0b38fdaadad",
      "tree": "dcb73db9876f5b973ad26b47449083b98efad1b6",
      "parents": [
        "eb69aca5d3370b81450d68edeebc2bb9a3eb9689"
      ],
      "author": {
        "name": "Heinz Mauelshagen",
        "email": "hjm@redhat.com",
        "time": "Thu Apr 24 21:43:35 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:46 2008 +0100"
      },
      "message": "dm log: clean interface\n\nClean up the dm-log interface to prepare for publishing it in include/linux.\n\nSigned-off-by: Heinz Mauelshagen \u003chjm@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "eb69aca5d3370b81450d68edeebc2bb9a3eb9689",
      "tree": "ddb4c6d52e963b0898a892aaaee3228680e36449",
      "parents": [
        "22a1ceb1e6a7fbce95a1531ff10bb4fb036d4a37"
      ],
      "author": {
        "name": "Heinz Mauelshagen",
        "email": "hjm@redhat.com",
        "time": "Thu Apr 24 21:43:19 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:44 2008 +0100"
      },
      "message": "dm kcopyd: clean interface\n\nClean up the kcopyd interface to prepare for publishing it in include/linux.\n\nSigned-off-by: Heinz Mauelshagen \u003chjm@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "22a1ceb1e6a7fbce95a1531ff10bb4fb036d4a37",
      "tree": "5b6ebebc747a0027626684a153b418a26119d074",
      "parents": [
        "e01fd7eeb00f8078103f4ed3e8ef64474c11f300"
      ],
      "author": {
        "name": "Heinz Mauelshagen",
        "email": "hjm@redhat.com",
        "time": "Thu Apr 24 21:43:17 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:43 2008 +0100"
      },
      "message": "dm io: clean interface\n\nClean up the dm-io interface to prepare for publishing it in include/linux.\n\nSigned-off-by: Heinz Mauelshagen \u003chjm@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "e01fd7eeb00f8078103f4ed3e8ef64474c11f300",
      "tree": "c1de000bb5a45d4b52ec1dc6231abe974743eea9",
      "parents": [
        "72727bad544b4ce0a3f7853bfd7ae939f398007d"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Apr 24 21:43:14 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:41 2008 +0100"
      },
      "message": "dm io: rename error to error_bits\n\nRename \u0027error\u0027 to \u0027error_bits\u0027 for clarity.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "72727bad544b4ce0a3f7853bfd7ae939f398007d",
      "tree": "97961bf4031c9fa1739f545e6030e8ab6cbf0ecc",
      "parents": [
        "769aef30f0f505c44bbe9fcd2c911a052a386139"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Apr 24 21:43:11 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:40 2008 +0100"
      },
      "message": "dm snapshot: store pointer to target instance\n\nSave pointer to dm_target in dm_snapshot structure.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "769aef30f0f505c44bbe9fcd2c911a052a386139",
      "tree": "8c9d8da4d1f173935d54398b1daf52df316fc3ca",
      "parents": [
        "b7fd54a70f99061721e604d72d940541e5b2b168"
      ],
      "author": {
        "name": "Heinz Mauelshagen",
        "email": "hjm@redhat.com",
        "time": "Thu Apr 24 21:43:09 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:39 2008 +0100"
      },
      "message": "dm log: move dirty region log code into separate module\n\nMove the dirty region log code into a separate module so\nother targets can share the code.\n\nSigned-off-by: Heinz Mauelshagen \u003chjm@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b7fd54a70f99061721e604d72d940541e5b2b168",
      "tree": "177d9dfc5b0f2b9f79bf6708b41d904173712df4",
      "parents": [
        "c12bfc923ee02de5611730ddec087c11b3947038"
      ],
      "author": {
        "name": "Heinz Mauelshagen",
        "email": "hjm@redhat.com",
        "time": "Thu Apr 24 21:43:06 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:38 2008 +0100"
      },
      "message": "dm log: generalise name in messages\n\nChange dm-log.c messages from \"mirror log\" to \"dirty region log\" as\na new dm target wants to share this code.\n\nSigned-off-by: Heinz Mauelshagen \u003chjm@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c12bfc923ee02de5611730ddec087c11b3947038",
      "tree": "0b90122bfeaefc1acd78f4d968c29e03cf322ce9",
      "parents": [
        "8ee2767a5903fde549fd3597690f64c8d951051a"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@crashcourse.ca",
        "time": "Thu Apr 24 21:42:44 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:36 2008 +0100"
      },
      "message": "dm raid1: use list_split_init\n\nUse shorter list_splice_init() for brevity.\n\nSigned-off-by: Robert P. J. Day \u003crpjday@crashcourse.ca\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "8ee2767a5903fde549fd3597690f64c8d951051a",
      "tree": "d419a324e1da7323113e8b6e0063ba94ab70fa70",
      "parents": [
        "924362629bf5645aee5f49f8a0d0d5b193e65997"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Thu Apr 24 21:42:36 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:35 2008 +0100"
      },
      "message": "dm snapshot: reduce default memory allocation\n\nLimit the amount of memory allocated per snapshot on systems\nwith a large page size.  (The larger default chunk size on\nthese systems compensates for the smaller number of pages reserved.)\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "924362629bf5645aee5f49f8a0d0d5b193e65997",
      "tree": "8233d321e025c0fa057ad4067ab6f4e865d74fe0",
      "parents": [
        "b69d3987f4360a5e7e9e55465b3cdd0cc204b79e"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Apr 24 21:41:50 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Apr 25 13:26:34 2008 +0100"
      },
      "message": "dm snapshot: fix chunksize sector conversion\n\nIf a snapshot has a smaller chunksize than the page size the\nconversion to pages currently returns 0 instead of 1, causing:\nkernel BUG in mempool_resize.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "fdefa4d87e2f07ffe5888a7c2ed87dd12f9cfe37",
      "tree": "ae6680b701ee0b24aa917f491e6229938077029b",
      "parents": [
        "8a5703f846e2363fc466aff3f53608340a1ae33f"
      ],
      "author": {
        "name": "Nick Andrew",
        "email": "nick@nick-andrew.net",
        "time": "Mon Apr 21 22:42:58 2008 +0000"
      },
      "committer": {
        "name": "Jesper Juhl",
        "email": "juhl@hera.kernel.org",
        "time": "Mon Apr 21 22:42:58 2008 +0000"
      },
      "message": "RAID: remove trailing space from printk line\n\ndrivers/md/*.[ch] contains only one more printk line with a trailing space.\nRemove it.\n\nSigned-off-by: Nick Andrew \u003cnick@nick-andrew.net\u003e\nSigned-off-by: Jesper Juhl \u003cjesper.juhl@gmail.com\u003e\n"
    },
    {
      "commit": "bd2ab67030e9116f1e4aae1289220255412b37fd",
      "tree": "da52cf8952a660f17ce45c8c510ded9a3487180a",
      "parents": [
        "231bc2a222411f43bfb0fbb6d64c0f34c7b1039f"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Thu Apr 10 21:29:27 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 11 08:06:44 2008 -0700"
      },
      "message": "md: close a livelock window in handle_parity_checks5\n\nIf a failure is detected after a parity check operation has been initiated,\nbut before it completes handle_parity_checks5 will never quiesce operations on\nthe stripe.\n\nExplicitly handle this case by \"canceling\" the parity check, i.e.  clear the\nSTRIPE_OP_CHECK flags and queue the stripe on the handle list again to refresh\nany non-uptodate blocks.\n\nKernel versions \u003e\u003d 2.6.23 are susceptible.\n\nCc: \u003cstable@kernel.org\u003e\nCc: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4cdc1d1fa5c5ac14dc21be19832f02fd0b83867e",
      "tree": "a8c93c90dd088b18b9307bb50413478dbc48f5b5",
      "parents": [
        "d250dad64a154a9f95ec3574e2ffc97d9f61a19c"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Mar 28 14:16:10 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 28 14:45:23 2008 -0700"
      },
      "message": "dm io: write error bits form long not int\n\nwrite_err is an unsigned long used with set_bit() so should not be passed\naround as unsigned int.\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d10271\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.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": "3f1e9070f63b0eecadfa059959bf7c9dbe835962",
      "tree": "1d47de4bdae1009b6efc80824ca882de0a97cfef",
      "parents": [
        "ab473a52500528a276920a26cb35b722a868ab6e"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Mar 28 14:16:07 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 28 14:45:22 2008 -0700"
      },
      "message": "dm crypt: fix ctx pending\n\nFix regression in dm-crypt introduced in commit\n3a7f6c990ad04e6f576a159876c602d14d6f7fef (\"dm crypt: use async crypto\").\n\nIf write requests need to be split into pieces, the code must not process them\nin parallel because the crypto context cannot be shared.  So there can be\nparallel crypto operations on one part of the write, but only one write bio\ncan be processed at a time.\n\nThis is not optimal and the workqueue code needs to be optimized for parallel\nprocessing, but for now it solves the problem without affecting the\nperformance of synchronous crypto operation (most of current dm-crypt users).\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d10242\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d10207\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9ea85ebae1e05100cdb4807db4f265b0ede7aad8",
      "tree": "c12e7a0a7339291f0dcf3deff6dcabf40c00e29f",
      "parents": [
        "8195096bf2e3756264561d7a47d547bafd4e9100"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed Mar 19 17:01:05 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 19 18:53:37 2008 -0700"
      },
      "message": "drivers/md/raid5.c: fix printk warnings\n\ngcc-3.4.5 on sparc64:\n\ndrivers/md/raid5.c: In function `raid5_end_read_request\u0027:\ndrivers/md/raid5.c:1147: warning: long long unsigned int format, long unsigned int arg (arg 4)\ndrivers/md/raid5.c:1164: warning: long long unsigned int format, long unsigned int arg (arg 3)\ndrivers/md/raid5.c:1170: warning: long long unsigned int format, long unsigned int arg (arg 3)\n\nsector_t is u64, and we don\u0027t know what type the architecture uses to\nimplement u64 (on some it is unsigned long).\n\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0e82989d95cc46cc58622381eafa54f7428ee679",
      "tree": "bbf94838940302b2e4683c224cd5c6d176b658ff",
      "parents": [
        "43d8eac44f28d384d2377dcdd1407f51f79dda55"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Mar 19 17:00:44 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 19 18:53:35 2008 -0700"
      },
      "message": "md: remove the \u0027super\u0027 sysfs attribute from devices in an \u0027md\u0027 array\n\nExposing the binary blob which is the md \u0027super-block\u0027 via sysfs doesn\u0027t\nreally fit with the whole sysfs model, and ever since commit\n8118a859dc7abd873193986c77a8d9bdb877adc8 (\"sysfs: fix off-by-one error\nin fill_read_buffer()\") it doesn\u0027t actually work at all (as the size of\nthe blob is often one page).\n\n(akpm: as in, fs/sysfs/file.c:fill_read_buffer() goes BUG)\n\nSo just remove it altogether.  It isn\u0027t really useful.\n\nSigned-off-by: Neil Brown \u003cneilb@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": "7be3dfec4724c51e890455fe48fe188ad7c18b88",
      "tree": "c1843e80b9b4c1de6d7603753679044d6db4c18e",
      "parents": [
        "52720ae77d392d3f4c12281c37304edbc8cb51f1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 10 11:43:48 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Mar 10 18:01:19 2008 -0700"
      },
      "message": "md: reduce CPU wastage on idle md array with a write-intent bitmap\n\nRecent patch titled\n  Reduce CPU wastage on idle md array with a write-intent bitmap.\n\nwould sometimes leave the array with dirty bitmap bits that stay dirty.  A\nsubsequent write would sort things out so it isn\u0027t a big problem, but should\nbe fixed nonetheless.\n\nWe need to make sure that when the bitmap becomes not \"allclean\", the\ndaemon_sleep really does get set to a sensible value.\n\nSigned-off-by: Neil Brown \u003cneilb@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": "52720ae77d392d3f4c12281c37304edbc8cb51f1",
      "tree": "2a04d72705155fbdf2fe5181da414bc0c5261525",
      "parents": [
        "69682d852f5c94ee94e21174b3e8b719626c98db"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 10 11:43:47 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Mar 10 18:01:19 2008 -0700"
      },
      "message": "md: fix formatting error in /proc/mdstat\n\nIf an md array is \"auto-read-only\", then this appears in /proc/mdstat as\n\n   /dev/md0: active(auto-read-only)\n\nwhereas if it is truely readonly, it appears as\n\n   /dev/md0: active (read-only)\n\nThe difference being a space.\n\nOne program known to parse this file expects the space and gets badly\nconfused.  It will be fixed, but it would be best if what the kernel generates\nis more consistent too.\n\nSigned-off-by: Neil Brown \u003cneilb@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": "a07e6ab41be179cf1ed728a4f41368435508b550",
      "tree": "10773de394ab861259468372099c90b3f8671292",
      "parents": [
        "1c830532f6b44d10a1743ccd00e990c6b83396f5"
      ],
      "author": {
        "name": "K.Tanaka",
        "email": "k-tanaka@ce.jp.nec.com",
        "time": "Tue Mar 04 14:29:37 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:18 2008 -0800"
      },
      "message": "md: the md RAID10 resync thread could cause a md RAID10 array deadlock\n\nThis message describes another issue about md RAID10 found by testing the\n2.6.24 md RAID10 using new scsi fault injection framework.\n\nAbstract:\n\nWhen a scsi error results in disabling a disk during RAID10 recovery, the\nresync threads of md RAID10 could stall.\n\nThis case, the raid array has already been broken and it may not matter.  But\nI think stall is not preferable.  If it occurs, even shutdown or reboot will\nfail because of resource busy.\n\nThe deadlock mechanism:\n\nThe r10bio_s structure has a \"remaining\" member to keep track of BIOs yet to\nbe handled when recovering.  The \"remaining\" counter is incremented when\nbuilding a BIO in sync_request() and is decremented when finish a BIO in\nend_sync_write().\n\nIf building a BIO fails for some reasons in sync_request(), the \"remaining\"\nshould be decremented if it has already been incremented.  I found a case\nwhere this decrement is forgotten.  This causes a md_do_sync() deadlock\nbecause md_do_sync() waits for md_done_sync() called by end_sync_write(), but\nend_sync_write() never calls md_done_sync() because of the \"remaining\" counter\nmismatch.\n\nFor example, this problem would be reproduced in the following case:\n\nPersonalities : [raid10]\nmd0 : active raid10 sdf1[4] sde1[5](F) sdd1[2] sdc1[1] sdb1[6](F)\n      3919616 blocks 64K chunks 2 near-copies [4/2] [_UU_]\n      [\u003e....................]  recovery \u003d  2.2% (45376/1959808) finish\u003d0.7min speed\u003d45376K/sec\n\nThis case, sdf1 is recovering, sdb1 and sde1 are disabled.\nAn additional error with detaching sdd will cause a deadlock.\n\nmd0 : active raid10 sdf1[4] sde1[5](F) sdd1[6](F) sdc1[1] sdb1[7](F)\n      3919616 blocks 64K chunks 2 near-copies [4/1] [_U__]\n      [\u003d\u003e...................]  recovery \u003d  5.0% (99520/1959808) finish\u003d5.9min speed\u003d5237K/sec\n\n 2739 ?        S\u003c     0:17 [md0_raid10]\n28608 ?        D\u003c     0:00 [md0_resync]\n28629 pts/1    Ss     0:00 bash\n28830 pts/1    R+     0:00 ps ax\n31819 ?        D\u003c     0:00 [kjournald]\n\nThe resync thread keeps working, but actually it is deadlocked.\n\nPatch:\nBy this patch, the remaining counter will be decremented if needed.\n\nSigned-off-by: Neil Brown \u003cneilb@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": "1c830532f6b44d10a1743ccd00e990c6b83396f5",
      "tree": "506c8fef4d84f54e76b533756cff86c45bb61746",
      "parents": [
        "8ed3a19563b6c05b7625649b1769ddb063d53253"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 04 14:29:35 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:18 2008 -0800"
      },
      "message": "md: fix possible raid1/raid10 deadlock on read error during resync\n\nThanks to K.Tanaka and the scsi fault injection framework, here is a fix for\nanother possible deadlock in raid1/raid10 error handing.\n\nIf a read request returns an error while a resync is happening and a resync\nrequest is pending, the attempt to fix the error will block until the resync\nprogresses, and the resync will block until the read request completes.  Thus\na deadlock.\n\nThis patch fixes the problem.\n\nCc: \"K.Tanaka\" \u003ck-tanaka@ce.jp.nec.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@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": "8ed3a19563b6c05b7625649b1769ddb063d53253",
      "tree": "ad774e5920efc4c9bcf751ad31061cefe81faf35",
      "parents": [
        "27c529bb8e906d5d692152bc127cc09477d3629e"
      ],
      "author": {
        "name": "Keld Simonsen",
        "email": "keld@dkuug.dk",
        "time": "Tue Mar 04 14:29:34 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:18 2008 -0800"
      },
      "message": "md: don\u0027t attempt read-balancing for raid10 \u0027far\u0027 layouts\n\nThis patch changes the disk to be read for layout \"far \u003e 1\" to always be the\ndisk with the lowest block address.\n\nThus the chunks to be read will always be (for a fully functioning array) from\nthe first band of stripes, and the raid will then work as a raid0 consisting\nof the first band of stripes.\n\nSome advantages:\n\nThe fastest part which is the outer sectors of the disks involved will be\nused.  The outer blocks of a disk may be as much as 100 % faster than the\ninner blocks.\n\nAverage seek time will be smaller, as seeks will always be confined to the\nfirst part of the disks.\n\nMixed disks with different performance characteristics will work better, as\nthey will work as raid0, the sequential read rate will be number of disks\ninvolved times the IO rate of the slowest disk.\n\nIf a disk is malfunctioning, the first disk which is working, and has the\nlowest block address for the logical block will be used.\n\nSigned-off-by: Keld Simonsen \u003ckeld@dkuug.dk\u003e\nSigned-off-by: Neil Brown \u003cneilb@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": "27c529bb8e906d5d692152bc127cc09477d3629e",
      "tree": "1bcfa43a45206e03bbc729c5d3af4bed830d4439",
      "parents": [
        "25156198235325805cd7295ed694509fd6e3a29e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 04 14:29:33 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:18 2008 -0800"
      },
      "message": "md: lock access to rdev attributes properly\n\nWhen we access attributes of an rdev (component device on an md array) through\nsysfs, we really need to lock the array against concurrent changes.  We\ncurrently do that when we change an attribute, but not when we read an\nattribute.  We need to lock when reading as well else rdev-\u003emddev could become\nNULL while we are accessing it.\n\nSo add appropriate locking (mddev_lock) to rdev_attr_show.\n\nrdev_size_store requires some extra care as well as it needs to unlock the\nmddev while scanning other mddevs for overlapping regions.  We currently\nassume that rdev-\u003emddev will still be unchanged after the scan, but that\ncannot be certain.  So take a copy of rdev-\u003emddev for use at the end of the\nfunction.\n\nSigned-off-by: Neil Brown \u003cneilb@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": "25156198235325805cd7295ed694509fd6e3a29e",
      "tree": "0f1b8ae0f6e4da99afa2ab5e59c866becb1dc136",
      "parents": [
        "d0fae18f1b53a1d39135a968792be034bdf7ff26"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 04 14:29:32 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:18 2008 -0800"
      },
      "message": "md: make sure a reshape is started when device switches to read-write\n\nA resync/reshape/recovery thread will refuse to progress when the array is\nmarked read-only.  So whenever it mark it not read-only, it is important to\nwake up thread resync thread.  There is one place we didn\u0027t do this.\n\nThe problem manifests if the start_ro module parameters is set, and a raid5\narray that is in the middle of a reshape (restripe) is started.  The array\nwill initially be semi-read-only (meaning it acts like it is readonly until\nthe first write).  So the reshape will not proceed.\n\nOn the first write, the array will become read-write, but the reshape will not\nbe started, and there is no event which will ever restart that thread.\n\nSigned-off-by: Neil Brown \u003cneilb@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": "d0fae18f1b53a1d39135a968792be034bdf7ff26",
      "tree": "3448dab652696848df47dcafb7772220b9e58e4f",
      "parents": [
        "a1801f858e57f87a7f79914346921cc729632295"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 04 14:29:31 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:18 2008 -0800"
      },
      "message": "md: clean up irregularity with raid autodetect\n\nWhen a raid1 array is stopped, all components currently get added to the list\nfor auto-detection.  However we should really only add components that were\nfound by autodetection in the first place.  So add a flag to record that\ninformation, and use it.\n\nSigned-off-by: Neil Brown \u003cneilb@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": "a1801f858e57f87a7f79914346921cc729632295",
      "tree": "1ac8c153af0512382c387316a6882df555eb721e",
      "parents": [
        "8311c29d40235062a843f4a8e8a70a44af6fe4c9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 04 14:29:31 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:17 2008 -0800"
      },
      "message": "md: guard against possible bad array geometry in v1 metadata\n\nMake sure the data doesn\u0027t start before the end of the superblock when the\nsuperblock is at the start of the device.\n\nSigned-off-by: Neil Brown \u003cneilb@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": "8311c29d40235062a843f4a8e8a70a44af6fe4c9",
      "tree": "c869143fae8f135646300d1bac6639af5bb30dd7",
      "parents": [
        "a35e63efa1fb18c6f20f38e3ddf3f8ffbcf0f6e7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 04 14:29:30 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:17 2008 -0800"
      },
      "message": "md: reduce CPU wastage on idle md array with a write-intent bitmap\n\nOn an md array with a write-intent bitmap, a thread wakes up every few seconds\nand scans the bitmap looking for work to do.  If the array is idle, there will\nbe no work to do, but a lot of scanning is done to discover this.\n\nSo cache the fact that the bitmap is completely clean, and avoid scanning the\nwhole bitmap when the cache is known to be clean.\n\nSigned-off-by: Neil Brown \u003cneilb@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": "a35e63efa1fb18c6f20f38e3ddf3f8ffbcf0f6e7",
      "tree": "8dddd54c45ebaad84a6178765d29d9536df944d1",
      "parents": [
        "466634488e80968f12e73dd1fe6af5c37a1fbfe2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 04 14:29:29 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:17 2008 -0800"
      },
      "message": "md: fix deadlock in md/raid1 and md/raid10 when handling a read error\n\nWhen handling a read error, we freeze the array to stop any other IO while\nattempting to over-write with correct data.\n\nThis is done in the raid1d(raid10d) thread and must wait for all submitted IO\nto complete (except for requests that failed and are sitting in the retry\nqueue - these are counted in -\u003enr_queue and will stay there during a freeze).\n\nHowever write requests need attention from raid1d as bitmap updates might be\nrequired.  This can cause a deadlock as raid1 is waiting for requests to\nfinish that themselves need attention from raid1d.\n\nSo we create a new function \u0027flush_pending_writes\u0027 to give that attention, and\ncall it in freeze_array to be sure that we aren\u0027t waiting on raid1d.\n\nThanks to \"K.Tanaka\" \u003ck-tanaka@ce.jp.nec.com\u003e for finding and reporting this\nproblem.\n\nCc: \"K.Tanaka\" \u003ck-tanaka@ce.jp.nec.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@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": "e03f1a842287480aa03732612148c0d333baca61",
      "tree": "b26375cd9efb5d5ff3be1696b8bb59059f7eb92e",
      "parents": [
        "ae5e1b6cc511b278ad52b2d42afb44780e5d4cb2"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Tue Feb 19 19:44:19 2008 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 19 15:52:27 2008 -0800"
      },
      "message": "dm-raid1.c: fix NULL dereferences\n\nThis patch fixes two NULL dereferences introduced by commit\n06386bbfd2441416875d0403d405c56822f6ebac and spotted by the Coverity\nchecker.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cf28b4863f9ee8f122e8ff3ac0d403e07ba9c6d9",
      "tree": "65c91f6911b34c32e517938289621ce0e7baeaf3",
      "parents": [
        "c32c2f63a9d6c953aaf168c0b2551da9734f76d2"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:38:44 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:17:09 2008 -0800"
      },
      "message": "d_path: Make d_path() use a struct path\n\nd_path() is used on a \u003cdentry,vfsmount\u003e pair.  Lets use a struct path to\nreflect this.\n\n[akpm@linux-foundation.org: fix build in mm/memory.c]\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nAcked-by: Bryan Wu \u003cbryan.wu@analog.com\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.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": "c32c2f63a9d6c953aaf168c0b2551da9734f76d2",
      "tree": "14eca3083f3de4a87a95359ab66109c10add1ae7",
      "parents": [
        "e83aece3afad4d56cc01abe069d3519e851cd2de"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:38:43 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:17:08 2008 -0800"
      },
      "message": "d_path: Make seq_path() use a struct path argument\n\nseq_path() is always called with a dentry and a vfsmount from a struct path.\nMake seq_path() take it directly as an argument.\n\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Neil Brown \u003cneilb@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": "1d957f9bf87da74f420424d16ece005202bbebd3",
      "tree": "363d4770c0c74a536524c99ccd2762ce96ee9bbe",
      "parents": [
        "4ac9137858e08a19f29feac4e1f4df7c268b0ba5"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:34:35 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:13:33 2008 -0800"
      },
      "message": "Introduce path_put()\n\n* Add path_put() functions for releasing a reference to the dentry and\n  vfsmount of a struct path in the right order\n\n* Switch from path_release(nd) to path_put(\u0026nd-\u003epath)\n\n* Rename dput_path() to path_put_conditional()\n\n[akpm@linux-foundation.org: fix cifs]\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: \u003clinux-fsdevel@vger.kernel.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Steven French \u003csfrench@us.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": "4ac9137858e08a19f29feac4e1f4df7c268b0ba5",
      "tree": "f5b5d84fd12fcc2b0ba0e7ce1a79ff381ad8f5dd",
      "parents": [
        "c5e725f33b733a77de622e91b6ba5645fcf070be"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:34:32 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:13:33 2008 -0800"
      },
      "message": "Embed a struct path into struct nameidata instead of nd-\u003e{dentry,mnt}\n\nThis is the central patch of a cleanup series. In most cases there is no good\nreason why someone would want to use a dentry for itself. This series reflects\nthat fact and embeds a struct path into nameidata.\n\nTogether with the other patches of this series\n- it enforced the correct order of getting/releasing the reference count on\n  \u003cdentry,vfsmount\u003e pairs\n- it prepares the VFS for stacking support since it is essential to have a\n  struct path in every place where the stack can be traversed\n- it reduces the overall code size:\n\nwithout patch series:\n   text    data     bss     dec     hex filename\n5321639  858418  715768 6895825  6938d1 vmlinux\n\nwith patch series:\n   text    data     bss     dec     hex filename\n5320026  858418  715768 6894212  693284 vmlinux\n\nThis patch:\n\nSwitch from nd-\u003e{dentry,mnt} to nd-\u003epath.{dentry,mnt} everywhere.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: fix cifs]\n[akpm@linux-foundation.org: fix smack]\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Casey Schaufler \u003ccasey@schaufler-ca.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "39ed7adb17bdec8224bd3fae551bb7222e05f35b",
      "tree": "1bd24fe0fafe50f3d23e95f5fd87734e85bb346a",
      "parents": [
        "e6bafba5b4765a5a252f1b8d31cbf6d2459da337"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Wed Feb 13 03:53:00 2008 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 13 08:16:34 2008 -0800"
      },
      "message": "dm-raid1 breakage on 64bit\n\ntest_and_set_bit() on address of uint32_t is a Bad Idea(tm)...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "af195ac82e38ba802fd86b5a014ed05ef6dd88bb",
      "tree": "661e5848dd970f6213cbcf181818f234cef2c571",
      "parents": [
        "06386bbfd2441416875d0403d405c56822f6ebac"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Feb 08 02:11:39 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:11:39 2008 +0000"
      },
      "message": "dm raid1: report fault status\n\nThis patch adds extra information to the mirror status output, so that\nit can be determined which device(s) have failed.  For each mirror device,\na character is printed indicating the most severe error encountered.  The\ncharacters are:\n *    A \u003d\u003e Alive - No failures\n *    D \u003d\u003e Dead - A write failure occurred leaving mirror out-of-sync\n *    S \u003d\u003e Sync - A sychronization failure occurred, mirror out-of-sync\n *    R \u003d\u003e Read - A read failure occurred, mirror data unaffected\nThis allows userspace to properly reconfigure the mirror set.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "06386bbfd2441416875d0403d405c56822f6ebac",
      "tree": "ce66e5d061f67df6e85854aafaf0c43620513359",
      "parents": [
        "b80aa7a0c268d3ae0c472f648af1e3e4a359765c"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Feb 08 02:11:37 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:11:37 2008 +0000"
      },
      "message": "dm raid1: handle read failures\n\nThis patch gives the ability to respond-to/record device failures\nthat happen during read operations.  It also adds the ability to\nread from mirror devices that are not the primary if they are\nin-sync.\n\nThere are essentially two read paths in mirroring; the direct path\nand the queued path.  When a read request is mapped, if the region\nis \u0027in-sync\u0027 the direct path is taken; otherwise the queued path\nis taken.\n\nIf the direct path is taken, we must record bio information so that\nif the read fails we can retry it.  We then discover the status of\na direct read through mirror_end_io.  If the read has failed, we will\nmark the device from which the read was attempted as failed (so we\ndon\u0027t try to read from it again), restore the bio and try again.\n\nIf the queued path is taken, we discover the results of the read\nfrom \u0027read_callback\u0027.  If the device failed, we will mark the device\nas failed and attempt the read again if there is another device\nwhere this region is known to be \u0027in-sync\u0027.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b80aa7a0c268d3ae0c472f648af1e3e4a359765c",
      "tree": "ce3d7f686a2b022dab3e0f8ddc1846d2ac4f6c58",
      "parents": [
        "8f0205b798f926e2745de5fdebf0a8605c621de6"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Feb 08 02:11:35 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:11:35 2008 +0000"
      },
      "message": "dm raid1: fix EIO after log failure\n\nThis patch adds the ability to requeue write I/O to\ncore device-mapper when there is a log device failure.\n\nIf a write to the log produces and error, the pending writes are\nput on the \"failures\" list.  Since the log is marked as failed,\nthey will stay on the failures list until a suspend happens.\n\nSuspends come in two phases, presuspend and postsuspend.  We must\nmake sure that all the writes on the failures list are requeued\nin the presuspend phase (a requirement of dm core).  This means\nthat recovery must be complete (because writes may be delayed\nbehind it) and the failures list must be requeued before we\nreturn from presuspend.\n\nThe mechanisms to ensure recovery is complete (or stopped) was\nalready in place, but needed to be moved from postsuspend to\npresuspend.  We rely on \u0027flush_workqueue\u0027 to ensure that the\nmirror thread is complete and therefore, has requeued all writes\nin the failures list.\n\nBecause we are using flush_workqueue, we must ensure that no\nadditional \u0027queue_work\u0027 calls will produce additional I/O\nthat we need to requeue (because once we return from\npresuspend, we are unable to do anything about it).  \u0027queue_work\u0027\nis called in response to the following functions:\n- complete_resync_work \u003d NA, recovery is stopped\n- rh_dec (mirror_end_io) \u003d NA, only calls \u0027queue_work\u0027 if it\n                           is ready to recover the region\n                           (recovery is stopped) or it needs\n                           to clear the region in the log*\n                           **this doesn\u0027t get called while\n                           suspending**\n- rh_recovery_end \u003d NA, recovery is stopped\n- rh_recovery_start \u003d NA, recovery is stopped\n- write_callback \u003d 1) Writes w/o failures simply call\n                   bio_endio -\u003e mirror_end_io -\u003e rh_dec\n                   (see rh_dec above)\n                   2) Writes with failures are put on\n                   the failures list and queue_work is\n                   called**\n                   ** write_callbacks don\u0027t happen\n                   during suspend **\n- do_failures \u003d NA, \u0027queue_work\u0027 not called if suspending\n- add_mirror (initialization) \u003d NA, only done on mirror creation\n- queue_bio \u003d NA, 1) delayed I/O scheduled before flush_workqueue\n              is called.  2) No more I/Os are being issued.\n              3) Re-attempted READs can still be handled.\n              (Write completions are handled through rh_dec/\n              write_callback - mention above - and do not\n              use queue_bio.)\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "8f0205b798f926e2745de5fdebf0a8605c621de6",
      "tree": "3b0efdd8b666e507c2c7987ce6477064c2d4cc56",
      "parents": [
        "72f4b314100bae85c75d8e4c6fec621ab44e777d"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Feb 08 02:11:32 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:11:32 2008 +0000"
      },
      "message": "dm raid1: handle recovery failures\n\nThis patch adds the calls to \u0027fail_mirror\u0027 if an error occurs during\nmirror recovery (aka resynchronization).  \u0027fail_mirror\u0027 is responsible\nfor recording the type of error by mirror device and ensuring an event\ngets raised for the purpose of notifying userspace.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "72f4b314100bae85c75d8e4c6fec621ab44e777d",
      "tree": "6dc5e860e8a4acab2e047f31391d0c8fdf366ff7",
      "parents": [
        "d74f81f8adc504a23be3babf347b9f69e9389924"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Feb 08 02:11:29 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:11:29 2008 +0000"
      },
      "message": "dm raid1: handle write failures\n\nThis patch gives mirror the ability to handle device failures\nduring normal write operations.\n\nThe \u0027write_callback\u0027 function is called when a write completes.\nIf all the writes failed or succeeded, we report failure or\nsuccess respectively.  If some of the writes failed, we call\nfail_mirror; which increments the error count for the device, notes\nthe type of error encountered (DM_RAID1_WRITE_ERROR),  and\nselects a new primary (if necessary).  Note that the primary\ndevice can never change while the mirror is not in-sync (IOW,\nwhile recovery is happening.)  This means that the scenario\nwhere a failed write changes the primary and gives\nrecovery_complete a chance to misread the primary never happens.\nThe fact that the primary can change has necessitated the change\nto the default_mirror field.  We need to protect against reading\ngarbage while the primary changes.  We then add the bio to a new\nlist in the mirror set, \u0027failures\u0027.  For every bio in the \u0027failures\u0027\nlist, we call a new function, \u0027__bio_mark_nosync\u0027, where we mark\nthe region \u0027not-in-sync\u0027 in the log and properly set the region\nstate as, RH_NOSYNC.  Userspace must also be notified of the\nfailure.  This is done by \u0027raising an event\u0027 (dm_table_event()).\nIf fail_mirror is called in process context the event can be raised\nright away.  If in interrupt context, the event is deferred to the\nkmirrord thread - which raises the event if \u0027event_waiting\u0027 is set.\n\nBackwards compatibility is maintained by ignoring errors if\nthe DM_FEATURES_HANDLE_ERRORS flag is not present.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d74f81f8adc504a23be3babf347b9f69e9389924",
      "tree": "4a687e400479ad330bb36ded54012cd8b8b84ecf",
      "parents": [
        "4f7f5c675fd6bacaae3c67be44de872dcff0e3b7"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Feb 08 02:11:27 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:11:27 2008 +0000"
      },
      "message": "dm snapshot: combine consecutive exceptions in memory\n\nProvided sector_t is 64 bits, reduce the in-memory footprint of the\nsnapshot exception table by the simple method of using unused bits of\nthe chunk number to combine consecutive entries.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4f7f5c675fd6bacaae3c67be44de872dcff0e3b7",
      "tree": "5825966577a4018047bc126922b1f815af905348",
      "parents": [
        "a25eb9446ad50027bc2082386e5358bedad087ed"
      ],
      "author": {
        "name": "Brian Wood",
        "email": "brian.j.wood@intel.com",
        "time": "Fri Feb 08 02:11:24 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:11:24 2008 +0000"
      },
      "message": "dm: stripe enhanced status return\n\nThis patch adds additional information to the status line. It is added at the\nend of the returned text so it will not interfere with existing\nimplementations using this data. The addition of this information will allow\nfor a common return interface to match that returned with the dm-raid1.c\nstatus line (with Jonathan Brassow\u0027s patches).\n\nHere is a sample of what is returned with a mirror \"status\" call:\nisw_eeaaabgfg_mirror: 0 488390920 mirror 2 8:16 8:32 3727/3727 1 AA 1 core\n\nHere\u0027s what\u0027s returned with this patch for a stripe \"status\" call:\nisw_dheeijjdej_stripe: 0 976783872 striped 2 8:16 8:32 1 AA\n\nSigned-off-by: Brian Wood \u003cbrian.j.wood@intel.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a25eb9446ad50027bc2082386e5358bedad087ed",
      "tree": "d9d2e5d26dbf403efa69dd52aec94bf37c82da78",
      "parents": [
        "fb8b284806124bef250196007d7373ea3fe26194"
      ],
      "author": {
        "name": "Brian Wood",
        "email": "brian.j.wood@intel.com",
        "time": "Fri Feb 08 02:11:22 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:11:22 2008 +0000"
      },
      "message": "dm: stripe trigger event on failure\n\nThis patch adds the stripe_end_io function to process errors that might\noccur after an IO operation. As part of this there are a number of\nenhancements made to record and trigger events:\n\n- New atomic variable in struct stripe to record the number of\nerrors each stripe volume device has experienced (could be used\nlater with uevents to report back directly to userspace)\n\n- New workqueue/work struct setup to process the trigger_event function\n\n- New end_io function. It is here that testing for BIO error conditions\ntake place. It determines the exact stripe that cause the error,\nrecords this in the new atomic variable, and calls the queue_work() function\n\n- New trigger_event function to process failure events. This\ncalls dm_table_event()\n\nSigned-off-by: Brian Wood \u003cbrian.j.wood@intel.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fb8b284806124bef250196007d7373ea3fe26194",
      "tree": "8e34cc38a2c5a0e8e7a937c53421cf7f76466a00",
      "parents": [
        "304f3f6a58301316da612d7bf21d9abe1369d456"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Feb 08 02:11:19 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:11:19 2008 +0000"
      },
      "message": "dm log: auto load modules\n\nIf the log type is not recognised, attempt to load the module\n\u0027dm-log-\u003ctype\u003e.ko\u0027.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "304f3f6a58301316da612d7bf21d9abe1369d456",
      "tree": "aa380ca3cd0a7d8a61f17915050866876510f181",
      "parents": [
        "3a7f6c990ad04e6f576a159876c602d14d6f7fef"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Feb 08 02:11:17 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:11:17 2008 +0000"
      },
      "message": "dm: move deferred bio flushing to workqueue\n\nAdd a single-thread workqueue for each mapped device\nand move flushing of the lists of pushback and deferred bios\nto this new workqueue.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3a7f6c990ad04e6f576a159876c602d14d6f7fef",
      "tree": "dc120485f8801050fa640f22c1bdeae1429728e0",
      "parents": [
        "95497a960015c89c7c585d5fb953bc2816dba1e5"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Feb 08 02:11:14 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:11:14 2008 +0000"
      },
      "message": "dm crypt: use async crypto\n\ndm-crypt: Use crypto ablkcipher interface\n\nMove encrypt/decrypt core to async crypto call.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "95497a960015c89c7c585d5fb953bc2816dba1e5",
      "tree": "3e1f33a86b81bf371517fc5b60db295989355a4d",
      "parents": [
        "43d6903482eec168b727bc4bf76a9f415257d862"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Feb 08 02:11:12 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:11:12 2008 +0000"
      },
      "message": "dm crypt: prepare async callback fn\n\ndm-crypt: Use crypto ablkcipher interface\n\nPrepare callback function for async crypto operation.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "43d6903482eec168b727bc4bf76a9f415257d862",
      "tree": "cc0f5d3621c052376d2f6cff85af87002e4df344",
      "parents": [
        "ddd42edfd8ec44595b1501318512bc29a36f015f"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Feb 08 02:11:09 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:11:09 2008 +0000"
      },
      "message": "dm crypt: add completion for async\n\ndm-crypt: Use crypto ablkcipher interface\nPrepare completion for async crypto request.\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ddd42edfd8ec44595b1501318512bc29a36f015f",
      "tree": "c102f6dd5ffad033531352ef53508db4bbefb382",
      "parents": [
        "01482b7671d014aa44f2efbc1153f4e3f48d7fb3"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Feb 08 02:11:07 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:11:07 2008 +0000"
      },
      "message": "dm crypt: add async request mempool\n\ndm-crypt: Use crypto ablkcipher interface\n\nIntroduce mempool for async crypto requests.\n\ncc-\u003ereq is used mainly during synchronous operations\n(to prevent allocation and deallocation of the same object).\n\nSigned-off-by: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "01482b7671d014aa44f2efbc1153f4e3f48d7fb3",
      "tree": "12017dac7b6b1b680649b59470d91f6dd9baf55f",
      "parents": [
        "899c95d36c896f9fb7bc5f4f03b4abd86bda292c"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Feb 08 02:11:04 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:11:04 2008 +0000"
      },
      "message": "dm crypt: extract scatterlist processing\n\ndm-crypt: Use crypto ablkcipher interface\n\nMove scatterlists to separate dm_crypt_struct and\npick out block processing from crypt_convert.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "899c95d36c896f9fb7bc5f4f03b4abd86bda292c",
      "tree": "824017f25f4c0ed321077e068280c9bbd207ad47",
      "parents": [
        "84131db689ab86409315c15a3ea5daf732cb04e1"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Feb 08 02:11:02 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:11:02 2008 +0000"
      },
      "message": "dm crypt: tidy io ref counting\n\nMake io reference counting more obvious.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "84131db689ab86409315c15a3ea5daf732cb04e1",
      "tree": "e7ba3d1c2b7ddb38ed14725aab699e07776627b0",
      "parents": [
        "dec1cedf9d4eabe43f3c7d6af095eff40c139a89"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Feb 08 02:10:59 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:10:59 2008 +0000"
      },
      "message": "dm crypt: introduce crypt_write_io_loop\n\nIntroduce crypt_write_io_loop().\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "dec1cedf9d4eabe43f3c7d6af095eff40c139a89",
      "tree": "1ee57308cac1e018fb670e21bc91822f0250aa83",
      "parents": [
        "0c395b0f8dd7aee394df95b46963fc0f3401cf90"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Feb 08 02:10:57 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:10:57 2008 +0000"
      },
      "message": "dm crypt: abstract crypt_write_done\n\nProcess write request in separate function and queue\nfinal bio through io workqueue.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0c395b0f8dd7aee394df95b46963fc0f3401cf90",
      "tree": "03a83a7ba9e9917fadae5416ed58533e51e67067",
      "parents": [
        "395b167ca0c559aa975d8bbc46a3d10edd6e17d0"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Feb 08 02:10:54 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:10:54 2008 +0000"
      },
      "message": "dm crypt: store sector mapping in dm_crypt_io\n\nAdd sector into dm_crypt_io instead of using local variable.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "395b167ca0c559aa975d8bbc46a3d10edd6e17d0",
      "tree": "5b5db9ad8da4d1d28e971dece58979594f56bad2",
      "parents": [
        "4e4eef64e246694a6302c3ee95ac9b60c40f877e"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:10:52 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:10:52 2008 +0000"
      },
      "message": "dm crypt: move queue functions\n\nReorder kcryptd functions for clarity.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4e4eef64e246694a6302c3ee95ac9b60c40f877e",
      "tree": "704b46c01bf929873bbca0ea28e621f0c4e3830f",
      "parents": [
        "ee7a491e62214bfd56c97c1fef3672c09e2a700d"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Feb 08 02:10:49 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:10:49 2008 +0000"
      },
      "message": "dm crypt: adjust io processing functions\n\nRename functions to follow calling convention.\nPrepare write io error processing function skeleton.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ee7a491e62214bfd56c97c1fef3672c09e2a700d",
      "tree": "b17672c2216a93ec875da4b332b9c0d6e0348b82",
      "parents": [
        "5742fd77757894ebb5e441afbdac1fb666e782f7"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Feb 08 02:10:46 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:10:46 2008 +0000"
      },
      "message": "dm crypt: tidy crypt_endio\n\nSimplify crypt_endio function.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5742fd77757894ebb5e441afbdac1fb666e782f7",
      "tree": "6976ec2b920b9df1e2316d4603d81a6082a7d42b",
      "parents": [
        "fcd369daa36d547607dbedd0b41099d6dfc1d1c7"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Feb 08 02:10:43 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:10:43 2008 +0000"
      },
      "message": "dm crypt: move error setting outside crypt_dec_pending\n\nMove error code setting outside of crypt_dec_pending function.\nUse -EIO if crypt_convert_scatterlist() fails.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fcd369daa36d547607dbedd0b41099d6dfc1d1c7",
      "tree": "456f6369cb9f16bd4575442d5729f9d03efb4620",
      "parents": [
        "53017030e2548dffbe481fb4ab6b587abbee6f8b"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Fri Feb 08 02:10:41 2008 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Fri Feb 08 02:10:41 2008 +0000"
      },
      "message": "dm crypt: remove unnecessary crypt_context write parm\n\nRemove write attribute from convert_context and use bio flag instead.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    }
  ],
  "next": "53017030e2548dffbe481fb4ab6b587abbee6f8b"
}
