)]}'
{
  "log": [
    {
      "commit": "4274215d24633df7302069e51426659d4759c5ed",
      "tree": "c21fff5f11201eaaea0e44cf81a38df21dd63ffd",
      "parents": [
        "2992c4bd5742b31a0ee00a76eee9c1c284507418"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 28 16:59:42 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 28 16:59:42 2011 +1000"
      },
      "message": "md: avoid endless recovery loop when waiting for fail device to complete.\n\nIf a device fails in a way that causes pending request to take a while\nto complete, md will not be able to immediately remove it from the\narray in remove_and_add_spares.\nIt will then incorrectly look like a spare device and md will try to\nrecover it even though it is failed.\nThis leads to a recovery process starting and instantly aborting over\nand over again.\n\nWe should check if the device is faulty before considering it to be a\nspare.  This will avoid trying to start a recovery that cannot\nproceed.\n\nThis bug was introduced in 2.6.26 so that patch is suitable for any\nkernel since then.\n\nCc: stable@kernel.org\nReported-by: Jim Paradis \u003cjames.paradis@stratus.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "01393f3d5836b7d62e925e6f4658a7eb22b83a11",
      "tree": "38c6b3856adc22ef5bcada7855a6601d6e2e9654",
      "parents": [
        "9864c0053d3da4c5731ac8a6c4835179310bd40a"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Thu Jun 09 11:42:54 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 09 11:42:54 2011 +1000"
      },
      "message": "md: check -\u003ehot_remove_disk when removing disk\n\nCheck pers-\u003ehot_remove_disk instead of pers-\u003ehot_add_disk in slot_store()\nduring disk removal. The linear personality only has -\u003ehot_add_disk and\nno -\u003ehot_remove_disk, so that removing disk in the array resulted to\nfollowing kernel bug:\n\n$ sudo mdadm --create /dev/md0 --level\u003dlinear --raid-devices\u003d4 /dev/loop[0-3]\n$ echo none | sudo tee /sys/block/md0/md/dev-loop2/slot\n BUG: unable to handle kernel NULL pointer dereference at           (null)\n IP: [\u003c          (null)\u003e]           (null)\n PGD c9f5d067 PUD 8575a067 PMD 0\n Oops: 0010 [#1] SMP\n CPU 2\n Modules linked in: linear loop bridge stp llc kvm_intel kvm asus_atk0110 sr_mod cdrom sg\n\n Pid: 10450, comm: tee Not tainted 3.0.0-rc1-leonard+ #173 System manufacturer System Product Name/P5G41TD-M PRO\n RIP: 0010:[\u003c0000000000000000\u003e]  [\u003c          (null)\u003e]           (null)\n RSP: 0018:ffff880085757df0  EFLAGS: 00010282\n RAX: ffffffffa00168e0 RBX: ffff8800d1431800 RCX: 000000000000006e\n RDX: 0000000000000001 RSI: 0000000000000002 RDI: ffff88008543c000\n RBP: ffff880085757e48 R08: 0000000000000002 R09: 000000000000000a\n R10: 0000000000000000 R11: ffff88008543c2e0 R12: 00000000ffffffff\n R13: ffff8800b4641000 R14: 0000000000000005 R15: 0000000000000000\n FS:  00007fe8c9e05700(0000) GS:ffff88011fa00000(0000) knlGS:0000000000000000\n CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b\n CR2: 0000000000000000 CR3: 00000000b4502000 CR4: 00000000000406e0\n DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\n DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\n Process tee (pid: 10450, threadinfo ffff880085756000, task ffff8800c9f08000)\n Stack:\n  ffffffff8138496a ffff8800b4641000 ffff88008543c268 0000000000000000\n  ffff8800b4641000 ffff88008543c000 ffff8800d1431868 ffffffff81a78a90\n  ffff8800b4641000 ffff88008543c000 ffff8800d1431800 ffff880085757e98\n Call Trace:\n  [\u003cffffffff8138496a\u003e] ? slot_store+0xaa/0x265\n  [\u003cffffffff81384bae\u003e] rdev_attr_store+0x89/0xa8\n  [\u003cffffffff8115a96a\u003e] sysfs_write_file+0x108/0x144\n  [\u003cffffffff81106b87\u003e] vfs_write+0xb1/0x10d\n  [\u003cffffffff8106e6c0\u003e] ? trace_hardirqs_on_caller+0x111/0x135\n  [\u003cffffffff81106cac\u003e] sys_write+0x4d/0x77\n  [\u003cffffffff814fe702\u003e] system_call_fastpath+0x16/0x1b\n Code:  Bad RIP value.\n RIP  [\u003c          (null)\u003e]           (null)\n  RSP \u003cffff880085757df0\u003e\n CR2: 0000000000000000\n ---[ end trace ba5fc64319a826fb ]---\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9864c0053d3da4c5731ac8a6c4835179310bd40a",
      "tree": "4aea4c5a457f9e2c4058abfb2d6b69b843c721c5",
      "parents": [
        "d744540cd39e93976c4c8401e140232444ef3b0b"
      ],
      "author": {
        "name": "马建朋",
        "email": "majianpeng@gmail.com",
        "time": "Thu Jun 09 11:42:48 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 09 11:42:48 2011 +1000"
      },
      "message": "md: Using poll  /proc/mdstat can monitor the events of adding a spare disks\n\nSigned-off-by: majianpeng \u003cmajianpeng@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "076f968b37f0232d883749da8f5031df5dea7ade",
      "tree": "aa1c58756c3754abe657be36b4720a16d5c41858",
      "parents": [
        "1ed7242e591af7e233234d483f12d33818b189d9"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jun 07 17:51:30 2011 -0500"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 08 15:11:31 2011 +1000"
      },
      "message": "MD: add sync_super to mddev_t struct\n\nAdd the \u0027sync_super\u0027 function pointer to MD array structure (struct mddev_s)\n\nIf device-mapper (dm-raid.c) is to define its own on-disk superblock and be\nable to load it, there must still be a way for MD to initiate superblock\nupdates.  The simplest way to make this happen is to provide a pointer in\nthe MD array structure that can be set by device-mapper (or other module)\nwith a function to do this.  If the function has been set, it will be used;\notherwise, the method with be looked up via \u0027super_types\u0027 as usual.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0fd018af37dadbb7826850883ad8abfecdb1a00b",
      "tree": "f95ebb9ec9111dc87ad8037ff7e07da802d924e3",
      "parents": [
        "ac42450c7c814769bee963ae4b897c149bb0ab53"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jun 07 17:49:36 2011 -0500"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 08 15:11:31 2011 +1000"
      },
      "message": "MD: move thread wakeups into resume\n\nMove personality and sync/recovery thread starting outside md_run.\n\nMoving the wakeup\u0027s of the personality and sync/recovery threads out of\nmd_run and into do_md_run and mddev_resume solves two issues:\n1) It allows bitmap_load to be called before the sync_thread is run and\n2) when MD personalities are used by device-mapper (dm-raid.c), the start-up\nof the array is better alligned with device-mapper primatives\n(CTR/resume/suspend/DTR).  I/O - in this case, recovery operations - should\nnot happen until after a resume has taken place.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ac42450c7c814769bee963ae4b897c149bb0ab53",
      "tree": "582225e700c0a9eb0f99959f4f797a418a47ddc3",
      "parents": [
        "68866e425be2ef2664aa5c691bb3ab789736acf5"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jun 07 17:48:35 2011 -0500"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 08 15:11:31 2011 +1000"
      },
      "message": "MD: possible typo\n\nMake message a bit clearer by s/blocks/k/\n\nI chose \u0027k\u0027 vs \u0027kiB\u0027 or \u0027kB\u0027 because it is what is used earlier in the\nmessage.  \u0027k\u0027 may be a bit ambigous, but I think it\u0027s better than \"blocks\"\nwhich normally means 512, but means 1024 in MD.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "68866e425be2ef2664aa5c691bb3ab789736acf5",
      "tree": "03cc5c452dcf70228a467031ae3f1989755cd1c1",
      "parents": [
        "629acb6abac0ef217ee579e14084af2ce7381dbc"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@f14.redhat.com",
        "time": "Wed Jun 08 15:10:08 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 08 15:10:08 2011 +1000"
      },
      "message": "MD: no sync IO while suspended\n\nDisallow resync I/O while the RAID array is suspended.\n\nRecovery, resync, and metadata I/O should not be allowed while a device is\nsuspended.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "629acb6abac0ef217ee579e14084af2ce7381dbc",
      "tree": "75963147cec3ff2e16aa775d103cb41706e503b0",
      "parents": [
        "59c5f46fbe01a00eedf54a23789634438bb80603"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@f14.redhat.com",
        "time": "Wed Jun 08 15:10:08 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 08 15:10:08 2011 +1000"
      },
      "message": "MD: no integrity register if no gendisk\n\nDon\u0027t attempt md_integrity_register if there is no gendisk struct available.\n\nWhen MD arrays are built via device-mapper, the gendisk structure is not\navailable via mddev.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b098636cf04c89db4036fedc778da0acc666ad1a",
      "tree": "11a970bdc482b4e5cb2211eefb9a71ae34355bd3",
      "parents": [
        "ab9d47e990c12c11cc95ed1247a3782234a7e33a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 15:52:21 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 15:52:21 2011 +1000"
      },
      "message": "md: allow resync_start to be set while an array is active.\n\nThe sysfs attribute \u0027resync_start\u0027 (known internally as recovery_cp),\nrecords where a resync is up to.  A value of 0 means the array is\nnot known to be in-sync at all.  A value of MaxSector means the array\nis believed to be fully in-sync.\n\nWhen the size of member devices of an array (RAID1,RAID4/5/6) is\nincreased, the array can be increased to match.  This process sets\nresync_start to the old end-of-device offset so that the new part of\nthe array gets resynced.\n\nHowever with RAID1 (and RAID6) a resync is not technically necessary\nand may be undesirable.  So it would be good if the implied resync\nafter the array is resized could be avoided.\n\nSo: change \u0027resync_start\u0027 so the value can be changed while the array\nis active, and as a precaution only allow it to be changed while\nresync/recovery is \u0027frozen\u0027.  Changing it once resync has started is\nnot going to be useful anyway.\n\nThis allows the array to be resized without a resync by:\n  write \u0027frozen\u0027 to \u0027sync_action\u0027\n  write new size to \u0027component_size\u0027 (this will set resync_start)\n  write \u0027none\u0027 to \u0027resync_start\u0027\n  write \u0027idle\u0027 to \u0027sync_action\u0027.\n\nAlso slightly improve some tests on recovery_cp when resizing\nraid1/raid5.  Now that an arbitrary value could be set we should be\nmore careful in our tests.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bedd86b7773fd97f0d708cc0c371c8963ba7ba9a",
      "tree": "acc508209cdc418fcfe9a1493915dfa88c22bc29",
      "parents": [
        "b0140891a8cea36469f58d23859e599b1122bd37"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 14:26:20 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 14:26:20 2011 +1000"
      },
      "message": "md: reject a re-add request that cannot be honoured.\n\nThe \u0027add_new_disk\u0027 ioctl can be used to add a device either as a\nspare, or as an active disk that just needs to be resynced based on\nwrite-intent-bitmap information (re-add)\n\nCurrently if a re-add is requested but fails we add as a spare\ninstead.  This makes it impossible for user-space to check for\nfailure.\n\nSo change to require that a re-add attempt will either succeed or\ncompletely fail.  User-space can then decide what to do next.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b0140891a8cea36469f58d23859e599b1122bd37",
      "tree": "01f378d9964c1d24683a3c42bfd06b1da7d985b6",
      "parents": [
        "693d92a1bbc9e42681c42ed190bd42b636ca876f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 10 17:49:01 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 11 14:26:17 2011 +1000"
      },
      "message": "md: Fix race when creating a new md device.\n\nThere is a race when creating an md device by opening /dev/mdXX.\n\nIf two processes do this at much the same time they will follow the\ncall path\n  __blkdev_get -\u003e get_gendisk -\u003e kobj_lookup\n\nThe first will call\n  -\u003e md_probe -\u003e md_alloc -\u003e add_disk -\u003e blk_register_region\n\nand the race happens when the second gets to kobj_lookup after\nadd_disk has called blk_register_region but before it returns to\nmd_alloc.\n\nIn the case the second will not call md_probe (as the probe is already\ndone) but will get a handle on the gendisk, return to __blkdev_get\nwhich will then call md_open (via the -\u003eopen) pointer.\n\nAs mddev-\u003egendisk hasn\u0027t been set yet, md_open will think something is\nwrong an return with ERESTARTSYS.\n\nThis can loop endlessly while the first thread makes no progress\nthrough add_disk.  Nothing is blocking it, but due to scheduler\nbehaviour it doesn\u0027t get a turn.\nSo this is essentially a live-lock.\n\nWe fix this by simply moving the assignment to mddev-\u003egendisk before\nthe call the add_disk() so md_open doesn\u0027t get confused.\nAlso move blk_queue_flush earlier because add_disk should be as late\nas possible.\n\nTo make sure that md_open doesn\u0027t complete until md_alloc has done all\nthat is needed, we take mddev-\u003eopen_mutex during the last part of\nmd_alloc.  md_open will wait for this.\n\nThis can cause a lock-up on boot so Cc:ing for stable.\nFor 2.6.36 and earlier a different patch will be needed as the\n\u0027blk_queue_flush\u0027 call isn\u0027t there.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReported-by: Thomas Jarosch \u003cthomas.jarosch@intra2net.com\u003e\nTested-by: Thomas Jarosch \u003cthomas.jarosch@intra2net.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "fee68723cf6ae00082f70f3eff17fceab2a4f7d7",
      "tree": "2ff52c9cce0115bc745b60bd9c0faffed8dd46f0",
      "parents": [
        "3b71bd9337b404baab5c894e066be6b6bf51b1c3"
      ],
      "author": {
        "name": "Krzysztof Wojcik",
        "email": "krzysztof.wojcik@intel.com",
        "time": "Wed Apr 20 15:39:53 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 20 15:39:53 2011 +1000"
      },
      "message": "md: Cleanup after raid45-\u003eraid0 takeover\n\nProblem:\nAfter raid4-\u003eraid0 takeover operation, another takeover operation\n(e.g raid0-\u003eraid10) results \"kernel oops\".\nRoot cause:\nVariables \u0027degraded\u0027 in mddev structure is not cleared\non raid45-\u003eraid0 takeover.\n\nThis patch reset this variable.\n\nSigned-off-by: Krzysztof Wojcik \u003ckrzysztof.wojcik@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "97658cdd3af7d01461874c93b89afa4a2465e7c6",
      "tree": "d4e2f930850eb3981307a3eec8c86399dcebf68a",
      "parents": [
        "482c083492ddaa32ef5864bae3d143dc8bcdf7d1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 18 18:25:42 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 18 18:25:42 2011 +1000"
      },
      "message": "md: provide generic support for handling unplug callbacks.\n\nWhen an md device adds a request to a queue, it can call\nmddev_check_plugged.\nIf this succeeds then we know that the md thread will be woken up\nshortly, and -\u003eplug_cnt will be non-zero until then, so some\nprocessing can be delayed.\n\nIf it fails, then no unplug callback is expected and the make_request\nfunction needs to do whatever is required to make the request happen.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "482c083492ddaa32ef5864bae3d143dc8bcdf7d1",
      "tree": "75017fd1a51fe945c65b3600442ddaa20b636b1a",
      "parents": [
        "af1db72d8b340f97ad12b60175afdef43e6f0e60"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 18 18:25:42 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Apr 18 18:25:42 2011 +1000"
      },
      "message": "md - remove old plugging code.\n\nmd has some plugging infrastructure for RAID5 to use because the\nnormal plugging infrastructure required a \u0027request_queue\u0027, and when\ncalled from dm, RAID5 doesn\u0027t have one of those available.\n\nThis relied on the -\u003eunplug_fn callback which doesn\u0027t exist any more.\n\nSo remove all of that code, both in md and raid5.  Subsequent patches\nwith restore the plugging functionality.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "89078d572eb9ce8d4c04264b8b0ba86de0d74c8f",
      "tree": "d01104f97740c19daf01f49ae170df821a43252c",
      "parents": [
        "7de8e5737df31a6826015a65135ed8f0a32bb2c4"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Mon Mar 28 20:09:12 2011 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 17:53:29 2011 -0700"
      },
      "message": "md: Fix integrity registration error when no devices are capable\n\nWe incorrectly returned -EINVAL when none of the devices in the array\nhad an integrity profile.  This in turn prevented mdadm from starting\nthe metadevice.  Fix this so we only return errors on mismatched\nprofiles and memory allocation failures.\n\nReported-by: Giacomo Catenazzi \u003ccate@cateee.net\u003e\nReported-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6c5103890057b1bb781b26b7aae38d33e4c517d8",
      "tree": "e6e57961dcddcb5841acb34956e70b9dc696a880",
      "parents": [
        "3dab04e6978e358ad2307bca563fabd6c5d2c58b",
        "9d2e157d970a73b3f270b631828e03eb452d525e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "message": "Merge branch \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block: (65 commits)\n  Documentation/iostats.txt: bit-size reference etc.\n  cfq-iosched: removing unnecessary think time checking\n  cfq-iosched: Don\u0027t clear queue stats when preempt.\n  blk-throttle: Reset group slice when limits are changed\n  blk-cgroup: Only give unaccounted_time under debug\n  cfq-iosched: Don\u0027t set active queue in preempt\n  block: fix non-atomic access to genhd inflight structures\n  block: attempt to merge with existing requests on plug flush\n  block: NULL dereference on error path in __blkdev_get()\n  cfq-iosched: Don\u0027t update group weights when on service tree\n  fs: assign sb-\u003es_bdi to default_backing_dev_info if the bdi is going away\n  block: Require subsystems to explicitly allocate bio_set integrity mempool\n  jbd2: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  jbd: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  fs: make fsync_buffers_list() plug\n  mm: make generic_writepages() use plugging\n  blk-cgroup: Add unaccounted time to timeslice_used.\n  block: fixup plugging stubs for !CONFIG_BLOCK\n  block: remove obsolete comments for blkdev_issue_zeroout.\n  blktrace: Use rq-\u003ecmd_flags directly in blk_add_trace_rq.\n  ...\n\nFix up conflicts in fs/{aio.c,super.c}\n"
    },
    {
      "commit": "a91a2785b200864aef2270ed6a3babac7a253a20",
      "tree": "3d21d7ef82ddabbdbfb74499d68a73f15adc819f",
      "parents": [
        "82f04ab47e1d94d78503591a7460b2cad9601ede"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Thu Mar 17 11:11:05 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 17 11:11:05 2011 +0100"
      },
      "message": "block: Require subsystems to explicitly allocate bio_set integrity mempool\n\nMD and DM create a new bio_set for every metadevice. Each bio_set has an\nintegrity mempool attached regardless of whether the metadevice is\ncapable of passing integrity metadata. This is a waste of memory.\n\nInstead we defer the allocation decision to MD and DM since we know at\nmetadevice creation time whether integrity passthrough is needed or not.\n\nAutomatic integrity mempool allocation can then be removed from\nbioset_create() and we make an explicit integrity allocation for the\nfs_bio_set.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nReported-by: Zdenek Kabelac \u003czkabelac@redhat.com\u003e\nAcked-by: Mike Snitzer \u003csnizer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "bd2895eeade5f11f3e5906283c630bbdb4b57454",
      "tree": "4d98f4fcd80c7d062afce28823d08aee53e66f82",
      "parents": [
        "016aa2ed1cc9cf704cf76d8df07751b6daa9750f",
        "24d51add7438f9696a7205927bf9de3c5c787a58"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 08:20:19 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 08:20:19 2011 -0700"
      },
      "message": "Merge branch \u0027for-2.6.39\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq\n\n* \u0027for-2.6.39\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:\n  workqueue: fix build failure introduced by s/freezeable/freezable/\n  workqueue: add system_freezeable_wq\n  rds/ib: use system_wq instead of rds_ib_fmr_wq\n  net/9p: replace p9_poll_task with a work\n  net/9p: use system_wq instead of p9_mux_wq\n  xfs: convert to alloc_workqueue()\n  reiserfs: make commit_wq use the default concurrency level\n  ocfs2: use system_wq instead of ocfs2_quota_wq\n  ext4: convert to alloc_workqueue()\n  scsi/scsi_tgt_lib: scsi_tgtd isn\u0027t used in memory reclaim path\n  scsi/be2iscsi,qla2xxx: convert to alloc_workqueue()\n  misc/iwmc3200top: use system_wq instead of dedicated workqueues\n  i2o: use alloc_workqueue() instead of create_workqueue()\n  acpi: kacpi*_wq don\u0027t need WQ_MEM_RECLAIM\n  fs/aio: aio_wq isn\u0027t used in memory reclaim path\n  input/tps6507x-ts: use system_wq instead of dedicated workqueue\n  cpufreq: use system_wq instead of dedicated workqueues\n  wireless/ipw2x00: use system_wq instead of dedicated workqueues\n  arm/omap: use system_wq in mailbox\n  workqueue: use WQ_MEM_RECLAIM instead of WQ_RESCUER\n"
    },
    {
      "commit": "4c63f5646e405b5010cc9499419060bf2e838f5b",
      "tree": "df91ba315032c8ec4aafeb3ab96fdfa7c6c656e1",
      "parents": [
        "cafb0bfca1a73efd6d8a4a6a6a716e6134b96c24",
        "69d60eb96ae8a73cf9b79cf28051caf973006011"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:58:35 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:58:35 2011 +0100"
      },
      "message": "Merge branch \u0027for-2.6.39/stack-plug\u0027 into for-2.6.39/core\n\nConflicts:\n\tblock/blk-core.c\n\tblock/blk-flush.c\n\tdrivers/md/raid1.c\n\tdrivers/md/raid10.c\n\tdrivers/md/raid5.c\n\tfs/nilfs2/btnode.c\n\tfs/nilfs2/mdt.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "721a9602e6607417c6bc15b18e97a2f35266c690",
      "tree": "4987991e43f35b8b3b685fea0040c5265b578996",
      "parents": [
        "cf15900e1209d5b46ec2d24643adbf561830935f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Mar 09 11:56:30 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:27 2011 +0100"
      },
      "message": "block: kill off REQ_UNPLUG\n\nWith the plugging now being explicitly controlled by the\nsubmitter, callers need not pass down unplugging hints\nto the block layer. If they want to unplug, it\u0027s because they\nmanually plugged on their own - in which case, they should just\nunplug at will.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7eaceaccab5f40bbfda044629a6298616aeaed50",
      "tree": "33954d12f63e25a47eb6d86ef3d3d0a5e62bf752",
      "parents": [
        "73c101011926c5832e6e141682180c4debe2cf45"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "message": "block: remove per-queue plugging\n\nCode has been converted over to the new explicit on-stack plugging,\nand delay users have been converted to use the new API for that.\nSo lets kill off the old plugging along with aops-\u003esync_page().\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "f0b4f7e2f29af678bd9af43422c537dcb6008603",
      "tree": "dfc2aa18bbf8411a499ef8117a5e15490eb44728",
      "parents": [
        "93b270f76e7ef3b81001576860c2701931cdc78b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 24 17:26:41 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 24 17:26:41 2011 +1100"
      },
      "message": "md: Fix - again - partition detection when array becomes active\n\nRevert\n    b821eaa572fd737faaf6928ba046e571526c36c6\nand\n    f3b99be19ded511a1bf05a148276239d9f13eefa\n\nWhen I wrote the first of these I had a wrong idea about the\nlifetime of \u0027struct block_device\u0027.  It can disappear at any time that\nthe block device is not open if it falls out of the inode cache.\n\nSo relying on the \u0027size\u0027 recorded with it to detect when the\ndevice size has changed and so we need to revalidate, is wrong.\n\nRather, we really do need the \u0027changed\u0027 attribute stored directly in\nthe mddev and set/tested as appropriate.\n\nWithout this patch, a sequence of:\n   mknod / open / close / unlink\n\n(which can cause a block_device to be created and then destroyed)\nwill result in a rescan of the partition table and consequence removal\nand addition of partitions.\nSeveral of these in a row can get udev racing to create and unlink and\nother code can get confused.\n\nWith the patch, the rescan is only performed when needed and so there\nare no races.\n\nThis is suitable for any stable kernel from 2.6.35.\n\nReported-by: \"Wojcik, Krzysztof\" \u003ckrzysztof.wojcik@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "43d133c18b44e7d82d82ef0dcc2bddd55d5dfe81",
      "tree": "8de75c837b55874cc8a81a29bdedbc62668d4481",
      "parents": [
        "4149efb22da66e326fc48baf80d628834509f7f0",
        "6f576d57f1fa0d6026b495d8746d56d949989161"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Feb 21 09:43:56 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Feb 21 09:43:56 2011 +0100"
      },
      "message": "Merge branch \u0027master\u0027 into for-2.6.39\n"
    },
    {
      "commit": "8f5f02c460b7ca74ce55ce126ce0c1e58a3f923d",
      "tree": "de4f933fe250bd2ba71727f535432a82ef68883b",
      "parents": [
        "cbe6ef1d2622e08e272600b3cb6040bed60f0450"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 16 13:58:51 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 16 13:58:51 2011 +1100"
      },
      "message": "md: correctly handle probe of an \u0027mdp\u0027 device.\n\n\u0027mdp\u0027 devices are md devices with preallocated device numbers\nfor partitions. As such it is possible to mknod and open a partition\nbefore opening the whole device.\n\nthis causes  md_probe() to be called with a device number of a\npartition, which in-turn calls mddev_find with such a number.\n\nHowever mddev_find expects the number of a \u0027whole device\u0027 and\ndoes the wrong thing with partition numbers.\n\nSo add code to mddev_find to remove the \u0027partition\u0027 part of\na device number and just work with the \u0027whole device\u0027.\n\nThis patch addresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d28652\n\nReported-by: hkmaly@bigfoot.com\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: \u003cstable@kernel.org\u003e\n"
    },
    {
      "commit": "cbe6ef1d2622e08e272600b3cb6040bed60f0450",
      "tree": "03d1ae0fe73404a3bd7850d89c415f3412977693",
      "parents": [
        "f7bee80945155ad0326916486dabc38428c6cdef"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 16 13:58:38 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 16 13:58:38 2011 +1100"
      },
      "message": "md: don\u0027t set_capacity before array is active.\n\nIf the desired size of an array is set (via sysfs) before the array is\nactive (which is the normal sequence), we currrently call set_capacity\nimmediately.\nThis means that a subsequent \u0027open\u0027 (as can be caused by some\nudev-triggers program) will notice the new size and try to probe for\npartitions.  However as the array isn\u0027t quite ready yet the read will\nfail.  Then when the array is read, as the size doesn\u0027t change again\nwe don\u0027t try to re-probe.\n\nSo when setting array size via sysfs, only call set_capacity if the\narray is already active.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e91ece5590b3c728624ab57043fc7a05069c604a",
      "tree": "4c5fd4ad374caf5bd9c5f575b0a228b5cdf2f191",
      "parents": [
        "c6751b2bde477f56ceef67aa1d298ce44e8e2e23"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Mon Feb 07 19:21:48 2011 -0500"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 08 09:53:28 2011 +1100"
      },
      "message": "md_make_request: don\u0027t touch the bio after calling make_request\n\nmd_make_request was calling bio_sectors() for part_stat_add\nafter it was calling the make_request function.  This is\nbad because the make_request function can free the bio and\nbecause the bi_size field can change around.\n\nThe fix here was suggested by Jens Axboe.  It saves the\nsector count before the make_request call.  I hit this\nwith CONFIG_DEBUG_PAGEALLOC turned on while trying to break\nhis pretty fusionio card.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c6751b2bde477f56ceef67aa1d298ce44e8e2e23",
      "tree": "59916ec74802396ec4b3f871d27232550848bc8c",
      "parents": [
        "7281f8129c362436237b82c8c026494dd36479dc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 02 11:57:13 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 02 11:57:13 2011 +1100"
      },
      "message": "md: Don\u0027t allow slot_store while resync/recovery is happening.\n\nActivating a spare in an array while resync/recovery is already\nhappening can lead the that spare being marked in-sync when it isn\u0027t\nreally.\nSo don\u0027t allow the \u0027slot\u0027 to be set (this activating the device)\nwhile resync/recovery is happening.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7281f8129c362436237b82c8c026494dd36479dc",
      "tree": "c12196b42c807d4ee80d5f6e1657f31fa3ea4d7b",
      "parents": [
        "a8c42c7f476b5bb39bb3a5b32d5473b9a46cadb9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 14:30:27 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 14:30:27 2011 +1100"
      },
      "message": "md: don\u0027t clear curr_resync_completed at end of resync.\n\nThere is no need to set this to zero at this point.  It will be\nset to zero by remove_and_add_spares or at the start of\nmd_do_sync at the latest.\nAnd setting it to zero before MD_RECOVERY_RUNNING is cleared can\nmake a \u0027zero\u0027 appear briefly in the \u0027sync_completed\u0027 sysfs attribute\njust as resync is finishing.\n\nSo simply remove this setting to zero.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a8c42c7f476b5bb39bb3a5b32d5473b9a46cadb9",
      "tree": "59b82042476e6b92ee293570d30a2580dba56d09",
      "parents": [
        "fc3a08b85b7a4f6c1069e5f71f6ad40d925ff55b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 13:47:13 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 13:47:13 2011 +1100"
      },
      "message": "md: Don\u0027t use remove_and_add_spares to remove failed devices from a read-only array\n\nremove_and_add_spares is called in two places where the needs really\nare very different.\nremove_and_add_spares should not be called on an array which is about\nto be reshaped as some extra devices might have been manually added\nand that would remove them.  However if the array is \u0027read-auto\u0027,\nthat will currently happen, which is bad.\n\nSo in the \u0027ro !\u003d 0\u0027 case don\u0027t call remove_and_add_spares but simply\nremove the failed devices as the comment suggests is needed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f21e9ff7f77d41ceca4e1e5ee5a4efa5ad7a5e40",
      "tree": "c6bf9c0457ae891505983c1493bf15856e815c5b",
      "parents": [
        "50da08409654e036c4c964a473567a61a654cb83"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 12:10:09 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 12:10:09 2011 +1100"
      },
      "message": "md: Remove the AllReserved flag for component devices.\n\nThis flag is not needed and is used badly.\n\nDevices that are included in a native-metadata array are reserved\nexclusively for that array - and currently have AllReserved set.\nThey all are bd_claimed for the rdev and so cannot be shared.\n\nDevices that are included in external-metadata arrays can be shared\namong multiple arrays - providing there is no overlap.\nThese are bd_claimed for md in general - not for a particular rdev.\n\nWhen changing the amount of a device that is used in an array we need\nto check for overlap.  This currently includes a check on AllReserved\nSo even without overlap, sharing with an AllReserved device is not\nallowed.\nHowever the bd_claim usage already precludes sharing with these\ndevices, so the test on AllReserved is not needed.  And in fact it is\nwrong.\n\nAs this is the only use of AllReserved, simply remove all usage and\ndefinition of AllReserved.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "de171cb9a52598cc023adceafc6c166112401386",
      "tree": "56fc899c45b538dedba0fc139e3213a0f47f9a59",
      "parents": [
        "1f0324caefd39985e9fe052fac97da31694db31e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 11:57:42 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jan 31 11:57:42 2011 +1100"
      },
      "message": "md: revert change to raid_disks on failure.\n\nIf we try to update_raid_disks and it fails, we should put\n\u0027delta_disks\u0027 back to zero.  This is important because some code,\nsuch as slot_store, assumes that delta_disks has been validated.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ada609ee2ac2e03bd8abb07f9b3e92cd2e650f19",
      "tree": "ccc1051a961b12448420428b5a400a6333d3e821",
      "parents": [
        "c723fdab8aa728dc2bf0da6a0de8bb9c3f588d84"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jan 25 14:35:54 2011 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Jan 25 14:35:54 2011 +0100"
      },
      "message": "workqueue: use WQ_MEM_RECLAIM instead of WQ_RESCUER\n\nWQ_RESCUER is now an internal flag and should only be used in the\nworkqueue implementation proper.  Use WQ_MEM_RECLAIM instead.\n\nThis doesn\u0027t introduce any functional difference.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: dm-devel@redhat.com\nCc: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "49731baa41df404c2c3f44555869ab387363af43",
      "tree": "5d3476368fa546aebb1c223e9cf1bab5ad80f698",
      "parents": [
        "c553f8e335c00a7cff3ab3f13e793b13d3f2207f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jan 14 18:43:57 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jan 14 18:44:22 2011 +0100"
      },
      "message": "block: restore multiple bd_link_disk_holder() support\n\nCommit e09b457b (block: simplify holder symlink handling) incorrectly\nassumed that there is only one link at maximum.  dm may use multiple\nlinks and expects block layer to track reference count for each link,\nwhich is different from and unrelated to the exclusive device holder\nidentified by @holder when the device is opened.\n\nRemove the single holder assumption and automatic removal of the link\nand revive the per-link reference count tracking.  The code\nessentially behaves the same as before commit e09b457b sans the\nunnecessary kobject reference count dancing.\n\nWhile at it, note that this facility should not be used by anyone else\nthan the current ones.  Sysfs symlinks shouldn\u0027t be abused like this\nand the whole thing doesn\u0027t belong in the block layer at all.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Milan Broz \u003cmbroz@redhat.com\u003e\nCc: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: linux-raid@vger.kernel.org\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "509e4aef44eb10e4aef1f81c3c3ff1214671503b",
      "tree": "b90daecbc3d05787b0dd141e524b67d8579a6dfd",
      "parents": [
        "375b6f5a40a3d8373561a3dbeed440a845e6d379",
        "bf2cb0dab8c97f00a71875d9b13dbac17a2f47ca"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:30:20 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:30:20 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md:\n  md: Fix removal of extra drives when converting RAID6 to RAID5\n  md: range check slot number when manually adding a spare.\n  md/raid5: handle manually-added spares in start_reshape.\n  md: fix sync_completed reporting for very large drives (\u003e2TB)\n  md: allow suspend_lo and suspend_hi to decrease as well as increase.\n  md: Don\u0027t let implementation detail of curr_resync leak out through sysfs.\n  md: separate meta and data devs\n  md-new-param-to_sync_page_io\n  md-new-param-to-calc_dev_sboffset\n  md: Be more careful about clearing flags bit in -\u003erecovery\n  md: md_stop_writes requires mddev_lock.\n  md/raid5: use sysfs_notify_dirent_safe to avoid NULL pointer\n  md: Ensure no IO request to get md device before it is properly initialised.\n  md: Fix single printks with multiple KERN_\u003clevel\u003es\n  md: fix regression resulting in delays in clearing bits in a bitmap\n  md: fix regression with re-adding devices to arrays with no metadata\n"
    },
    {
      "commit": "bf2cb0dab8c97f00a71875d9b13dbac17a2f47ca",
      "tree": "68587eaff5c7cb85628c1f68aecb19f2a18c8f6e",
      "parents": [
        "ba1b41b6b4e30cb66ae2775faadea05cae3ce61c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: Fix removal of extra drives when converting RAID6 to RAID5\n\nWhen a RAID6 is converted to a RAID5, the extra drive should\nbe discarded.  However it isn\u0027t due to a typo in a comparison.\n\nThis bug was introduced in commit e93f68a1fc6 in 2.6.35-rc4\nand is suitable for any -stable since than.\n\nAs the extra drive is not removed, the \u0027degraded\u0027 counter is wrong and\nso the RAID5 will not respond correctly to a subsequent failure.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ba1b41b6b4e30cb66ae2775faadea05cae3ce61c",
      "tree": "02da80f72095418dd1a08661f59c24607029a8e7",
      "parents": [
        "1a940fcee31ec6c18c2f24dbdad31d54e4c35048"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: range check slot number when manually adding a spare.\n\nWhen adding a spare to an active array, we should check the slot\nnumber, but allow it to be larger than raid_disks if a reshape\nis being prepared.\n\nApply the same test when adding a device to an\narray-under-construction.  It already had most of the test in place,\nbut not quite all.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "13ae864bc86ff65547ffe7e966b6433a0d0edb8a",
      "tree": "6e5ca3a6736b75fa0db8415c1e3a2506af6ab9cc",
      "parents": [
        "23ddff3792f61193695114c68d6ebd57e974c4f8"
      ],
      "author": {
        "name": "Rémi Rérolle",
        "email": "rrerolle@lacie.com",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: fix sync_completed reporting for very large drives (\u003e2TB)\n\nThe values exported in the sync_completed file are unsigned long, which\noverflows with very large drives, resulting in wrong values reported.\n\nSince sync_completed uses sectors as unit, we\u0027ll start getting wrong\nvalues with components larger than 2TB.\n\nThis patch simply replaces the use of unsigned long by unsigned long long.\n\nSigned-off-by: Rémi Rérolle \u003crrerolle@lacie.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "23ddff3792f61193695114c68d6ebd57e974c4f8",
      "tree": "5b16efbc900648c8ef402a41cb308759a2706c61",
      "parents": [
        "75d3da43cb74d2e5fb87816dbfecb839cd97c7f4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: allow suspend_lo and suspend_hi to decrease as well as increase.\n\nThe sysfs attributes \u0027suspend_lo\u0027 and \u0027suspend_hi\u0027 describe a region\nto which read/writes are suspended so that the under lying data can be\nmanipulated without user-space noticing.\nCurrently the window they describe can only move forwards along the\ndevice.  However this is an unnecessary restriction which will cause\nproblems with planned developments.\nSo relax this restriction and allow these endpoints to move\narbitrarily.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "75d3da43cb74d2e5fb87816dbfecb839cd97c7f4",
      "tree": "27074aceb801ada315329591f32c938b36150ed9",
      "parents": [
        "a6ff7e089c7fca813c956ccbed824087e89a3a49"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: Don\u0027t let implementation detail of curr_resync leak out through sysfs.\n\nmddev-\u003ecurr_resync has artificial values of \u00271\u0027 and \u00272\u0027 which are used\nby the code which ensures only one resync is happening at a time on\nany given device.\n\nThese values are internal and should never be exposed to user-space\n(except when translated appropriately as in the \u0027pending\u0027 status in\n/proc/mdstat).\n\nUnfortunately they are as -\u003ecurr_resync is assigned to\n-\u003ecurr_resync_completed and that value is directly visible through\nsysfs.\n\nSo change the assignments to -\u003ecurr_resync_completed to get the same\nvalued from elsewhere in a form that doesn\u0027t have the magic \u00271\u0027 or \u00272\u0027\nvalues.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a6ff7e089c7fca813c956ccbed824087e89a3a49",
      "tree": "6537f72a2431c30601736676e9b1f89a7f1fe52e",
      "parents": [
        "ccebd4c4159462c96397ae9af9c667bb394d7b70"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: separate meta and data devs\n\nAllow the metadata to be on a separate device from the\ndata.\n\nThis doesn\u0027t mean the data and metadata will by on separate\nphysical devices - it simply gives device-mapper and userspace\ntools more flexibility.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ccebd4c4159462c96397ae9af9c667bb394d7b70",
      "tree": "04554f0e7607d906c6b09f31a995fca0dd40c5b5",
      "parents": [
        "57b2caa394393f8870ed41bdcc38a7542593018f"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md-new-param-to_sync_page_io\n\nAdd new parameter to \u0027sync_page_io\u0027.\n\nThe new parameter allows us to distinguish between metadata and data\noperations.  This becomes important later when we add the ability to\nuse separate devices for data and metadata.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\n"
    },
    {
      "commit": "57b2caa394393f8870ed41bdcc38a7542593018f",
      "tree": "22579497603304e9694986a4cac2cd360c993fa9",
      "parents": [
        "7ebc0be7fff4146e87b4078f054977b72998abd3"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md-new-param-to-calc_dev_sboffset\n\nWhen we allow for separate devices for data and metadata\nin a later patch, we will need to be able to calculate\nthe superblock offset based on more than the bdev.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\n"
    },
    {
      "commit": "7ebc0be7fff4146e87b4078f054977b72998abd3",
      "tree": "f5b5b40674ec4e221e77eb1f9e4f36138f75df3c",
      "parents": [
        "defad61a5b16352d3e22a04d4c930a5b5a7fd1f0"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md: Be more careful about clearing flags bit in -\u003erecovery\n\nSetting -\u003erecovery to 0 is generally not a good idea as it could clear\nbits that shouldn\u0027t be cleared.  In particular, MD_RECOVERY_FROZEN\nshould only be cleared on explicit request from user-space.\n\nSo when we need to clear things, just clear the bits that need\nclearing.\n\nAs there are a few different places which reap a resync process - and\nsome do an incomplte job - factor out the code for doing the from\nmd_check_recovery and call that function instead of open coding part\nof it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReported-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\n"
    },
    {
      "commit": "defad61a5b16352d3e22a04d4c930a5b5a7fd1f0",
      "tree": "c353bd036c12011d0eee7f7924c230888fd34b0a",
      "parents": [
        "43c73ca43b3e03bb228ff9350b6b44d0e560f262"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md: md_stop_writes requires mddev_lock.\n\nAs md_stop_writes manipulates the sync_thread and calls md_update_sb,\nit need to be called with mddev_lock held.\n\nIn all internal cases it is, but the symbol is exported for dm-raid to\ncall and in that case the lock won\u0027t be help.\nDo make an exported version which takes the lock, and an internal\nversion which does not.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0ca69886a8273ac1350143d562280bfcbe4760dc",
      "tree": "98acbe1e5682e4455bf7d2e7a9413b5a3fd43b2a",
      "parents": [
        "067032bc628598606056412594042564fcf09e22"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md: Ensure no IO request to get md device before it is properly initialised.\n\nWhen an md device is in the process of coming on line it is possible\nfor an IO request (typically a partition table probe) to get through\nbefore the array is fully initialised, which can cause unexpected\nbehaviour (e.g. a crash).\n\nSo explicitly record when the array is ready for IO and don\u0027t allow IO\nthrough until then.\n\nThere is no possibility for a similar problem when the array is going\noff-line as there must only be one \u0027open\u0027 at that time, and it is busy\noff-lining the array and so cannot send IO requests.  So no memory\nbarrier is needed in md_stop()\n\nThis has been a bug since commit 409c57f3801 in 2.6.30 which\nintroduced md_make_request.  Before then, each personality would\nregister its own make_request_fn when it was ready.\nThis is suitable for any stable kernel from 2.6.30.y onwards.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReported-by:  \"Hawrylewicz Czarnowski, Przemyslaw\" \u003cprzemyslaw.hawrylewicz.czarnowski@intel.com\u003e\n"
    },
    {
      "commit": "6c9879101442b08581e8a0e3ae6b7f643a78fd63",
      "tree": "bfe780d4e09896988fe367aa329a94daf55163c9",
      "parents": [
        "bf572541ab44240163eaa2d486b06f306a31d45a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:13:53 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:13:53 2011 +1100"
      },
      "message": "md: fix regression resulting in delays in clearing bits in a bitmap\n\ncommit 589a594be1fb (2.6.37-rc4) fixed a problem were md_thread would\nsometimes call the -\u003erun function at a bad time.\n\nIf an error is detected during array start up after the md_thread has\nbeen started, the md_thread is killed.  This resulted in the -\u003erun\nfunction being called once.  However the array may not be in a state\nthat it is safe to call -\u003erun.\n\nHowever the fix imposed meant that  -\u003erun was not called on a timeout.\nThis means that when an array goes idle, bitmap bits do not get\ncleared promptly.  While the array is busy the bits will still be\ncleared when appropriate so this is not very serious.  There is no\nrisk to data.\n\nChange the test so that we only avoid calling -\u003erun when the thread\nis being stopped.  This more explicitly addresses the problem situation.\n\nThis is suitable for 2.6.37-stable and any -stable kernel to which\n589a594be1fb was applied.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "275220f0fcff1adf28a717076e00f575edf05fda",
      "tree": "d249bccc80c64443dab211639050c4fb14332648",
      "parents": [
        "fe3c560b8a22cb28e54fe8950abef38e88d75831",
        "81c5e2ae33c4b19e53966b427e33646bf6811830"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "message": "Merge branch \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block: (43 commits)\n  block: ensure that completion error gets properly traced\n  blktrace: add missing probe argument to block_bio_complete\n  block cfq: don\u0027t use atomic_t for cfq_group\n  block cfq: don\u0027t use atomic_t for cfq_queue\n  block: trace event block fix unassigned field\n  block: add internal hd part table references\n  block: fix accounting bug on cross partition merges\n  kref: add kref_test_and_get\n  bio-integrity: mark kintegrityd_wq highpri and CPU intensive\n  block: make kblockd_workqueue smarter\n  Revert \"sd: implement sd_check_events()\"\n  block: Clean up exit_io_context() source code.\n  Fix compile warnings due to missing removal of a \u0027ret\u0027 variable\n  fs/block: type signature of major_to_index(int) to major_to_index(unsigned)\n  block: convert !IS_ERR(p) \u0026\u0026 p to !IS_ERR_NOR_NULL(p)\n  cfq-iosched: don\u0027t check cfqg in choose_service_tree()\n  fs/splice: Pull buf-\u003eops-\u003econfirm() from splice_from_pipe actors\n  cdrom: export cdrom_check_events()\n  sd: implement sd_check_events()\n  sr: implement sr_check_events()\n  ...\n"
    },
    {
      "commit": "bf572541ab44240163eaa2d486b06f306a31d45a",
      "tree": "ef9630d692ce3681bf226877056622afd070f1c0",
      "parents": [
        "3c0eee3fe6a3a1c745379547c7e7c904aa64f6d5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jan 12 09:03:35 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jan 12 09:03:35 2011 +1100"
      },
      "message": "md: fix regression with re-adding devices to arrays with no metadata\n\nCommit 1a855a0606 (2.6.37-rc4) fixed a problem where devices were\nre-added when they shouldn\u0027t be but caused a regression in a less\ncommon case that means sometimes devices cannot be re-added when they\nshould be.\n\nIn particular, when re-adding a device to an array without metadata\nwe should always access the device, but after the above commit we\ndidn\u0027t.\n\nThis patch sets the In_sync flag in that case so that the re-add\nsucceeds.\n\nThis patch is suitable for any -stable kernel to which 1a855a0606 was\napplied.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7f8635cc9e66a26d7280ba680b044fa2f65104af",
      "tree": "0d8506e86d07e15c473aca1a09af7ad6ff7d8b49",
      "parents": [
        "3cb50ddf97a0a1ca4c68bc12fa1e727a6b45fbf2",
        "0fc13c8995cd96f4123de400c71c223d80400ed9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 20 09:19:46 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 20 09:19:46 2010 -0800"
      },
      "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  cciss: fix cciss_revalidate panic\n  block: max hardware sectors limit wrapper\n  block: Deprecate QUEUE_FLAG_CLUSTER and use queue_limits instead\n  blk-throttle: Correct the placement of smp_rmb()\n  blk-throttle: Trim/adjust slice_end once a bio has been dispatched\n  block: check for proper length of iov entries earlier in blk_rq_map_user_iov()\n  drbd: fix for spin_lock_irqsave in endio callback\n  drbd: don\u0027t recvmsg with zero length\n"
    },
    {
      "commit": "e692cb668fdd5a712c6ed2a2d6f2a36ee83997b4",
      "tree": "accf682fe5e1388f305b5fc364a931dfda5f3fb9",
      "parents": [
        "04a6b516cdc6efc2500b52a540cf65be8c5aaf9e"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Dec 01 19:41:49 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Dec 17 08:35:53 2010 +0100"
      },
      "message": "block: Deprecate QUEUE_FLAG_CLUSTER and use queue_limits instead\n\nWhen stacking devices, a request_queue is not always available. This\nforced us to have a no_cluster flag in the queue_limits that could be\nused as a carrier until the request_queue had been set up for a\nmetadevice.\n\nThere were several problems with that approach. First of all it was up\nto the stacking device to remember to set queue flag after stacking had\ncompleted. Also, the queue flag and the queue limits had to be kept in\nsync at all times. We got that wrong, which could lead to us issuing\ncommands that went beyond the max scatterlist limit set by the driver.\n\nThe proper fix is to avoid having two flags for tracking the same thing.\nWe deprecate QUEUE_FLAG_CLUSTER and use the queue limit directly in the\nblock layer merging functions. The queue_limit \u0027no_cluster\u0027 is turned\ninto \u0027cluster\u0027 to avoid double negatives and to ease stacking.\nClustering defaults to being enabled as before. The queue flag logic is\nremoved from the stacking function, and explicitly setting the cluster\nflag is no longer necessary in DM and MD.\n\nReported-by: Ed Lin \u003ced.lin@promise.com\u003e\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "589a594be1fb8815b3f18e517be696c48664f728",
      "tree": "9de6f6b4f9244802ccf77312f7fba8612dd13a75",
      "parents": [
        "1a855a0606653d2d82506281e2c686bacb4b2f45"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 09 17:02:14 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 09 17:02:14 2010 +1100"
      },
      "message": "md: protect against NULL reference when waiting to start a raid10.\n\nWhen we fail to start a raid10 for some reason, we call\nmd_unregister_thread to kill the thread that was created.\n\nUnfortunately md_thread() will then make one call into the handler\n(raid10d) even though md_wakeup_thread has not been called.  This is\nnot safe and as md_unregister_thread is called after mddev-\u003eprivate\nhas been set to NULL, it will definitely cause a NULL dereference.\n\nSo fix this at both ends:\n - md_thread should only call the handler if THREAD_WAKEUP has been\n   set.\n - raid10 should call md_unregister_thread before setting things\n   to NULL just like all the other raid modules do.\n\nThis is applicable to 2.6.35 and later.\n\nCc: stable@kernel.org\nReported-by: \"Citizen\" \u003ccitizen_lee@thecus.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1a855a0606653d2d82506281e2c686bacb4b2f45",
      "tree": "7eeca410e738491318c0d80bd0a0940c392e513f",
      "parents": [
        "a035fc3e2531703b539f23bec4ca7943cfc69349"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 09 16:36:28 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 09 16:36:28 2010 +1100"
      },
      "message": "md: fix bug with re-adding of partially recovered device.\n\nWith v0.90 metadata, a hot-spare does not become a full member of the\narray until recovery is complete.  So if we re-add such a device to\nthe array, we know that all of it is as up-to-date as the event count\nwould suggest, and so it a bitmap-based recovery is possible.\n\nHowever with v1.x metadata, the hot-spare immediately becomes a full\nmember of the array, but it record how much of the device has been\nrecovered.  If the array is stopped and re-assembled recovery starts\nfrom this point.\n\nWhen such a device is hot-added to an array we currently lose the \u0027how\nmuch is recovered\u0027 information and incorrectly included it as a full\nin-sync member (after bitmap-based fixup).\nThis is wrong and unsafe and could corrupt data.\n\nSo be more careful about setting saved_raid_disk - which is what\nguides the re-adding of devices back into an array.\nThe new code matches the code in slot_store which does a similar\nthing, which is encouraging.\n\nThis is suitable for any -stable kernel.\n\nReported-by: \"Dailey, Nate\" \u003cNate.Dailey@stratus.com\u003e\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a035fc3e2531703b539f23bec4ca7943cfc69349",
      "tree": "f10e160ce65745fd7ac56838c491a45ae180cb1e",
      "parents": [
        "a7a07e69653acf8540daa1da053cd84bf86e8e66"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 09 16:17:51 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 09 16:17:51 2010 +1100"
      },
      "message": "md: fix possible deadlock in handling flush requests.\n\nAs recorded in\n    https://bugzilla.kernel.org/show_bug.cgi?id\u003d24012\n\nit is possible for a flush request through md to hang.  This is due to\nan interaction between the recursion avoidance in\ngeneric_make_request, the insistence in md of only having one flush\nactive at a time, and the possibility of dm (or md) submitting two\nflush requests to a device from the one generic_make_request.\n\nIf a generic_make_request call into dm causes two flush requests to be\nqueued (as happens if the dm table has two targets - they get one\neach), these two will be queued inside generic_make_request.\n\nAssume they are for the same md device.\nThe first is processed and causes 1 or more flush requests to be sent\nto lower devices.  These get queued within generic_make_request too.\nThen the second flush to the md device gets handled and it blocks\nwaiting for the first flush to complete.  But it won\u0027t complete until\nthe two lower-device requests complete, and they haven\u0027t even been\nsubmitted yet as they are on the generic_make_request queue.\n\nThe deadlock can be broken by using a separate thread to submit the\nrequests to lower devices.  md has such a thread readily available:\nmd_wq.\n\nSo use it to submit these requests.\n\nReported-by: Giacomo Catenazzi \u003ccate@cateee.net\u003e\nTested-by: Giacomo Catenazzi \u003ccate@cateee.net\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a7a07e69653acf8540daa1da053cd84bf86e8e66",
      "tree": "edeb5ec7fc686c8699193338d3c3964aeb6279a8",
      "parents": [
        "2b74e12e567feb4163e32815bce0be57489e73b9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 09 16:04:25 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 09 16:04:25 2010 +1100"
      },
      "message": "md: move code in to submit_flushes.\n\nsubmit_flushes is called from exactly one place.\nMove the code that is before and after that call into\nsubmit_flushes.\n\nThis has not functional change, but will make the next patch\nsmaller and easier to follow.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2b74e12e567feb4163e32815bce0be57489e73b9",
      "tree": "2eef8f977209a7e5ff88b4366bd72ccf59c8a987",
      "parents": [
        "be20e6c67b6c6024c19094d3447f144d118733b0"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 09 15:59:01 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Dec 09 15:59:01 2010 +1100"
      },
      "message": "md: remove handling of flush_pending in md_submit_flush_data\n\nNone of the functions called between setting flush_pending to 1, and\natomic_dec_and_test can change flush_pending, or will anything\nrunning in any other thread (as -\u003eflush_bio is not NULL).  So the\natomic_dec_and_test will always succeed.\nSo remove the atomic_sec and the atomic_dec_and_test.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f30195c50245d8ace628e1978b1daa8df86e7224",
      "tree": "edf4f91c4356c41d50fb07f15cebd1e6442538ad",
      "parents": [
        "d07335e51df0c6dec202d315fc4f1f7e100eec4e",
        "d4d77629953eabd3c14f6fa5746f6b28babfc55f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Nov 27 19:49:18 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Nov 27 19:49:18 2010 +0100"
      },
      "message": "Merge branch \u0027cleanup-bd_claim\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/misc into for-2.6.38/core\n"
    },
    {
      "commit": "be20e6c67b6c6024c19094d3447f144d118733b0",
      "tree": "170f7a810d5947cdba7edc965676ad7d5ea8948c",
      "parents": [
        "8f9e0ee38f75d4740daa9e42c8af628d33d19a02"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Wed Nov 24 16:40:33 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Nov 24 16:40:33 2010 +1100"
      },
      "message": "md: Call blk_queue_flush() to establish flush/fua support\n\nBefore 2.6.37, the md layer had a mechanism for catching I/Os with the\nbarrier flag set, and translating the barrier into barriers for all\nthe underlying devices.  With 2.6.37, I/O barriers have become plain\nold flushes, and the md code was updated to reflect this.  However,\none piece was left out -- the md layer does not tell the block layer\nthat it supports flushes or FUA access at all, which results in md\nsilently dropping flush requests.\n\nSince the support already seems there, just add this one piece of\nbookkeeping.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c26a44ed1e552aaa1d4ceb71842002d235fe98d7",
      "tree": "47e0d62c2693ae60ae7a5bc44c2dfcd6a2f7e47e",
      "parents": [
        "3561d43fd289f590fdae672e5eb831b8d5cf0bf6"
      ],
      "author": {
        "name": "Justin Maggard",
        "email": "jmaggard10@gmail.com",
        "time": "Wed Nov 24 16:36:17 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Nov 24 16:36:17 2010 +1100"
      },
      "message": "md: fix return value of rdev_size_change()\n\nWhen trying to grow an array by enlarging component devices,\nrdev_size_store() expects the return value of rdev_size_change() to be\nin sectors, but the actual value is returned in KBs.\n\nThis functionality was broken by commit\n     dd8ac336c13fd8afdb082ebacb1cddd5cf727889\nso this patch is suitable for any kernel since 2.6.30.\n\nCc: stable@kernel.org\nSigned-off-by: Justin Maggard \u003cjmaggard10@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d4d77629953eabd3c14f6fa5746f6b28babfc55f",
      "tree": "38cce0d4764ecb34a9f7f49332959780e28bb786",
      "parents": [
        "75f1dc0d076d1c1168f2115f1941ea627d38bd5a"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:18 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:18 2010 +0100"
      },
      "message": "block: clean up blkdev_get() wrappers and their users\n\nAfter recent blkdev_get() modifications, open_by_devnum() and\nopen_bdev_exclusive() are simple wrappers around blkdev_get().\nReplace them with blkdev_get_by_dev() and blkdev_get_by_path().\n\nblkdev_get_by_dev() is identical to open_by_devnum().\nblkdev_get_by_path() is slightly different in that it doesn\u0027t\nautomatically add %FMODE_EXCL to @mode.\n\nAll users are converted.  Most conversions are mechanical and don\u0027t\nintroduce any behavior difference.  There are several exceptions.\n\n* btrfs now sets FMODE_EXCL in btrfs_device-\u003emode, so there\u0027s no\n  reason to OR it explicitly on blkdev_put().\n\n* gfs2, nilfs2 and the generic mount_bdev() now set FMODE_EXCL in\n  sb-\u003es_mode.\n\n* With the above changes, sb-\u003es_mode now always should contain\n  FMODE_EXCL.  WARN_ON_ONCE() added to kill_block_super() to detect\n  errors.\n\nThe new blkdev_get_*() functions are with proper docbook comments.\nWhile at it, add function description to blkdev_get() too.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: Joern Engel \u003cjoern@lazybastard.org\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: KONISHI Ryusuke \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nCc: reiserfs-devel@vger.kernel.org\nCc: xfs-masters@oss.sgi.com\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e525fd89d380c4a94c0d63913a1dd1a593ed25e7",
      "tree": "d226ef40d3f99e42fcf272ad432585cbd641ebec",
      "parents": [
        "e09b457bdb7e8d23fc54dcef0930ac697d8de895"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "message": "block: make blkdev_get/put() handle exclusive access\n\nOver time, block layer has accumulated a set of APIs dealing with bdev\nopen, close, claim and release.\n\n* blkdev_get/put() are the primary open and close functions.\n\n* bd_claim/release() deal with exclusive open.\n\n* open/close_bdev_exclusive() are combination of open and claim and\n  the other way around, respectively.\n\n* bd_link/unlink_disk_holder() to create and remove holder/slave\n  symlinks.\n\n* open_by_devnum() wraps bdget() + blkdev_get().\n\nThe interface is a bit confusing and the decoupling of open and claim\nmakes it impossible to properly guarantee exclusive access as\nin-kernel open + claim sequence can disturb the existing exclusive\nopen even before the block layer knows the current open if for another\nexclusive access.  Reorganize the interface such that,\n\n* blkdev_get() is extended to include exclusive access management.\n  @holder argument is added and, if is @FMODE_EXCL specified, it will\n  gain exclusive access atomically w.r.t. other exclusive accesses.\n\n* blkdev_put() is similarly extended.  It now takes @mode argument and\n  if @FMODE_EXCL is set, it releases an exclusive access.  Also, when\n  the last exclusive claim is released, the holder/slave symlinks are\n  removed automatically.\n\n* bd_claim/release() and close_bdev_exclusive() are no longer\n  necessary and either made static or removed.\n\n* bd_link_disk_holder() remains the same but bd_unlink_disk_holder()\n  is no longer necessary and removed.\n\n* open_bdev_exclusive() becomes a simple wrapper around lookup_bdev()\n  and blkdev_get().  It also has an unexpected extra bdev_read_only()\n  test which probably should be moved into blkdev_get().\n\n* open_by_devnum() is modified to take @holder argument and pass it to\n  blkdev_get().\n\nMost of bdev open/close operations are unified into blkdev_get/put()\nand most exclusive accesses are tested atomically at the open time (as\nit should).  This cleans up code and removes some, both valid and\ninvalid, but unnecessary all the same, corner cases.\n\nopen_bdev_exclusive() and open_by_devnum() can use further cleanup -\nrename to blkdev_get_by_path() and blkdev_get_by_devt() and drop\nspecial features.  Well, let\u0027s leave them for another day.\n\nMost conversions are straight-forward.  drbd conversion is a bit more\ninvolved as there was some reordering, but the logic should stay the\nsame.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Ryusuke Konishi \u003ckonishi.ryusuke@lab.ntt.co.jp\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nCc: Peter Osterlund \u003cpetero2@telia.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Andreas Dilger \u003cadilger.kernel@dilger.ca\u003e\nCc: \"Theodore Ts\u0027o\" \u003ctytso@mit.edu\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: dm-devel@redhat.com\nCc: drbd-dev@lists.linbit.com\nCc: Leo Chen \u003cleochen@broadcom.com\u003e\nCc: Scott Branden \u003csbranden@broadcom.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nCc: Joern Engel \u003cjoern@logfs.org\u003e\nCc: reiserfs-devel@vger.kernel.org\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e09b457bdb7e8d23fc54dcef0930ac697d8de895",
      "tree": "41035bf61a8acb08292d01c0f66e5450502688af",
      "parents": [
        "37004c42f7240035bc2726c340c4efa726b4818e"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Sat Nov 13 11:55:17 2010 +0100"
      },
      "message": "block: simplify holder symlink handling\n\nCode to manage symlinks in /sys/block/*/{holders|slaves} are overly\ncomplex with multiple holder considerations, redundant extra\nreferences to all involved kobjects, unused generic kobject holder\nsupport and unnecessary mixup with bd_claim/release functionalities.\n\nStrip it down to what\u0027s necessary (single gendisk holder) and make it\nuse a separate interface.  This is a step for cleaning up\nbd_claim/release.  This patch makes dm-table slightly more complex but\nit will be simplified again with further changes.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: dm-devel@redhat.com\n"
    },
    {
      "commit": "77304d2abac6101f7249754ffdd4421258877ab0",
      "tree": "8ee5914529d70120528a630a8e904c22f8c4f98c",
      "parents": [
        "90fdb0b98a62d78a0650b9fd3ddc58a48f71d740"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Mon Nov 08 14:39:12 2010 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Nov 10 14:40:53 2010 +0100"
      },
      "message": "block: read i_size with i_size_read()\n\nConvert direct reads of an inode\u0027s i_size to using i_size_read().\n\ni_size_{read,write} use a seqcount to protect reads from accessing\nincomple writes.  Concurrent i_size_write()s require mutual exclussion\nto protect the seqcount that is used by i_size_{read,write}.  But\ni_size_read() callers do not need to use additional locking.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nAcked-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "a167f663243662aa9153c01086580a11cde9ffdc",
      "tree": "886e64787421bbf17a1eab7853d67258b598f050",
      "parents": [
        "2b193363ef68667ad717a6723165e0dccf99470f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 26 18:31:13 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:36:15 2010 +1100"
      },
      "message": "md: use separate bio pool for each md device.\n\nbio_clone and bio_alloc allocate from a common bio pool.\nIf an md device is stacked with other devices that use this pool, or under\nsomething like swap which uses the pool, then the multiple calls on\nthe pool can cause deadlocks.\n\nSo allocate a local bio pool for each md array and use that rather\nthan the common pool.\n\nThis pool is used both for regular IO and metadata updates.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2b193363ef68667ad717a6723165e0dccf99470f",
      "tree": "bd45d5186f0edf2b546c4503d794b479d126ad1f",
      "parents": [
        "1c4588e9c19cae6209a28c9da2f16a18a610b935"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 27 15:16:40 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:36:11 2010 +1100"
      },
      "message": "md: change type of first arg to sync_page_io.\n\nCurrently sync_page_io takes a \u0027bdev\u0027.\nEvery caller passes \u0027rdev-\u003ebdev\u0027.\nWe will soon want another field out of the rdev in sync_page_io,\nSo just pass the rdev instead of the bdev out of it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e804ac780e2f01cb3b914daca2fd4780d1743db1",
      "tree": "60447c76ea9dbaa526c8cabc14898e4df4498bf6",
      "parents": [
        "57dab0bdf689d42972975ec646d862b0900a4bf3"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Oct 15 15:36:08 2010 +0200"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:32:29 2010 +1100"
      },
      "message": "md: fix and update workqueue usage\n\nWorkqueue usage in md has two problems.\n\n* Flush can be used during or depended upon by memory reclaim, but md\n  uses the system workqueue for flush_work which may lead to deadlock.\n\n* md depends on flush_scheduled_work() to achieve exclusion against\n  completion of removal of previous instances.  flush_scheduled_work()\n  may incur unexpected amount of delay and is scheduled to be removed.\n\nThis patch adds two workqueues to md - md_wq and md_misc_wq.  The\nformer is guaranteed to make forward progress under memory pressure\nand serves flush_work.  The latter serves as the flush domain for\nother works.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4b532c9b8c87eb8e51605c4d08dfb5139c758dc5",
      "tree": "14d4813285bb4aff8e1d7a58a2fdfadd14803a9f",
      "parents": [
        "d97a41dc9c44f5829b7af7aa69fda10fd82b6b4e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:30:21 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:30:21 2010 +1100"
      },
      "message": "md: remove md_mutex locking.\n\nlock_kernel calls were recently pushed down into open/release\nfunctions.\nmd doesn\u0027t need that protection.\nThen the BKL calls were change to md_mutex.  We don\u0027t need those\neither.\nSo remove it all.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d97a41dc9c44f5829b7af7aa69fda10fd82b6b4e",
      "tree": "4a834cce291edf6798f57d925a6134c287de974d",
      "parents": [
        "12ba8d1e9262ce81a695795410bd9ee5c9407ba1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:30:20 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:30:20 2010 +1100"
      },
      "message": "md: Fix regression with raid1 arrays without persistent metadata.\n\nA RAID1 which has no persistent metadata, whether internal or\nexternal, will hang on the first write.\nThis is caused by commit  070dc6dd7103b6b3f7e4d46e754354a5c15f366e\nIn that case, MD_CHANGE_PENDING never gets cleared.\n\nSo during md_update_sb, is neither persistent or external,\nclear MD_CHANGE_PENDING.\n\nThis is suitable for 2.6.36-stable.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "a2887097f25cd38cadfc11d10769e2b349fb5eca",
      "tree": "cd4adcb305365d6ba9acd2c02d4eb9d0125c6f8d",
      "parents": [
        "8abfc6e7a45eb74e51904bbae676fae008b11366",
        "005a1d15f5a6b2bb4ada80349513effbf22b4588"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 17:07:18 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.37/barrier\u0027 of git://git.kernel.dk/linux-2.6-block: (46 commits)\n  xen-blkfront: disable barrier/flush write support\n  Added blk-lib.c and blk-barrier.c was renamed to blk-flush.c\n  block: remove BLKDEV_IFL_WAIT\n  aic7xxx_old: removed unused \u0027req\u0027 variable\n  block: remove the BH_Eopnotsupp flag\n  block: remove the BLKDEV_IFL_BARRIER flag\n  block: remove the WRITE_BARRIER flag\n  swap: do not send discards as barriers\n  fat: do not send discards as barriers\n  ext4: do not send discards as barriers\n  jbd2: replace barriers with explicit flush / FUA usage\n  jbd2: Modify ASYNC_COMMIT code to not rely on queue draining on barrier\n  jbd: replace barriers with explicit flush / FUA usage\n  nilfs2: replace barriers with explicit flush / FUA usage\n  reiserfs: replace barriers with explicit flush / FUA usage\n  gfs2: replace barriers with explicit flush / FUA usage\n  btrfs: replace barriers with explicit flush / FUA usage\n  xfs: replace barriers with explicit flush / FUA usage\n  block: pass gfp_mask and flags to sb_issue_discard\n  dm: convey that all flushes are processed as empty\n  ...\n"
    },
    {
      "commit": "c37927d4359e81b85de644f8fb08878717cf5f3f",
      "tree": "25dabf2d905e1410819d1bdaba0bf5f779100d3c",
      "parents": [
        "5704e44d283e907623e3775c1262f206a2c48cf3",
        "2a48fc0ab24241755dc93bfd4f01d68efab47f5a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:49:54 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:49:54 2010 -0700"
      },
      "message": "Merge branch \u0027trivial\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027trivial\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:\n  block: autoconvert trivial BKL users to private mutex\n  drivers: autoconvert trivial BKL users to private mutex\n  ipmi: autoconvert trivial BKL users to private mutex\n  mac: autoconvert trivial BKL users to private mutex\n  mtd: autoconvert trivial BKL users to private mutex\n  scsi: autoconvert trivial BKL users to private mutex\n\nFix up trivial conflicts (due to addition of private mutex right next to\ndeletion of a version string) in drivers/char/pcmcia/cm40[04]0_cs.c\n"
    },
    {
      "commit": "fa251f89903d73989e2f63e13d0eaed1e07ce0da",
      "tree": "3f7fe779941e3b6d67754dd7c44a32f48ea47c74",
      "parents": [
        "dd3932eddf428571762596e17b65f5dc92ca361b",
        "cd07202cc8262e1669edff0d97715f3dd9260917"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Oct 19 09:13:04 2010 +0200"
      },
      "message": "Merge branch \u0027v2.6.36-rc8\u0027 into for-2.6.37/barrier\n\nConflicts:\n\tblock/blk-core.c\n\tdrivers/block/loop.c\n\tmm/swapfile.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "2a48fc0ab24241755dc93bfd4f01d68efab47f5a",
      "tree": "fa9ae10ce89b26b7d8ae9ce24bdfda5e3007b763",
      "parents": [
        "613655fa39ff6957754fa8ceb8559980920eb8ee"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Jun 02 14:28:52 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Tue Oct 05 15:01:10 2010 +0200"
      },
      "message": "block: autoconvert trivial BKL users to private mutex\n\nThe block device drivers have all gained new lock_kernel\ncalls from a recent pushdown, and some of the drivers\nwere already using the BKL before.\n\nThis turns the BKL into a set of per-driver mutexes.\nStill need to check whether this is safe to do.\n\nfile\u003d$1\nname\u003d$2\nif grep -q lock_kernel ${file} ; then\n    if grep -q \u0027include.*linux.mutex.h\u0027 ${file} ; then\n            sed -i \u0027/include.*\u003clinux\\/smp_lock.h\u003e/d\u0027 ${file}\n    else\n            sed -i \u0027s/include.*\u003clinux\\/smp_lock.h\u003e.*$/include \u003clinux\\/mutex.h\u003e/g\u0027 ${file}\n    fi\n    sed -i ${file} \\\n        -e \"/^#include.*linux.mutex.h/,$ {\n                1,/^\\(static\\|int\\|long\\)/ {\n                     /^\\(static\\|int\\|long\\)/istatic DEFINE_MUTEX(${name}_mutex);\n\n} }\"  \\\n    -e \"s/\\(un\\)*lock_kernel\\\u003e[ ]*()/mutex_\\1lock(\\\u0026${name}_mutex)/g\" \\\n    -e \u0027/[      ]*cycle_kernel_lock();/d\u0027\nelse\n    sed -i -e \u0027/include.*\\\u003csmp_lock.h\\\u003e/d\u0027 ${file}  \\\n                -e \u0027/cycle_kernel_lock()/d\u0027\nfi\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\n"
    },
    {
      "commit": "ddcf3522cf03a147c867a2e0155761652dbd156a",
      "tree": "e5a47b7db19dc147df769b6cd8c82ac56964f6e1",
      "parents": [
        "126925c090155f13e90b9e7e8c4010e96027c00a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 08 16:48:17 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Sep 17 13:53:28 2010 +1000"
      },
      "message": "md: fix v1.x metadata update when a disk is missing.\n\nIf an array with 1.x metadata is assembled with the last disk missing,\nmd doesn\u0027t properly record the fact that the disk was missing.\n\nThis is unlikely to cause a real problem as the event count will be\ndifferent to the count on the missing disk so it won\u0027t be included in\nthe array.  However it could still cause confusion.\n\nSo make sure we clear all the relevant slots, not just the early ones.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "126925c090155f13e90b9e7e8c4010e96027c00a",
      "tree": "f433e7cbd6aba7096a88cc7286b05e0c467ee43d",
      "parents": [
        "9c03f1622af051004416dd3e24d8a0fa31e34178"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Sep 07 17:02:47 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Sep 17 13:53:13 2010 +1000"
      },
      "message": "md: call md_update_sb even for \u0027external\u0027 metadata arrays.\n\nNow that we depend on md_update_sb to clear variable bits in\nmddev-\u003eflags (rather than trying not to set them) it is important to\nalways call md_update_sb when appropriate.\n\nmd_check_recovery has this job but explicitly avoids it for -\u003eexternal\nmetadata arrays.  This is not longer appropraite, or needed.\n\nHowever we do want to avoid taking the mddev lock if only\nMD_CHANGE_PENDING is set as that is not cleared by md_update_sb for\nexternal-metadata arrays.\n\nReported-by:  \"Kwolek, Adam\" \u003cadam.kwolek@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e9c7469bb4f502dafc092166201bea1ad5fc0fbf",
      "tree": "04202b0bb88623d3005c909eaafcb280778902da",
      "parents": [
        "7bc9fddab074d6bb630344e1969e28d20b140621"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:18 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:38 2010 +0200"
      },
      "message": "md: implment REQ_FLUSH/FUA support\n\nThis patch converts md to support REQ_FLUSH/FUA instead of now\ndeprecated REQ_HARDBARRIER.  In the core part (md.c), the following\nchanges are notable.\n\n* Unlike REQ_HARDBARRIER, REQ_FLUSH/FUA don\u0027t interfere with\n  processing of other requests and thus there is no reason to mark the\n  queue congested while FLUSH/FUA is in progress.\n\n* REQ_FLUSH/FUA failures are final and its users don\u0027t need retry\n  logic.  Retry logic is removed.\n\n* Preflush needs to be issued to all member devices but FUA writes can\n  be handled the same way as other writes - their processing can be\n  deferred to request_queue of member devices.  md_barrier_request()\n  is renamed to md_flush_request() and simplified accordingly.\n\nFor linear, raid0 and multipath, the core changes are enough.  raid1,\n5 and 10 need the following conversions.\n\n* raid1: Handling of FLUSH/FUA bio\u0027s can simply be deferred to\n  request_queues of member devices.  Barrier related logic removed.\n\n* raid5: Queue draining logic dropped.  FUA bit is propagated through\n  biodrain and stripe resconstruction such that all the updated parts\n  of the stripe are written out with FUA writes if any of the dirtying\n  writes was FUA.  preread_active_stripes handling in make_request()\n  is updated as suggested by Neil Brown.\n\n* raid10: FUA bit needs to be propagated to write clones.\n\nlinear, raid0, 1, 5 and 10 tested.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "070dc6dd7103b6b3f7e4d46e754354a5c15f366e",
      "tree": "173e72d08b2070d496c203a6d5156b9a2ad2808c",
      "parents": [
        "bd52b746262c8d77e73903d6608014fb2fcdcd9d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 30 17:33:34 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 30 18:06:21 2010 +1000"
      },
      "message": "md: resolve confusion of MD_CHANGE_CLEAN\n\nMD_CHANGE_CLEAN is used for two different purposes and this leads to\nconfusion.\nOne of the purposes is largely mirrored by MD_CHANGE_PENDING which is\nnot used for anything else, so have MD_CHANGE_PENDING take over that\npurpose fully.\n\nThe two purposes are:\n 1/ tell md_update_sb that an update is needed and that it is just a\n   clean/dirty transition.\n 2/ tell user-space that an transition from clean to dirty is pending\n    (something wants to write), and tell te kernel (by clearin the\n    flag) that the transition is OK.\n\nThe first purpose remains wit MD_CHANGE_CLEAN, the second is moved\nfully to MD_CHANGE_PENDING.\n\nThis means that various places which conditionally set or cleared\nMD_CHANGE_CLEAN no longer need to be conditional.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bd52b746262c8d77e73903d6608014fb2fcdcd9d",
      "tree": "5ee5789f1aae4b238d42c05672db90886b19280e",
      "parents": [
        "7c44ece988a3419e51c833cf14be186a22224dd1"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Aug 30 17:33:33 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 30 18:06:20 2010 +1000"
      },
      "message": "md: don\u0027t clear MD_CHANGE_CLEAN in md_update_sb() for external arrays\n\nIf this bit is cleared in md_update_sb() the kernel will allow writes to the\narray if userspace triggers md_allow_write(), e.g. through stripe_cache_size,\nwhen mdmon is not active.  When mdmon is active the array transitions to\nactive-idle bypassing write-pending, setting up a race for mdmon to set the\narray clean before a write arrives.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3a3a5ddb7a0f43c3dd0f98673f3d930a456725f8",
      "tree": "fa1e33c011c9f6350ce5118b89deafacbb1e0f2b",
      "parents": [
        "da5cabf80e2433131bf0ed8993abc0f7ea618c73"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 16 18:09:31 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Aug 18 11:39:38 2010 +1000"
      },
      "message": "Update recovery_offset even when external metadata is used.\n\nThe update of -\u003erecovery_offset in sync_sbs is appropriate even then external\nmetadata is in use.  However sync_sbs is only called when native\nmetadata is used.\n\nSo move that update in to the top of md_update_sb (which is the only\ncaller of sync_sbs) before the test on -\u003eexternal.\n\nThis moves the update out of -\u003ewrite_lock protection, but those fields\nonly need -\u003ereconfig_mutex protection which they still have.\n\nAlso move the test on -\u003epersistent up to where -\u003eexternal is set as\nfor metadata update purposes they are the same.\n\nClear MD_CHANGE_DEVS and MD_CHANGE_CLEAN as they can only be confusing\nif -\u003eexternal is set or -\u003epersistent isn\u0027t.\n\nFinally move the update of -\u003eutime down as it is only relevent (like\nthe -\u003eevents update) for native metadata.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReported-by: \"Kwolek, Adam\" \u003cadam.kwolek@intel.com\u003e\n"
    },
    {
      "commit": "3d30701b58970425e1d45994d6cb82f828924fdd",
      "tree": "8b14cf462628bebf8548c1b8c205a674564052d1",
      "parents": [
        "8cbd84f2dd4e52a8771b191030c374ba3e56d291",
        "fd8aa2c1811bf60ccb2d5de0579c6f62aec1772d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 15:38:19 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 15:38:19 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md: (24 commits)\n  md: clean up do_md_stop\n  md: fix another deadlock with removing sysfs attributes.\n  md: move revalidate_disk() back outside open_mutex\n  md/raid10: fix deadlock with unaligned read during resync\n  md/bitmap:  separate out loading a bitmap from initialising the structures.\n  md/bitmap: prepare for storing write-intent-bitmap via dm-dirty-log.\n  md/bitmap: optimise scanning of empty bitmaps.\n  md/bitmap: clean up plugging calls.\n  md/bitmap: reduce dependence on sysfs.\n  md/bitmap: white space clean up and similar.\n  md/raid5: export raid5 unplugging interface.\n  md/plug: optionally use plugger to unplug an array during resync/recovery.\n  md/raid5: add simple plugging infrastructure.\n  md/raid5: export is_congested test\n  raid5: Don\u0027t set read-ahead when there is no queue\n  md: add support for raising dm events.\n  md: export various start/stop interfaces\n  md: split out md_rdev_init\n  md: be more careful setting MD_CHANGE_CLEAN\n  md/raid5: ensure we create a unique name for kmem_cache when mddev has no gendisk\n  ...\n"
    },
    {
      "commit": "6e17b0276452912cb13445e5ea552b599984675f",
      "tree": "1ccac9c3d01f7ea8c6c0061948b92c901253e676",
      "parents": [
        "bb4f1e9d0e2ef93de8e36ca0f5f26625fcd70b7d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Aug 07 21:41:19 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sun Aug 08 21:22:45 2010 +1000"
      },
      "message": "md: clean up do_md_stop\n\nThere is only one error exit from do_md_stop, so make that more\nexplicit and discard the \u0027err\u0027 variable.\nAlso drop the \u0027revalidate\u0027 variable by moving the unlock calls around.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bb4f1e9d0e2ef93de8e36ca0f5f26625fcd70b7d",
      "tree": "7c7edc0d5fa2b5702358f11396d52d07183708c0",
      "parents": [
        "147e0b6a639ac581ca3bf627bedc3f4a6d3eca66"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sun Aug 08 21:18:03 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sun Aug 08 21:21:27 2010 +1000"
      },
      "message": "md: fix another deadlock with removing sysfs attributes.\n\nMove the deletion of sysfs attributes from reconfig_mutex to\nopen_mutex didn\u0027t really help as a process can try to take\nopen_mutex while holding reconfig_mutex, so the same deadlock can\nhappen, just requiring one more process to be involved in the chain.\n\nI looks like I cannot easily use locking to wait for the sysfs\ndeletion to complete, so don\u0027t.\n\nThe only things that we cannot do while the deletions are still\npending is other things which can change the sysfs namespace: run,\ntakeover, stop.  Each of these can fail with -EBUSY.\nSo set a flag while doing a sysfs deletion, and fail run, takeover,\nstop if that flag is set.\n\nThis is suitable for 2.6.35.x\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "147e0b6a639ac581ca3bf627bedc3f4a6d3eca66",
      "tree": "95ca7cb3b2f06586d678ec33c0e9910d11f3af42",
      "parents": [
        "51e9ac77035a3dfcb6fc0a88a0d80b6f99b5edb1"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Aug 06 18:01:59 2010 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sun Aug 08 21:20:17 2010 +1000"
      },
      "message": "md: move revalidate_disk() back outside open_mutex\n\nCommit b821eaa5 \"md: remove -\u003echanged and related code\" moved\nrevalidate_disk() under open_mutex, and lockdep noticed.\n\n[ INFO: possible circular locking dependency detected ]\n2.6.32-mdadm-locking #1\n-------------------------------------------------------\nmdadm/3640 is trying to acquire lock:\n (\u0026bdev-\u003ebd_mutex){+.+.+.}, at: [\u003cffffffff811acecb\u003e] revalidate_disk+0x5b/0x90\n\nbut task is already holding lock:\n (\u0026mddev-\u003eopen_mutex){+.+...}, at: [\u003cffffffffa055e07a\u003e] do_md_stop+0x4a/0x4d0 [md_mod]\n\nwhich lock already depends on the new lock.\n\nIt is suitable for 2.6.35.x\n\nCc: \u003cstable@kernel.org\u003e\nReported-by: Przemyslaw Czarnowski \u003cprzemyslaw.hawrylewicz.czarnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6e9624b8caec290d28b4c6d9ec75749df6372b87",
      "tree": "47225b544e1da82742795553dc4e8aa70c17afdc",
      "parents": [
        "8a6cfeb6deca3a8fefd639d898b0d163c0b5d368"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sat Aug 07 18:25:34 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:25:34 2010 +0200"
      },
      "message": "block: push down BKL into .open and .release\n\nThe open and release block_device_operations are currently\ncalled with the BKL held. In order to change that, we must\nfirst make sure that all drivers that currently rely\non this have no regressions.\n\nThis blindly pushes the BKL into all .open and .release\noperations for all block drivers to prepare for the\nnext step. The drivers can subsequently replace the BKL\nwith their own locks or remove it completely when it can\nbe shown that it is not needed.\n\nThe functions blkdev_get and blkdev_put are the only\nremaining users of the big kernel lock in the block\nlayer, besides a few uses in the ioctl code, none\nof which need to serialize with blkdev_{get,put}.\n\nMost of these two functions is also under the protection\nof bdev-\u003ebd_mutex, including the actual calls to\n-\u003eopen and -\u003erelease, and the common code does not\naccess any global data structures that need the BKL.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7b6d91daee5cac6402186ff224c3af39d79f4a0e",
      "tree": "b1518cf0b6c301178e0a320f80610cd5b3aa7625",
      "parents": [
        "33659ebbae262228eef4e0fe990f393d1f0ed941"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "message": "block: unify flags for struct bio and struct request\n\nRemove the current bio flags and reuse the request flags for the bio, too.\nThis allows to more easily trace the type of I/O from the filesystem\ndown to the block driver.  There were two flags in the bio that were\nmissing in the requests:  BIO_RW_UNPLUG and BIO_RW_AHEAD.  Also I\u0027ve\nrenamed two request flags that had a superflous RW in them.\n\nNote that the flags are in bio.h despite having the REQ_ name - as\nblkdev.h includes bio.h that is the only way to go for now.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "69e51b449d383e97b1b9f890f8378c96e9e17346",
      "tree": "650123fa4f08e8fa7f348a4ca875c59c129e5d84",
      "parents": [
        "e384e58549a2e9a83071ad80280c1a9053cfd84c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:35 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 13:21:34 2010 +1000"
      },
      "message": "md/bitmap:  separate out loading a bitmap from initialising the structures.\n\ndm makes this distinction between -\u003ectr and -\u003eresume, so we need to\ntoo.\n\nAlso get the new bitmap_load to clear out the bitmap first, as this is\nmost consistent with the dm suspend/resume approach\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b63d7c2e29bf9cc94989806f2df0cfca4976b830",
      "tree": "fdb82527ca458769d3c7381375873931bfb23b19",
      "parents": [
        "5ff5afffe6527543866a47ffab12769427283917"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:33 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 13:21:32 2010 +1000"
      },
      "message": "md/bitmap: clean up plugging calls.\n\n1/ use md_unplug in bitmap.c as we will soon be using bitmaps under\n  arrays with no queue attached.\n\n2/ Don\u0027t bother plugging the queue when we set a bit in the bitmap.\n   The reason for this was to encourage as many bits as possible to\n   get set before we unplug and write stuff out.\n   However every personality already plugs the queue after\n   bitmap_startwrite either directly (raid1/raid10) or be setting\n   STRIPE_BIT_DELAY which causes the queue to be plugged later\n   (raid5).\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "252ac5221a71be72b7e7c7b7482af91e9c962e8c",
      "tree": "cb9542b1391dabc136ce0052eb28948e77a6e2e5",
      "parents": [
        "2ac8740151b082f045e58010eb92560c3a23a0e9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:29 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:53:08 2010 +1000"
      },
      "message": "md/plug: optionally use plugger to unplug an array during resync/recovery.\n\nIf an array doesn\u0027t have a \u0027queue\u0027 then md_do_sync cannot\nunplug it.\nIn that case it will have a \u0027plugger\u0027, so make that available\nto the mddev, and use it to unplug the array if needed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2ac8740151b082f045e58010eb92560c3a23a0e9",
      "tree": "39bff686e28f033339c6d1cf47042b6dc1586c2f",
      "parents": [
        "11d8a6e3719519fbc0e2c9d61b6fa931b84bf813"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:29 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:53:08 2010 +1000"
      },
      "message": "md/raid5: add simple plugging infrastructure.\n\nmd/raid5 uses the plugging infrastructure provided by the block layer\nand \u0027struct request_queue\u0027.  However when we plug raid5 under dm there\nis no request queue so we cannot use that.\n\nSo create a similar infrastructure that is much lighter weight and use\nit for raid5.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "768a418db102bb6aa6064e6090892b5c21ff1f9e",
      "tree": "2f33acbf0ca542f43c8014201b539ae8f461ee5c",
      "parents": [
        "390ee602a142a93f2c7eb7bffee8e277058b8e0a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 11:49:55 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:27 2010 +1000"
      },
      "message": "md: add support for raising dm events.\n\ndm uses scheduled work to raise events to user-space.\nSo allow md device to have work_structs and schedule them on an error.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "390ee602a142a93f2c7eb7bffee8e277058b8e0a",
      "tree": "33a23748dd5ff4ea76b34ed3e458c6da91185376",
      "parents": [
        "e8bb9a839a26f076379e9cb9f46a879d210156f1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:27 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:27 2010 +1000"
      },
      "message": "md: export various start/stop interfaces\n\nexport entry points for starting and stopping md arrays.\nThis will be used by a module to make md/raid5 work under\ndm.\nAlso stop calling md_stop_writes from md_stop, as that won\u0027t\nwork well with dm - it will want to call the two separately.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e8bb9a839a26f076379e9cb9f46a879d210156f1",
      "tree": "4da184e861cc5fea4967089711dfdc4fbb175f43",
      "parents": [
        "676e42d896ab6967859fabbb06f4e11b9615cbcf"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:26 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:27 2010 +1000"
      },
      "message": "md: split out md_rdev_init\n\nThis functionality will be needed separately in a subsequent patch, so\nsplit it into it\u0027s own exported function.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "676e42d896ab6967859fabbb06f4e11b9615cbcf",
      "tree": "efab4dffe8e930ec9ef51a5a4d4fd04ffe3749b1",
      "parents": [
        "f4be6b43f1ac60dff00ef0923ee43b0e08872947"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:26 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:27 2010 +1000"
      },
      "message": "md: be more careful setting MD_CHANGE_CLEAN\n\nWhen MD_CHANGE_CLEAN is set we might block in md_write_start.\nSo we should only set it when fairly sure that something will clear\nit.\n\nThere are two places where it is set so as to encourage a metadata\nupdate to record the progress of resync/recovery.  This should only\nbe done if the internal metadata update mechanisms are in use, which\ncan be tested by by inspecting \u0027-\u003epersistent\u0027.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "00bcb4ac7ee7e557a491b614219142cea0ef16f4",
      "tree": "992cfa1d0e653aa3de8f0865c5e1a5a0fee4f935",
      "parents": [
        "d0c6f6258478e1dba532bf7c28e2cd6e1047d3a4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:23 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 21 13:27:53 2010 +1000"
      },
      "message": "md: reduce dependence on sysfs.\n\nWe will want md devices to live as dm targets where sysfs is not\nvisible.  So allow md to not connect to sysfs.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "70fffd0bfab1558a8c64c5e903dea1fb84cd9f6b",
      "tree": "126f2ae8faa2cff8f9dde91cc7a07569ff9851cb",
      "parents": [
        "e4e11e385d1e5516ac76c956d6c25e6c2fa1b8d0"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 16 17:01:25 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:18 2010 +1000"
      },
      "message": "md: Don\u0027t update -\u003erecovery_offset when reshaping an array to fewer devices.\n\nWhen an array is reshaped to have fewer devices, the reshape proceeds\nfrom the end of the devices to the beginning.\n\nIf a device happens to be non-In_sync (which is possible but rare)\nwe would normally update the -\u003erecovery_offset as the reshape\nprogresses. However that would be wrong as the recover_offset records\nthat the early part of the device is in_sync, while in fact it would\nonly be the later part that is in_sync, and in any case the offset\nnumber would be measured from the wrong end of the device.\n\nRelatedly, if after a reshape a spare is discovered to not be\nrecoverred all the way to the end, not allow spare_active\nto incorporate it in the array.\n\nThis becomes relevant in the following sample scenario:\n\nA 4 drive RAID5 is converted to a 6 drive RAID6 in a combined\noperation.\nThe RAID5-\u003eRAID6 conversion will cause a 5 drive to be included as a\nspare, then the 5drive -\u003e 6drive reshape will effectively rebuild that\nspare as it progresses.  The 6th drive is treated as in_sync the whole\ntime as there is never any case that we might consider reading from\nit, but must not because there is no valid data.\n\nIf we interrupt this reshape part-way through and reverse it to return\nto a 5-drive RAID6 (or event a 4-drive RAID5), we don\u0027t want to update\nthe recovery_offset - as that would be wrong - and we don\u0027t want to\ninclude that spare as active in the 5-drive RAID6 when the reversed\nreshape completed and it will be mostly out-of-sync still.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e93f68a1fc6244c05ad8fae28e75835ec74ab34e",
      "tree": "d282978aac8f6fcec512be2a6e61287bbb6241b1",
      "parents": [
        "0544a21db02c1d8883158fd6f323364f830a120a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 15 09:36:03 2010 +0100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:33:24 2010 +1000"
      },
      "message": "md: fix handling of array level takeover that re-arranges devices.\n\nMost array level changes leave the list of devices largely unchanged,\npossibly causing one at the end to become redundant.\nHowever conversions between RAID0 and RAID10 need to renumber\nall devices (except 0).\n\nThis renumbering is currently being done in the -\u003erun method when the\nnew personality takes over.  However this is too late as the common\ncode in md.c might already have invalidated some of the devices if\nthey had a -\u003eraid_disk number that appeared to high.\n\nMoving it into the -\u003etakeover method is too early as the array is\nstill active at that time and wrong -\u003eraid_disk numbers could cause\nconfusion.\n\nSo add a -\u003enew_raid_disk field to mdk_rdev_s and use it to communicate\nthe new raid_disk number.\nNow the common code knows exactly which devices need to be renumbered,\nand which can be invalidated, and can do it all at a convenient time\nwhen the array is suspend.\nIt can also update some symlinks in sysfs which previously were not be\nupdated correctly.\n\nReported-by: Maciej Trela \u003cmaciej.trela@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f3b99be19ded511a1bf05a148276239d9f13eefa",
      "tree": "c9e59617e67e7a43e38b5c41f3307d54f4279c13",
      "parents": [
        "7e27d6e778cd87b6f2415515d7127eba53fe5d02"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:31:03 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:31:03 2010 +1000"
      },
      "message": "Restore partition detection of newly created md arrays.\n\nCommit  b821eaa572fd737faaf6928ba046e571526c36c6 broke partition\ndetection for md arrays.\n\nThe logic was almost right.  However if revalidate_disk is called\nwhen the device is not yet open, bdev-\u003ebd_disk won\u0027t be set, so the\nflush_disk() Call will not set bd_invalidated.\n\nSo when md_open is called we still need to ensure that\n-\u003ebd_invalidated gets set.  This is easily done with a call to\ncheck_disk_size_change in the place where the offending commit removed\ncheck_disk_change.  At the important times, the size will have changed\nfrom 0 to non-zero, so check_disk_size_change will set bd_invalidated.\n\nTested-by: Duncan \u003c1i5t5.duncan@cox.net\u003e\nReported-by: Duncan \u003c1i5t5.duncan@cox.net\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "19fdb9eefb21b72edbc365b838502780c392bad6",
      "tree": "deae04c48532d6eab64ed4b0396737bb854b5506",
      "parents": [
        "be6800a73aa2f3dc14744c3b80e676d189789f04",
        "3ff195b011d7decf501a4d55aeed312731094796"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 22 08:31:36 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 22 08:31:36 2010 +1000"
      },
      "message": "Merge commit \u00273ff195b011d7decf501a4d55aeed312731094796\u0027 into for-linus\n\nConflicts:\n\tdrivers/md/md.c\n\n- Resolved conflict in md_update_sb\n- Added extra \u0027NULL\u0027 arg to new instance of sysfs_get_dirent.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3ff195b011d7decf501a4d55aeed312731094796",
      "tree": "8cfdc330abbf82893955f2d7d6e96efee81bfd7c",
      "parents": [
        "bc451f2058238013e1cdf4acd443c01734d332f0"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Mar 30 11:31:26 2010 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri May 21 09:37:31 2010 -0700"
      },
      "message": "sysfs: Implement sysfs tagged directory support.\n\nThe problem.  When implementing a network namespace I need to be able\nto have multiple network devices with the same name.  Currently this\nis a problem for /sys/class/net/*, /sys/devices/virtual/net/*, and\npotentially a few other directories of the form /sys/ ... /net/*.\n\nWhat this patch does is to add an additional tag field to the\nsysfs dirent structure.  For directories that should show different\ncontents depending on the context such as /sys/class/net/, and\n/sys/devices/virtual/net/ this tag field is used to specify the\ncontext in which those directories should be visible.  Effectively\nthis is the same as creating multiple distinct directories with\nthe same name but internally to sysfs the result is nicer.\n\nI am calling the concept of a single directory that looks like multiple\ndirectories all at the same path in the filesystem tagged directories.\n\nFor the networking namespace the set of directories whose contents I need\nto filter with tags can depend on the presence or absence of hotplug\nhardware or which modules are currently loaded.  Which means I need\na simple race free way to setup those directories as tagged.\n\nTo achieve a reace free design all tagged directories are created\nand managed by sysfs itself.\n\nUsers of this interface:\n- define a type in the sysfs_tag_type enumeration.\n- call sysfs_register_ns_types with the type and it\u0027s operations\n- sysfs_exit_ns when an individual tag is no longer valid\n\n- Implement mount_ns() which returns the ns of the calling process\n  so we can attach it to a sysfs superblock.\n- Implement ktype.namespace() which returns the ns of a syfs kobject.\n\nEverything else is left up to sysfs and the driver layer.\n\nFor the network namespace mount_ns and namespace() are essentially\none line functions, and look to remain that.\n\nTags are currently represented a const void * pointers as that is\nboth generic, prevides enough information for equality comparisons,\nand is trivial to create for current users, as it is just the\nexisting namespace pointer.\n\nThe work needed in sysfs is more extensive.  At each directory\nor symlink creating I need to check if the directory it is being\ncreated in is a tagged directory and if so generate the appropriate\ntag to place on the sysfs_dirent.  Likewise at each symlink or\ndirectory removal I need to check if the sysfs directory it is\nbeing removed from is a tagged directory and if so figure out\nwhich tag goes along with the name I am deleting.\n\nCurrently only directories which hold kobjects, and\nsymlinks are supported.  There is not enough information\nin the current file attribute interfaces to give us anything\nto discriminate on which makes it useless, and there are\nno potential users which makes it an uninteresting problem\nto solve.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Benjamin Thery \u003cbenjamin.thery@bull.net\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "be6800a73aa2f3dc14744c3b80e676d189789f04",
      "tree": "7db76b4488ad45e923223748c41fa8a61a09aa25",
      "parents": [
        "a8707c08f4f718bb0ed65499d3f43201f6e41455"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 10:17:09 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:28:01 2010 +1000"
      },
      "message": "md: don\u0027t insist on valid event count for spare devices.\n\nDevices which know that they are spares do not really need to have\nan event count that matches the rest of the array, so there are no\ndata-in-sync issues. It is enough that the uuid matches.\nSo remove the requirement that the event count is up-to-date.\n\nWe currently still write out and event count on spares, but this\nallows us in a year or 3 to stop doing that completely.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a8707c08f4f718bb0ed65499d3f43201f6e41455",
      "tree": "8fc3ea9ea924ebc4f28012c11f3c1e70ad60bcb2",
      "parents": [
        "7b0bb5368a7195606eca475d9f4e291ab7227052"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 09:28:43 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:28:01 2010 +1000"
      },
      "message": "md: simplify updating of event count to sometimes avoid updating spares.\n\nWhen updating the event count for a simple clean \u003c-\u003e dirty transition,\nwe try to avoid updating the spares so they can safely spin-down.\nAs the event_counts across an array must be +/- 1, this means\ndecrementing the event_count on a dirty-\u003eclean transition.\nThis is not always safe and we have to avoid the unsafe time.\nWe current do this with a misguided idea about it being safe or\nnot depending on whether the event_count is odd or even.  This\napproach only works reliably in a few common instances, but easily\nfalls down.\n\nSo instead, simply keep internal state concerning whether it is safe\nor not, and always assume it is not safe when an array is first\nassembled.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    }
  ],
  "next": "75a73a29e520a6ce982b0da6dd8b7560ae3faa90"
}
