)]}'
{
  "log": [
    {
      "commit": "395c72a707d966b36d5a42fe12c3a237ded3a0d9",
      "tree": "79e4450a4f31409815d80ee8e1a7e1490a140f22",
      "parents": [
        "eeea3ac912207dcf759b95b2b4c36f96bce583bf"
      ],
      "author": {
        "name": "Kent Overstreet",
        "email": "koverstreet@google.com",
        "time": "Thu Sep 06 15:34:55 2012 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Sun Sep 09 10:35:38 2012 +0200"
      },
      "message": "block: Generalized bio pool freeing\n\nWith the old code, when you allocate a bio from a bio pool you have to\nimplement your own destructor that knows how to find the bio pool the\nbio was originally allocated from.\n\nThis adds a new field to struct bio (bi_pool) and changes\nbio_alloc_bioset() to use it. This makes various bio destructors\nunnecessary, so they\u0027re then deleted.\n\nv6: Explain the temporary if statement in bio_put\n\nSigned-off-by: Kent Overstreet \u003ckoverstreet@google.com\u003e\nCC: Jens Axboe \u003caxboe@kernel.dk\u003e\nCC: NeilBrown \u003cneilb@suse.de\u003e\nCC: Alasdair Kergon \u003cagk@redhat.com\u003e\nCC: Nicholas Bellinger \u003cnab@linux-iscsi.org\u003e\nCC: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\nAcked-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Nicholas Bellinger \u003cnab@linux-iscsi.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "a7e546f175f07630453c44b5afe14dd667dcfec9",
      "tree": "352c2577161f0cbe8c3b49bb6f053cfd49ed32b4",
      "parents": [
        "da31ce727e8cc6920de5840e35b4e770c08e86e3",
        "676ce6d5ca3098339c028d44fe0427d1566a4d2d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 25 11:36:43 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 25 11:36:43 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-block\n\nPull block-related fixes from Jens Axboe:\n\n - Improvements to the buffered and direct write IO plugging from\n   Fengguang.\n\n - Abstract out the mapping of a bio in a request, and use that to\n   provide a blk_bio_map_sg() helper.  Useful for mapping just a bio\n   instead of a full request.\n\n - Regression fix from Hugh, fixing up a patch that went into the\n   previous release cycle (and marked stable, too) attempting to prevent\n   a loop in __getblk_slow().\n\n - Updates to discard requests, fixing up the sizing and how we align\n   them.  Also a change to disallow merging of discard requests, since\n   that doesn\u0027t really work properly yet.\n\n - A few drbd fixes.\n\n - Documentation updates.\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-block:\n  block: replace __getblk_slow misfix by grow_dev_page fix\n  drbd: Write all pages of the bitmap after an online resize\n  drbd: Finish requests that completed while IO was frozen\n  drbd: fix drbd wire compatibility for empty flushes\n  Documentation: update tunable options in block/cfq-iosched.txt\n  Documentation: update tunable options in block/cfq-iosched.txt\n  Documentation: update missing index files in block/00-INDEX\n  block: move down direct IO plugging\n  block: remove plugging at buffered write time\n  block: disable discard request merge temporarily\n  bio: Fix potential memory leak in bio_find_or_create_slab()\n  block: Don\u0027t use static to define \"void *p\" in show_partition_start()\n  block: Add blk_bio_map_sg() helper\n  block: Introduce __blk_segment_map_sg() helper\n  fs/block-dev.c:fix performance regression in O_DIRECT writes to md block devices\n  block: split discard into aligned requests\n  block: reorganize rounding of max_discard_sectors\n"
    },
    {
      "commit": "d1aa4d04da8de5c89d73859e077d89c4c71d8ed1",
      "tree": "899936a815b7f40fe65aa0bc1b832ebef7a89802",
      "parents": [
        "509fc019e534bdf5f3969d78c53184db4cf7ff48"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed Aug 08 21:19:09 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Thu Aug 16 17:17:35 2012 +0200"
      },
      "message": "drbd: Write all pages of the bitmap after an online resize\n\nWe need to write the whole bitmap after we moved the meta data\ndue to an online resize operation.\n\nWith the support for one peta byte devices bitmap IO was optimized\nto only write out touched pages. This optimization must be turned\noff when writing the bitmap after an online resize.\n\nThis issue was introduced with drbd-8.3.10.\n\nThe impact of this bug is that after an online resize, the next\nresync could become larger than expected.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "509fc019e534bdf5f3969d78c53184db4cf7ff48",
      "tree": "2db80b5650709fd1e0a538506a3e94007a273b3c",
      "parents": [
        "227f052f4711caf432b9a7dbcfe1a2857d3c0def"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Tue Jul 31 11:22:58 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Thu Aug 16 17:14:45 2012 +0200"
      },
      "message": "drbd: Finish requests that completed while IO was frozen\n\nRequests of an acked epoch are stored on the barrier_acked_requests list. In\ncase the private bio of such a request completes while IO on the drbd device\nis suspended [req_mod(completed_ok)] then the request stays there.\n\nWhen thawing IO because the fence_peer handler returned, then we use\ntl_clear() to apply the connection_lost_while_pending event to all requests\non the transfer-log and the barrier_acked_requests list.\n\nUp to now the connection_lost_while_pending event was not applied\non requests on the barrier_acked_requests list. Fixed that.\n\nI.e. now the connection_lost_while_pending and resend events are\napplied to requests on the barrier_acked_requests list. For that\nit is necessary that the resend event finishes (local only)\nREADS correctly.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "227f052f4711caf432b9a7dbcfe1a2857d3c0def",
      "tree": "a8e7a59fbe8a8c9d5e0ecbe76db9a9c769fd7e30",
      "parents": [
        "a73ff3231df59a4b92ccd0dd4e73897c5822489b"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Tue Jul 31 09:31:11 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Thu Aug 16 17:12:56 2012 +0200"
      },
      "message": "drbd: fix drbd wire compatibility for empty flushes\n\nDRBD has a concept of request epochs or reorder-domains,\nwhich are separated on the wire by P_BARRIER packets.\n\nOlder DRBD is not able to handle zero-sized requests at all,\nso we need to map empty flushes to these drbd barriers.\n\nThese are the equivalent of empty flushes, and\nby default trigger flushes on the receiving side anyways\n(unless not supported or explicitly disabled),\nso there is no need to handle this differently in newer drbd either.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "d97482ede202f424670a53673c362e5189107875",
      "tree": "fe2263b0f43a5496ac40f3ce303f87b2091b6758",
      "parents": [
        "166ac34b74faa757ca936fde790d2121a3f40f65"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "artem.bityutskiy@linux.intel.com",
        "time": "Wed Jul 25 18:12:12 2012 +0300"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Aug 04 12:15:39 2012 +0400"
      },
      "message": "drbd: nuke pdflush from comments\n\nThe pdflush thread is long gone, so this patch removes references to pdflush\nfrom drbd comments.\n\nCc: drbd-dev@lists.linbit.com\nSigned-off-by: Artem Bityutskiy \u003cartem.bityutskiy@linux.intel.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a73ff3231df59a4b92ccd0dd4e73897c5822489b",
      "tree": "b4a702fefd94689682a6be89773ef7c59f20db59",
      "parents": [
        "db141b2f42b485b700465fe2401fbe65c65b190c"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Mon Jun 25 19:15:38 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Tue Jul 24 15:14:28 2012 +0200"
      },
      "message": "drbd: announce FLUSH/FUA capability to upper layers\n\nUnconditionally announce FLUSH/FUA to upper layers.\nIf the lower layers on either node do not actually support this,\ngeneric_make_request() will deal with it.\n\nIf this causes performance regressions on your setup,\nmake sure there are no volatile caches involved,\nand mount -o nobarrier or equivalent.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "db141b2f42b485b700465fe2401fbe65c65b190c",
      "tree": "2af5670c18463173c7b9f5450bf09a90e463f986",
      "parents": [
        "7ee1fb93f390f7a7231abec4e34e6ab20abeed45"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Mon Jun 25 19:15:58 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Tue Jul 24 15:14:00 2012 +0200"
      },
      "message": "drbd: fix max_bio_size to be unsigned\n\nWe capped our max_bio_size respectively max_hw_sectors with\nmin_t(int, lower level limit, our limit);\nunfortunately, some drivers, e.g. the kvm virtio block driver, initialize their\nlimits to \"-1U\", and that is of course a smaller \"int\" value than our limit.\n\nImpact: we started to request 16 MB resync requests,\nwhich lead to protocol error and a reconnect loop.\n\nFix all relevant constants and parameters to be unsigned int.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "7ee1fb93f390f7a7231abec4e34e6ab20abeed45",
      "tree": "34a4e86335dc8f6dca13abcae3bf60ca5f8b37ab",
      "parents": [
        "c12e9c8964215aaf2b5dcd06048444c2b672f0b9"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Tue Jun 19 10:27:58 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Tue Jul 24 14:15:58 2012 +0200"
      },
      "message": "drbd: flush drbd work queue before invalidate/invalidate remote\n\nIf you do back to back wait-sync/invalidate on a Primary in a tight loop,\nduring application IO load, you could trigger a race:\n  kernel: block drbd6: FIXME going to queue \u0027set_n_write from StartingSync\u0027\n\tbut \u0027write from resync_finished\u0027 still pending?\n\nFix this by changing the order of the drbd_queue_work() and\nthe wake_up() in dec_ap_pending(), and adding the additional\ndrbd_flush_workqueue() before requesting the full sync.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "c12e9c8964215aaf2b5dcd06048444c2b672f0b9",
      "tree": "a13c5561ad0325ca247f4c1d9d0b7770da0c64bb",
      "parents": [
        "63a6d0bb3dd69afedb2b2952eb1d1e8340c11d0d"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Tue Jun 19 09:40:00 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Tue Jul 24 14:15:16 2012 +0200"
      },
      "message": "drbd: fix potential access after free\n\nOccasionally, if we disconnect, we triggered this assert:\n  block drbd7: ASSERT FAILED tl_hash[27] \u003d\u003d c30b0f04, expected NULL\n\nhlist_del() happens only on master bio completion.\n\nWe used to wait for pending IO to complete before freeing tl_hash\non disconnect. We no longer do so, since we learned to \"freeze\"\nIO on disconnect.\n\nIf the local disk is too slow, we may reach C_STANDALONE early,\nand there are still some requests pending locally when we call\ndrbd_free_tl_hash().\n\nIf we now free the tl_hash, and later the local IO completion completes\nthe master bio, which then does hlist_del() and clobbers freed memory.\n\nDo hlist_del_init() and hlist_add_fake() before kfree(tl_hash),\nso the hlist_del() on master bio completion is harmless.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "63a6d0bb3dd69afedb2b2952eb1d1e8340c11d0d",
      "tree": "6c4a7b4f35345c1f409c3971899ffdd4be935fcc",
      "parents": [
        "0029d62434d9045bc3e8b2eb48ae696e30336e92"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Mon Jun 18 11:46:01 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Tue Jul 24 14:10:41 2012 +0200"
      },
      "message": "drbd: call local-io-error handler early\n\nIn case we want to hard-reset from the local-io-error handler,\nwe need to call it before notifying the peer or aborting local IO.\nOtherwise the peer will advance its data generation UUIDs even\nif secondary.\n\nThis way, local io error looks like a \"regular\" node crash,\nwhich reduces the number of different failure cases.\nThis may be useful in a bigger picture where crashed or otherwise\n\"misbehaving\" nodes are automatically re-deployed.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "0029d62434d9045bc3e8b2eb48ae696e30336e92",
      "tree": "d1e2ce7a3130e5b489320b12b3568c8a58828697",
      "parents": [
        "88437879fbd0ac5cde3f683f8eee455bbf83aaac"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Thu Jun 14 18:02:52 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Tue Jul 24 14:09:53 2012 +0200"
      },
      "message": "drbd: do not reset rs_pending_cnt too early\n\nFix asserts like\n  block drbd0: in got_BlockAck:4634: rs_pending_cnt \u003d -35 \u003c 0 !\n\nWe reset the resync lru cache and related information (rs_pending_cnt),\nonce we successfully finished a resync or online verify, or if the\nreplication connection is lost.\n\nWe also need to reset it if a resync or online verify is aborted\nbecause a lower level disk failed.\n\nIn that case the replication link is still established,\nand we may still have packets queued in the network buffers\nwhich want to touch rs_pending_cnt.\n\nWe do not have any synchronization mechanism to know for sure when all\nsuch pending resync related packets have been drained.\n\nTo avoid this counter to go negative (and violate the ASSERT that it\nwill always be \u003e\u003d 0), just do not reset it when we lose a disk.\n\nIt is good enough to make sure it is re-initialized before the next\nresync can start: reset it when we re-attach a disk.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "88437879fbd0ac5cde3f683f8eee455bbf83aaac",
      "tree": "fe9c271b08c3bf88cabd8c6f3933ae7938ebb779",
      "parents": [
        "c2ba686f353972cc89a006ffb6bab7ba1822271e"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Thu Jun 14 15:19:26 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Tue Jul 24 14:07:48 2012 +0200"
      },
      "message": "drbd: reset congestion information before reporting it in /proc/drbd\n\nWe cache the congestion status in mdev-\u003econgestion_reason whenever\ndrbd_congested() was called.\nReset this cached info before reporting it when reading /proc/drbd.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "c2ba686f353972cc89a006ffb6bab7ba1822271e",
      "tree": "666920e336f5e85cdf4d03ecafa165c6a65743a4",
      "parents": [
        "383606e0dea6a380097dbcb0c319b09ca372f36b"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Thu Jun 14 15:14:06 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Tue Jul 24 14:07:18 2012 +0200"
      },
      "message": "drbd: report congestion if we are waiting for some userland callback\n\nIf the drbd worker thread is synchronously waiting for some userland\ncallback, we don\u0027t want some casual pageout to block on us.\nHave drbd_congested() report congestion in that case.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "383606e0dea6a380097dbcb0c319b09ca372f36b",
      "tree": "170c3c95c12bd0a3e6cca0b7d13a4c4cc91f040e",
      "parents": [
        "d264580145a0aee2f5113c37b178a55b6e1b0b32"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Thu Jun 14 14:21:32 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Tue Jul 24 14:06:18 2012 +0200"
      },
      "message": "drbd: differentiate between normal and forced detach\n\nAborting local requests (not waiting for completion from the lower level\ndisk) is dangerous: if the master bio has been completed to upper\nlayers, data pages may be re-used for other things already.\nIf local IO is still pending and later completes,\nthis may cause crashes or corrupt unrelated data.\n\nOnly abort local IO if explicitly requested.\nIntended use case is a lower level device that turned into a tarpit,\nnot completing io requests, not even doing error completion.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "d264580145a0aee2f5113c37b178a55b6e1b0b32",
      "tree": "23d1760146841c37e45e65ed9c68cc868e737689",
      "parents": [
        "28a33cbc24e4256c143dce96c7d93bf423229f92"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Mon Jun 18 14:18:56 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Tue Jul 24 14:02:41 2012 +0200"
      },
      "message": "drbd: cleanup, remove two unused global flags\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "6d407cfaf5a56b3030b9e55d0f542601e173c5d2",
      "tree": "c844f80b52c213b5efffda4aa329b11ba1fad40f",
      "parents": [
        "987751719bd38a72dfd29f398dea1a7f3cd5b224",
        "0d5934e3c258fc5decc4103600c597086fd95a52"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Jun 13 21:19:42 2012 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Jun 13 21:19:42 2012 +0200"
      },
      "message": "Merge branch \u0027for-jens\u0027 of git://git.drbd.org/linux-drbd into for-linus\n"
    },
    {
      "commit": "0d5934e3c258fc5decc4103600c597086fd95a52",
      "tree": "1e9810b23c495ffed5f9d1814ea74535b6013ea5",
      "parents": [
        "1ed25b269e3dd5ecc64f17beef9ea21745c39ca6"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Fri Jun 08 14:17:36 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Tue Jun 12 14:35:19 2012 +0200"
      },
      "message": "drbd: fix null pointer dereference with on-congestion policy when diskless\n\nWe must not look at mdev-\u003eactlog, unless we have a get_ldev() reference.\nIt also does not make much sense to try to disconnect or pull-ahead of\nthe peer, if we don\u0027t have good local data.\n\nOnly even consider congestion policies, if our local disk is D_UP_TO_DATE.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "1ed25b269e3dd5ecc64f17beef9ea21745c39ca6",
      "tree": "a311e656c28d4946ddb0849f1a4e42839706e990",
      "parents": [
        "4eccc579795290a58e2262fa4e9d083d7672e699"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Fri Jun 08 14:09:54 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Tue Jun 12 14:34:51 2012 +0200"
      },
      "message": "drbd: fix list corruption by failing but already aborted reads\n\nIf a read is aborted due to force-detach of a supposedly unresponsive\nlocal backing device, and retried on the peer, it can happen that the\nlocal request later still completes (hopefully with an error).\nAs it may already have been completed to upper layers meanwhile,\nit must not be retried again now.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "4eccc579795290a58e2262fa4e9d083d7672e699",
      "tree": "b3ab140adfb03557fd80691aabb5c337f10ffde8",
      "parents": [
        "4fd1ffaa122cf66bfb710ced43679413df4f3605"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Fri Jun 08 13:18:51 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Tue Jun 12 14:32:48 2012 +0200"
      },
      "message": "drbd: fix access of unallocated pages and kernel panic\n\nBUG: unable to handle kernel NULL pointer dereference at (null)\n...\n [\u003cd1e17561\u003e] ? _drbd_bm_set_bits+0x151/0x240 [drbd]\n [\u003cd1e236f8\u003e] ? receive_bitmap+0x4f8/0xbc0 [drbd]\n\nThis fixes an off-by-one error in the receive_bitmap() path,\nif run-length encoded bitmap transfer is enabled.\n\nIf the bitmap is an exact multiple of PAGE_SIZE, which means the visible\ncapacity of the drbd device is an exact multiple of 128 MiB (for 4k page\nsize), and bitmap compression (use-rle) is enabled (which became default\nwith 8.4), and the very last bit is dirty and reported in an rle\ncomressed bitmap packet, we ended up trying to kmap_atomic a page pointer\nthat does not exist (bitmap-\u003ebm_pages[last index + 1]).\n\nbug introduced by:\n    Date:   Fri Jul 24 15:33:24 2009 +0200\n    set bits: optimize for complete last word, fix off-by-one-word corner case\n\nmade effective by:\n    Date:   Thu Dec 16 00:32:38 2010 +0100\n    drbd: get rid of unused debug code\n\n    Long time ago, we had paranoia code in the bitmap that allocated one\n    extra word, assigned a magic value, and checked on every occasion that\n    the magic value was still unchanged.\n\n    That debug code is unused, the extra long word complicates code a bit.\n    Get rid of it.\n\nNo-one triggered this bug in the last few years, because a large subset\nof our userbase is unaffected:\n * typically the last few blocks of a device are not modified\n   frequently, and remain unset\n * use-rle was disabled by default in drbd \u003c 8.4\n * those with slightly \"odd\" device sizes, or\n * drbd internal meta data (which will skew the device size slightly,\n   thus makes it harder to have a bug relevant device size)\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "a70f35af4e49f87ba4b6c4b30220fbb66cd74af6",
      "tree": "f81d1c68d332f7ed32048085fa2972c057f62419",
      "parents": [
        "0d167518e045cc8bb63f0a8a0a85ad4fa4e0044f",
        "4fd1ffaa122cf66bfb710ced43679413df4f3605"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 30 09:05:47 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 30 09:05:47 2012 -0700"
      },
      "message": "Merge branch \u0027for-3.5/drivers\u0027 of git://git.kernel.dk/linux-block\n\nPull block driver updates from Jens Axboe:\n \"Here are the driver related changes for 3.5.  It contains:\n\n   - The floppy changes from Jiri.  Jiri is now also marked as the\n     maintainer of floppy.c, I shall be publically branding his forehead\n     with red hot iron at the next opportune moment.\n\n   - A batch of drbd updates and fixes from the linbit crew, as well as\n     fixes from others.\n\n   - Two small fixes for xen-blkfront courtesy of Jan.\"\n\n* \u0027for-3.5/drivers\u0027 of git://git.kernel.dk/linux-block: (70 commits)\n  floppy: take over maintainership\n  floppy: remove floppy-specific O_EXCL handling\n  floppy: convert to delayed work and single-thread wq\n  xen-blkfront: module exit handling adjustments\n  xen-blkfront: properly name all devices\n  drbd: grammar fix in log message\n  drbd: check MODULE for THIS_MODULE\n  drbd: Restore the request restart logic\n  drbd: introduce a bio_set to allocate housekeeping bios from\n  drbd: remove unused define\n  drbd: bm_page_async_io: properly initialize page-\u003eprivate\n  drbd: use the newly introduced page pool for bitmap IO\n  drbd: add page pool to be used for meta data IO\n  drbd: allow bitmap to change during writeout from resync_finished\n  drbd: fix race between drbdadm invalidate/verify and finishing resync\n  drbd: fix resend/resubmit of frozen IO\n  drbd: Ensure that data_size is not 0 before using data_size-1 as index\n  drbd: Delay/reject other state changes while establishing a connection\n  drbd: move put_ldev from __req_mod() to the endio callback\n  drbd: fix WRITE_ACKED_BY_PEER_AND_SIS to not set RQ_NET_DONE\n  ...\n"
    },
    {
      "commit": "028940342a906db8da014a7603a0deddc2c323dd",
      "tree": "688dbc38a3e218f2493d311b1d70a67668837347",
      "parents": [
        "be3eed2e96340d3c7a4d1ea1d63e7bd6095d1e34",
        "0e93b4b304ae052ba1bc73f6d34a68556fe93429"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed May 16 22:17:37 2012 -0400"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Wed May 16 22:17:37 2012 -0400"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net\n"
    },
    {
      "commit": "38bf1953987c1735f3c9140fca762949a8cae507",
      "tree": "5596d88145226774633d3a2853b6d7caaeffa4f1",
      "parents": [
        "e0268868ba064980488fc8c194db3d8e9fb2959c"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Fri May 04 11:34:03 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu May 10 23:21:39 2012 -0400"
      },
      "message": "connector/userns: replace netlink uses of cap_raised() with capable()\n\nIn 2009 Philip Reiser notied that a few users of netlink connector\ninterface needed a capability check and added the idiom\ncap_raised(nsp-\u003eeff_cap, CAP_SYS_ADMIN) to a few of them, on the premise\nthat netlink was asynchronous.\n\nIn 2011 Patrick McHardy noticed we were being silly because netlink is\nsynchronous and removed eff_cap from the netlink_skb_params and changed\nthe idiom to cap_raised(current_cap(), CAP_SYS_ADMIN).\n\nLooking at those spots with a fresh eye we should be calling\ncapable(CAP_SYS_ADMIN).  The only reason I can see for not calling capable\nis that it once appeared we were not in the same task as the caller which\nwould have made calling capable() impossible.\n\nIn the initial user_namespace the only difference between between\ncap_raised(current_cap(), CAP_SYS_ADMIN) and capable(CAP_SYS_ADMIN) are a\nfew sanity checks and the fact that capable(CAP_SYS_ADMIN) sets\nPF_SUPERPRIV if we use the capability.\n\nSince we are going to be using root privilege setting PF_SUPERPRIV seems\nthe right thing to do.\n\nThe motivation for this that patch is that in a child user namespace\ncap_raised(current_cap(),...) tests your capabilities with respect to that\nchild user namespace not capabilities in the initial user namespace and\nthus will allow processes that should be unprivielged to use the kernel\nservices that are only protected with cap_raised(current_cap(),..).\n\nTo fix possible user_namespace issues and to just clean up the code\nreplace cap_raised(current_cap(), CAP_SYS_ADMIN) with\ncapable(CAP_SYS_ADMIN).\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Patrick McHardy \u003ckaber@trash.net\u003e\nCc: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nAcked-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nAcked-by: Andrew G. Morgan \u003cmorgan@kernel.org\u003e\nCc: Vasiliy Kulikov \u003csegoon@openwall.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nReviewed-by: James Morris \u003cjames.l.morris@oracle.com\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "92b4ca291f8676c9f323166a65fb7447774b2a46",
      "tree": "3261aed9bd61b82cba7873830318bf488e3ca735",
      "parents": [
        "bc4854bc91c9a7f117437215cd8b16a0a5671d93"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Mon Apr 30 12:53:52 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Thu May 10 12:00:56 2012 +0200"
      },
      "message": "drbd: grammar fix in log message\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "bc4854bc91c9a7f117437215cd8b16a0a5671d93",
      "tree": "569927c0035f099665a4e76412cc090d96ba157b",
      "parents": [
        "f6d0a8dbfdce4b4f28fcb0f689c373874646f87c"
      ],
      "author": {
        "name": "Cong Wang",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Tue Apr 03 14:13:36 2012 +0800"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Thu May 10 12:00:54 2012 +0200"
      },
      "message": "drbd: check MODULE for THIS_MODULE\n\nTHIS_MODULE is NULL only when drbd is compiled as built-in,\nso the #ifdef CONFIG_MODULES should be #ifdef MODULE instead.\n\nThis fixes the warning:\n\ndrivers/block/drbd/drbd_main.c: In function ‘drbd_buildtag’:\ndrivers/block/drbd/drbd_main.c:4187:24: warning: the comparison will always evaluate as ‘true’ for the address of ‘__this_module’ will never be NULL [-Waddress]\n\nSigned-off-by: WANG Cong \u003cxiyou.wangcong@gmail.com\u003e\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "f6d0a8dbfdce4b4f28fcb0f689c373874646f87c",
      "tree": "3a648c130260021d4f8f214f7c228b2deff3a536",
      "parents": [
        "9476f39d66041ca8c66546671765b4047bffa895"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Mon Apr 30 12:53:52 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 17:20:59 2012 +0200"
      },
      "message": "drbd: Restore the request restart logic\n\nIt got lost with the commit 5a7bbad27a410350e64a2d7f5ec18fc73836c14f\n\"block: remove support for bio remapping from -\u003emake_request\"\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "9476f39d66041ca8c66546671765b4047bffa895",
      "tree": "1416c0522fab3c228834cafbe1e1463e7900a0d0",
      "parents": [
        "3c2f7a856f2e70d2f1bb59f65d97a66047f14f36"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Wed Feb 23 17:02:01 2011 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:17:07 2012 +0200"
      },
      "message": "drbd: introduce a bio_set to allocate housekeeping bios from\n\nDon\u0027t rely on availability of bios from the global fs_bio_set,\nwe should use our own bio_set for meta data IO.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "3c2f7a856f2e70d2f1bb59f65d97a66047f14f36",
      "tree": "9fc0c94ae3e837660440ba7ef01a0fadba40b754",
      "parents": [
        "0c7db27920a87a8db73ca521b527617eceec3bca"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Wed Feb 23 17:18:24 2011 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:17:06 2012 +0200"
      },
      "message": "drbd: remove unused define\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "0c7db27920a87a8db73ca521b527617eceec3bca",
      "tree": "7a2f223427d43b25550df23fbf2049629237b4cc",
      "parents": [
        "4d95a10f97337415c1f74b4901d80e047f8dc128"
      ],
      "author": {
        "name": "Arne Redlich",
        "email": "arne.redlich@googlemail.com",
        "time": "Fri Mar 16 08:19:33 2012 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:17:04 2012 +0200"
      },
      "message": "drbd: bm_page_async_io: properly initialize page-\u003eprivate\n\nIf bm_page_async_io is advised to use a new page for I/O\n(BM_AIO_COPY_PAGES is set), it will get it from a mempool.\nOnce the mempool has to dip into its reserves the page is\nnot reinitialized, i.e. page-\u003eprivate contains garbage, which\nwill lead to various problems once the I/O completes (dereferences\nof NULL pointers, the submitting thread getting stuck in D-state,\n ...).\n\nSigned-off-by: Arne Redlich \u003carne.redlich@googlemail.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\n"
    },
    {
      "commit": "4d95a10f97337415c1f74b4901d80e047f8dc128",
      "tree": "7dda1f2d9e018b9cd5cd061409e6b1741da6a9ca",
      "parents": [
        "4281808fb3580c381a23cceb0a29ced92d570a5f"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Wed Feb 23 15:38:47 2011 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:17:03 2012 +0200"
      },
      "message": "drbd: use the newly introduced page pool for bitmap IO\n\nConflicts:\n\n\tdrbd/drbd_bitmap.c\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "4281808fb3580c381a23cceb0a29ced92d570a5f",
      "tree": "b561a60dc382305bba499ae0e12c6e0573a3df06",
      "parents": [
        "0e8488ade26b4b16a9745aa15ecb88c3fb1cb953"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Wed Feb 23 12:39:46 2011 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:17:02 2012 +0200"
      },
      "message": "drbd: add page pool to be used for meta data IO\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "0e8488ade26b4b16a9745aa15ecb88c3fb1cb953",
      "tree": "368b5bf6ddf7a687303a6e01ce33460dbc096287",
      "parents": [
        "a574daf5d722f4ca8cc18509f30b804c4d519962"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Wed Apr 25 23:06:45 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:17:00 2012 +0200"
      },
      "message": "drbd: allow bitmap to change during writeout from resync_finished\n\nSymptom: messages similar to\n \"FIXME asender in bm_change_bits_to,\n  bitmap locked for \u0027write from resync_finished\u0027 by worker\"\n\nIf a resync or verify is finished (or aborted), a full bitmap writeout\nis triggered.  If we have ongoing local IO, the bitmap may still change\nduring that writeout, pending and not yet processed acks may cause bits\nto be cleared, while new writes may cause bits to be to be set.\n\nTo fix this, introduce the drbd_bm_write_copy_pages() variant.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "a574daf5d722f4ca8cc18509f30b804c4d519962",
      "tree": "83ae95ce9a57d605ce2a308ceb2a026e9f2ca9b2",
      "parents": [
        "ba280c092e6eca8a70c502e4510061535fdce382"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Wed Apr 25 16:27:35 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:16:59 2012 +0200"
      },
      "message": "drbd: fix race between drbdadm invalidate/verify and finishing resync\n\nWhen a resync or online verify is finished or aborted,\ndrbd does a bulk write-out of changed bitmap pages.\n\nIf *in that very moment* a new verify or resync is triggered,\nthis can race:\n ASSERT( !test_bit(BITMAP_IO, \u0026mdev-\u003eflags) ) in drbd_main.c\n FIXME going to queue \u0027set_n_write from StartingSync\u0027 but \u0027write from resync_finished\u0027 still pending?\nand similar.\n\nThis can be observed with e.g. tight invalidate loops in test scripts,\nand probably has no real-life implication.\n\nStill, that race can be solved by first quiescen the device,\nbefore starting a new resync or verify.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "ba280c092e6eca8a70c502e4510061535fdce382",
      "tree": "70bf9476e9667ec5afec09f5a2c8f4b9cc91e75c",
      "parents": [
        "5de738272e38f7051c7a44c42631b71a0e2a1e80"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Wed Apr 25 11:46:14 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:16:58 2012 +0200"
      },
      "message": "drbd: fix resend/resubmit of frozen IO\n\nDRBD can freeze IO, due to fencing policy (fencing resource-and-stonith),\nor because we lost access to data (on-no-data-accessible suspend-io).\n\nResuming from there (re-connect, or re-attach, or explicit admin\nintervention) should \"just work\".\n\nUnfortunately, if the re-attach/re-connect did not happen within\nthe timeout, since the commit\n  drbd: Implemented real timeout checking for request processing time\nif so configured, the request_timer_fn() would timeout and\ndetach/disconnect virtually immediately.\n\nThis change tracks the most recent attach and connect, and does not\ntimeout within \u003cconfigured timeout interval\u003e after attach/connect.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "5de738272e38f7051c7a44c42631b71a0e2a1e80",
      "tree": "8693bda089848c0fe3123b2ac1c46f9b89300d47",
      "parents": [
        "197296ffed71b7d5056d8618a07fec145b040303"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed Mar 28 10:17:32 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:16:56 2012 +0200"
      },
      "message": "drbd: Ensure that data_size is not 0 before using data_size-1 as index\n\nThis could be exploited by a peer which runs modified code.\n\nReported-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "197296ffed71b7d5056d8618a07fec145b040303",
      "tree": "7ee407b7f0536fb2cf7911ab0d7e48acce81cd4e",
      "parents": [
        "46385c84acd6654d3a38c9c7af1921dbded74aa2"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Mon Mar 26 16:47:11 2012 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:16:55 2012 +0200"
      },
      "message": "drbd: Delay/reject other state changes while establishing a connection\n\nChanges to the role and disk state should be delayed or rejected\nwhile we establish a connection.\n\nThis is necessary, since the peer will base its resync decision\non the UUIDs and the state we sent in the drbd_connect() function.\n\nThe most prominent example for this race is becoming primary after\nsending state and UUIDs and before the state changes to C_WF_CONNECTION.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "46385c84acd6654d3a38c9c7af1921dbded74aa2",
      "tree": "352c84f1e31a15bd50d3993b71f20d93357372d4",
      "parents": [
        "d64957c9a9757642f59aa4a63dadf159b2694bab"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Mon Jan 16 15:04:33 2012 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:16:51 2012 +0200"
      },
      "message": "drbd: move put_ldev from __req_mod() to the endio callback\n\nOne invocation in the endio handler is good enough,\nwe don\u0027t need mention it for each of the different ways\nit calls __req_mod().\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "d64957c9a9757642f59aa4a63dadf159b2694bab",
      "tree": "a127150d74df0c9cb9ada387427db790fa489c5f",
      "parents": [
        "41c4a0035b36d400b79cbd945390a76e909711a7"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Fri Mar 23 14:42:19 2012 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:16:50 2012 +0200"
      },
      "message": "drbd: fix WRITE_ACKED_BY_PEER_AND_SIS to not set RQ_NET_DONE\n\nJust because this request happened during a resync does\nnot mean it may pretend to have been barrier-acked.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "41c4a0035b36d400b79cbd945390a76e909711a7",
      "tree": "ecfc9c36addad208e1416aef84d7ffe9ff1a737f",
      "parents": [
        "6d49e101fd3d3dbd525564923a82fb8a66676420"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Wed Jan 11 09:46:48 2012 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:16:48 2012 +0200"
      },
      "message": "drbd: fix READ_RETRY_REMOTE_CANCELED to not complete if device is suspended\n\nREAD_RETRY_REMOTE_CANCELED needs to be grouped with the other _CANCELED\ncases, not with CONNECTION_LOST_WHILE_PENDING, as that would complete\n(fail) the bio even if the device became suspended.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "6d49e101fd3d3dbd525564923a82fb8a66676420",
      "tree": "4743983d507e7a1de469741d617ac7e38d0d10b5",
      "parents": [
        "c088b2d904445f501c5aa7a6fc63ca9e8b96f224"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Wed Jan 11 09:43:25 2012 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:16:47 2012 +0200"
      },
      "message": "drbd: make OOS_HANDED_TO_NETWORK its own case\n\nOOS_HANDED_TO_NETWORK should not be grouped with the various\n*_CANCELED/*_FAILED cases.\nAlso, not only clear the RQ_NET_QUEUED flag, but also mark it RQ_NET_DONE,\nso it can be distinguished from a local-only request even after that.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "c088b2d904445f501c5aa7a6fc63ca9e8b96f224",
      "tree": "67624412d3c9afbf71163174983079f3dcec363b",
      "parents": [
        "7ffcaa7194e2c96a738b936d2ae71c7f0c697c0a"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Fri Mar 23 13:57:13 2012 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:16:46 2012 +0200"
      },
      "message": "drbd: don\u0027t pretend that barrier_nr \u003d\u003d 0 was special\n\nWe used to have a barrier implementation where barrier_nr 0 was\nreserved. That is long gone. Just use the full sequence space.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "7ffcaa7194e2c96a738b936d2ae71c7f0c697c0a",
      "tree": "94119703e3f7b4923939c81a0018a3adaf0af3ec",
      "parents": [
        "a5d214f621d47ffb89d294838006d30869050297"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Thu Mar 08 12:01:56 2012 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:16:44 2012 +0200"
      },
      "message": "drbd: remove unused static helper function\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "a5d214f621d47ffb89d294838006d30869050297",
      "tree": "896682566dc23caf8b7b9ac4ee29c3c25df096bf",
      "parents": [
        "1abc2af205590b0e9c0a450f67ecb0df7b0f0b5d"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Thu Mar 08 11:49:40 2012 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:16:43 2012 +0200"
      },
      "message": "drbd: remove some very outdated comments\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "1abc2af205590b0e9c0a450f67ecb0df7b0f0b5d",
      "tree": "861a8bee49747e49446e1459617aea30295d039b",
      "parents": [
        "671a74e749af8ca28cae1bfc141f2b3f30b7ad65"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Thu Mar 08 11:47:03 2012 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:16:42 2012 +0200"
      },
      "message": "drbd: missing wakeup after drbd_rs_del_all\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "671a74e749af8ca28cae1bfc141f2b3f30b7ad65",
      "tree": "b93d74bead20b8ed828882418fef5f4bffd7ab25",
      "parents": [
        "001a88687aff26d62f8b61d55c6973618cf0f72f"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Thu Mar 08 11:45:57 2012 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:16:40 2012 +0200"
      },
      "message": "drbd: remove now unused seq_num member from struct drbd_request\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "001a88687aff26d62f8b61d55c6973618cf0f72f",
      "tree": "2946d27abb7a055fe051e7f7f66646edd36b50f6",
      "parents": [
        "b6a370ba0786b5eb09c479bffeffe7baba484ab0"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Thu Mar 08 16:43:45 2012 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:16:39 2012 +0200"
      },
      "message": "drbd: fix potential data corruption and protocol error\n\nWe assumed only bios with bi_idx \u003d\u003d 0 would end up\nin drbd_make_request().\n\nThat is wrong.\n\nAt least device mapper, in __clone_and_map(), may submit\nclones only covering a partial bio, but sharing\nthe original bvec, by adjusting bi_idx and relevant\nother bio members of the clone.\n\nWe used __bio_for_each_segment() in various places,\neven though that is documented as\n * drivers should not use the __ version unless they _really_ want to\n * run through the entire bio and not just pending pieces\n\nImpact: we would send the full bio bvec, even for the clone\nwith bi_idx \u003e 0, which will cause data corruption on the\npeer (because we submit wrong data at the clone offset),\nand will cause a DRBD protocol error, disconnect/reconnect\nand resync (thus fixing the corruption),\nbecause the next package header would be expected right\nin the middle of the sent data, causing DRBD magic mismatch.\n\nFix: drop the assert, and use bio_for_each_segment()\ninstead of the __ version.\n\nConflicts:\n\n\tdrbd/drbd_tracing.c\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "b6a370ba0786b5eb09c479bffeffe7baba484ab0",
      "tree": "f9c77b675c02ade44902532d9f62ea4e484de5cb",
      "parents": [
        "fc28845bc005995b41ae8c83c7922d088f0ad228"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Sun Feb 19 01:27:53 2012 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:16:38 2012 +0200"
      },
      "message": "drbd: Fix a potential write ordering issue on SyncTarget nodes\n\nIf a SyncTarget node gets a P_RS_DATA_REPLY before a P_DATA packet\nfor the same sector, it simply submits these two IO requests.\n\n  This is be possible because on the SyncSource node, the data of the\n  P_RS_DATA_REPLY packet was read from disk.  Immediately after that a\n  write request from upper layers came in.\n\nThe disk scheduler or even the \"hardware\" queues on the disk drive might\nreorder these writes.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "fc28845bc005995b41ae8c83c7922d088f0ad228",
      "tree": "cb5f28c4c0cfb06f46b9e1b0d7e7efcdfc132f90",
      "parents": [
        "031a7c173ffda664ac5551bd13c313e513dd87a7"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Mon Jan 16 12:14:01 2012 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:16:34 2012 +0200"
      },
      "message": "drbd: Fix a potential race that could case data inconsistency\n\nWhen we have a write request and a state change C_WF_BITMAP_S -\u003e C_SYNC_SOURCE\nat the same time, and it happens that the line\n\n\tremote \u003d remote \u0026\u0026 drbd_should_do_remote(s);\n\nstills sees C_WF_BITMAP_S, and\n\n\tsend_oos \u003d rw \u003d\u003d WRITE \u0026\u0026 drbd_should_send_oos(s);\n\nalready sees C_SYNC_SOURCE both are 0.\n\nThis causes the write to not be mirrored, but marked as out-of-sync on the\nSync_Source node.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "031a7c173ffda664ac5551bd13c313e513dd87a7",
      "tree": "95a099e1d8478becc5a40828749adcd67ef7e24d",
      "parents": [
        "47a4f1c1bb684a7ed470aba71391d3bd8d77290c"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Sat Jan 21 16:50:25 2012 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:16:33 2012 +0200"
      },
      "message": "drbd: add missing part_round_stats to _drbd_start_io_acct\n\nWithout this, iostat frequently sees bogus svctime and \u003e\u003d 100% \"utilization\".\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "47a4f1c1bb684a7ed470aba71391d3bd8d77290c",
      "tree": "0842d56c6b8015fcc52efa30e2e0674f3a52ab2c",
      "parents": [
        "7caacb69ac468ea713e8e8ba77be8040d8fe7bbe"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Thu Jan 12 23:01:26 2012 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:16:32 2012 +0200"
      },
      "message": "drbd: Fix module refcount leak in drbd_accept()\n\ndrbd_accept was modelled after kernel_accept\nwith drbd commit 53eb779 in July 2008.\n\nOnly, kernel_accept was then broken, and only fixed later\nwith kernel commit 1b08534e in Dec 2008:\nnet: Fix module refcount leak in kernel_accept()\n\nImpact: protocol families provided as modules, e.g. ipv6 or ib_sdp,\nwould soon have their reference count become negative, preventing\nthem from being unloaded (likely), or worse, hit zero without actually\nbeing unused, allowing them to be unloaded while still in use (unlikely,\nbut if triggered, causing a kernel crash).\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "7caacb69ac468ea713e8e8ba77be8040d8fe7bbe",
      "tree": "a2cfa89a0b77fe22160ca51767c37269c677b263",
      "parents": [
        "4afc433cf8066c112bd2bdd949d78ff8e8b4ba3f"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed Dec 14 18:01:21 2011 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:16:30 2012 +0200"
      },
      "message": "drbd: Consider the disk-timeout also for meta-data IO operations\n\nIf the backing device is already frozen during attach, we failed\nto recognize that. The current disk-timeout code works on top\nof the drbd_request objects. During attach we do not allow IO\nand therefore never generate a drbd_request object but block\nbefore that in drbd_make_request().\n\nThis patch adds the timeout to all drbd_md_sync_page_io().\n\nBefore this patch we used to go from D_ATTACHING directly\nto D_DISKLESS if IO failed during attach. We can no longer\ndo this since we have to stay in D_FAILED until all IO\nops issued to the backing device returned.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "4afc433cf8066c112bd2bdd949d78ff8e8b4ba3f",
      "tree": "2919bdbaf204cb54b489988d1af2101f8d320af4",
      "parents": [
        "545752d5d8a2e01b4fcb23a61ec732b2b26cbe1a"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Tue Dec 13 10:31:32 2011 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:16:29 2012 +0200"
      },
      "message": "drbd: Do not send state packets while lower than C_CONNECTED cstate\n\nI.e. in C_WF_REPORT_PARAMS or in C_WF_CONNECTION.\nSending may already work in these cstates, but the peer still expects\nthe HandShake / ConnectionFeatures packet.\n\nActually triggered by the Testuite on kugel.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "545752d5d8a2e01b4fcb23a61ec732b2b26cbe1a",
      "tree": "1614e4de9034bb2135becfebacc20eda30b64576",
      "parents": [
        "763eb63625a625e4d160cbb4cce2bcdb40141b97"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Mon Dec 05 14:39:25 2011 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:16:01 2012 +0200"
      },
      "message": "drbd: fix race between disconnect and receive_state\n\nIf the asender thread, or request_timer_fn(), or some other part of\nthe code, decided to drop the connection (because of timeout or other),\nbut the receiver just now was processing a P_STATE packet, there was a\nchance that receive_state() would do a hard state change\n\"re-establishing\" an already failed connection without additional handshake.\n\nLog excerpt:\n  Remote failed to finish a request within ko-count * timeout\n  peer( Secondary -\u003e Unknown ) conn( Connected -\u003e Timeout ) pdsk( UpToDate -\u003e DUnknown )\n  asender terminated\n  ...\n  peer( Unknown -\u003e Secondary ) conn( Timeout -\u003e Connected ) pdsk( DUnknown -\u003e UpToDate ) peer_isp( 0 -\u003e 1 )\n  ...\n  Connection closed\n  peer( Secondary -\u003e Unknown ) conn( Connected -\u003e Unconnected ) pdsk( UpToDate -\u003e DUnknown ) peer_isp( 1 -\u003e 0 )\n  receiver terminated\n\nImpact:\nwhile the connection state is erroneously \"Connected\",\nrequests may be queued and even sent,\nwhich would never be acknowledged,\nand may have been missed by the cleanup.\nThese requests would never be completed.\n\nThe next drbd_suspend_io() will then lock up,\nwaiting forever for these requests to complete.\n\nFixed in several code paths:\n  Make sure the connection state is NetworkFailure or worse\n  before starting the cleanup in drbd_disconnect().\n  This should make sure the cleanup won\u0027t miss any requests.\n\n  Disallow receive_state() to \"upgrade\" the connection state\n  from an error state. This will make sure the \"illegal\" state\n  transition won\u0027t happen.\n\n  For all connection failure states,\n  relax the safe-guard in sanitize_state() again\n  to silently mask out those state changes\n  (e.g. Timeout -\u003e Connected becomes Timeout -\u003e Timeout).\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "763eb63625a625e4d160cbb4cce2bcdb40141b97",
      "tree": "7399533f422da35884c7a67b9972b23757890256",
      "parents": [
        "e89868a0927cfb8a3f535c938e5d6dd7edc6353c"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Wed Nov 02 16:29:45 2011 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:15:58 2012 +0200"
      },
      "message": "drbd: fix potential spinlock deadlock\n\ndrbd_try_clear_on_disk_bm() has a sanity check for the number of blocks\nleft to be resynced (rs_left) in the current resync extent.\nIf it detects a mismatch, it complains, and forces a disconnect using\ndrbd_force_state(mdev, NS(conn, C_DISCONNECTING));\n\nUnfortunately, this may be called while holding the req_lock,\nand drbd_force_state() want\u0027s to aquire that lock itself. Deadlock.\n\nDon\u0027t force a disconnect, but fix up rs_left by recounting and\nreassigning the number of dirty blocks in that extent.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "e89868a0927cfb8a3f535c938e5d6dd7edc6353c",
      "tree": "e1f9fcad718008ca1591ba87eac7b2d5d87f9cd0",
      "parents": [
        "f479ea06613514814449f28cba6488e31698e406"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed Nov 09 21:04:03 2011 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:15:57 2012 +0200"
      },
      "message": "drbd: Fixed an obvious copy-n-paste mistake\n\nThis bug might have caused troubles if disk-barriers and the ahead-behind\nmore are enabled at the same time.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "f479ea06613514814449f28cba6488e31698e406",
      "tree": "b7baebab348fe1deaa6454623564359797afe09b",
      "parents": [
        "a2e9138197405a4c051630416ceebf98158e631d"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Thu Oct 27 16:52:30 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:15:56 2012 +0200"
      },
      "message": "drbd: send intermediate state change results to the peer\n\nDRBD state changes schedule after_state_ch() actions to a worker thread,\nwhich decides on the old and new states of that change, whether to send\nan informational state update packet (P_STATE) to the peer.\nIf it decides to drbd_send_state(), it would however always send the\n_curent_ state, which, if a second state change happens before the\nafter_state_ch() of the first ran, may \"fast-forward\" the peer\u0027s view\nabout this node.  In most cases that is harmless, but sometimes this can\nconfuse DRBD, for example into not actually starting a necessary resync\nif you do a very tight detach/attach loop on a Connected Secondary.\n\nFix this by always sending the \"new\" state of the respective state\ntransition which scheduled this after_state_ch() work.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "a2e9138197405a4c051630416ceebf98158e631d",
      "tree": "260a4976065d1efc85bc73d1a7c7be8c2416bb7a",
      "parents": [
        "aaae506d545bb9d06f4d8362f670f406f12e4b58"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Thu Oct 06 17:30:26 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:15:54 2012 +0200"
      },
      "message": "drbd: fix spurious meta data IO \"error\"\n\nWhen detaching, even cleanly detaching due to administrator request,\nwe always go through D_FAILED before we become D_DISKLESS.\n\nDon\u0027t let that state change race with an in-flight meta data IO,\nor that one might think it actually experienced an IO error.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "aaae506d545bb9d06f4d8362f670f406f12e4b58",
      "tree": "4fb88894b2ce6e03ea44d188752170ef7b719260",
      "parents": [
        "6a9a92f4ef05bb3e94bbfe123c21482fa5da9866"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Thu Oct 06 18:29:14 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:15:53 2012 +0200"
      },
      "message": "drbd: Fixed a race condition between detach and start of resync\n\ndrbd_state_lock() is only there to serialize cluster wide state\nchanges. Testing the local disk state needs to happen while\nholding the global_state_lock.\n\nOtherwise you might see something like this (Oct 6 on kugel)\n14:20:24 drbd0: conn( WFSyncUUID -\u003e Connected ) disk( Inconsistent -\u003e Failed )\n14:20:24 drbd0: helper command: /sbin/drbdadm before-resync-target minor-0 exit code 0 (0x0)\n14:20:24 drbd0: conn( Connected -\u003e SyncTarget ) disk( Failed -\u003e Inconsistent )\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "6a9a92f4ef05bb3e94bbfe123c21482fa5da9866",
      "tree": "f7eb75744c834b287d1656b6763cb5bb7a1402ef",
      "parents": [
        "5ba3dac52126699e541ac3ee37aad890ca835fc1"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Thu Oct 06 17:10:34 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:15:52 2012 +0200"
      },
      "message": "drbd: fix harmless race to not trigger an ASSERT\n\nWe have one pre-allocated page to do certain synchronous meta data IO with,\nusing it is serialized like so:\n\tdrbd_md_get_buffer();\n\tdrbd_md_sync_page_io();\n\tdrbd_md_sync_page_io();\n\t...\n\tdrbd_md_put_buffer();\n\nIn drbd_md_sync_page_io() there is an\n\tASSERT(atomic_read(\u0026mdev-\u003emd_io_in_use) \u003d\u003d 1);\n\nWe want to be able to timeout on unresponsive lower level devices, so we\ncan \"detach\" in that case. Inside drbd_md_sync_page_io() we grab an extra\nreference, to not have a dangling pointer in case a delayed IO eventually\ndoes still complete, even after we \"detached\" already.\n\nWe need to put the extra reference before we signal completion from the\ncompletion handler, or the second drbd_md_sync_page_io() above may\ntrigger the assert (reference count still 2).\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "5ba3dac52126699e541ac3ee37aad890ca835fc1",
      "tree": "9edec116f6f75919043f4c0663d1f88709ae5de0",
      "parents": [
        "7b4e4d31268cbd885782bf3eee8027c852c9d191"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed Oct 05 15:54:18 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:15:50 2012 +0200"
      },
      "message": "drbd: Derive sync-UUIDs only from the bitmap-uuid if it is non-zero\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "7b4e4d31268cbd885782bf3eee8027c852c9d191",
      "tree": "cd6d3dbaa71d9d6b408b4a2f9e7c386f6990ff8b",
      "parents": [
        "40424e4a24bc500639cb4bf1bf846362b0e692a5"
      ],
      "author": {
        "name": "Andreas Gruenbacher",
        "email": "agruen@kernel.org",
        "time": "Wed Sep 28 22:15:04 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:15:49 2012 +0200"
      },
      "message": "drbd: drbd_nl_resize(): Fix missing put_ldev() on error path\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "40424e4a24bc500639cb4bf1bf846362b0e692a5",
      "tree": "3747089f12567b97417121f01a7a0da19852da39",
      "parents": [
        "1e86ac48af137a3cfd48cba727e7abe132dfc8de"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Mon Sep 26 15:24:56 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:15:47 2012 +0200"
      },
      "message": "drbd: fix \"stalled\" empty resync\n\nWith sync-after dependencies, given \"lucky\" timing of pause/unpause\nevents, and the end of an empty (0 bits set) resync was sometimes not\ndetected on the SyncTarget, leading to a \"stalled\" SyncSource state.\n\nFixed this by expecting not only \"Inconsistent -\u003e UpToDate\" but also\n\"Consistent -\u003e UpToDate\" transitions for the peer disk state\nto end a resync.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "1e86ac48af137a3cfd48cba727e7abe132dfc8de",
      "tree": "0ba3f9c72f8a7fb2972b8df5ac11d352db48f97a",
      "parents": [
        "80f9fd55a66a6843373330901564ef2d9c7fb050"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Thu Aug 04 10:33:08 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:15:46 2012 +0200"
      },
      "message": "drbd: Bugfix for the connection behavior\n\nIf we get into the C_BROKEN_PIPE cstate once, the state engine set the\nthi-\u003et_state of the receiver thread to restarting.  But with the while loop\nin drbdd_init() a new connection gets established. After the call into\ndrbdd() returns immediately since the thi-\u003et_state is not RUNNING.  The\nrestart of drbd_init() then resets thi-\u003et_state to RUNNING.\n\nI.e. after entering C_BROKEN_PIPE once, the next successful established\nconnection gets wasted.\n\nThe two parts of the fix:\n  * Do not cause the thread to restart if we detect the issue\n    with the sockets while we are in C_WF_CONNECTION.\n\n  * Make sure that all actions that would have set us to C_BROKEN_PIPE\n    happen before the state change to C_WF_REPORT_PARAMS.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "80f9fd55a66a6843373330901564ef2d9c7fb050",
      "tree": "303760a80bbcd543af1cd68c23816f549c6c9a06",
      "parents": [
        "fd2491f4a4a403b376f71a336a36848158efb0fe"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Mon Jul 18 15:45:15 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:15:44 2012 +0200"
      },
      "message": "drbd: Cleanup all epoch objects upon connection loss\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "fd2491f4a4a403b376f71a336a36848158efb0fe",
      "tree": "7571481867dd5ab427541a377a885f3152994fa1",
      "parents": [
        "79f16f5dbc95da372c25afddac80f4adef3cfce1"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Mon Jul 18 16:25:15 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:15:43 2012 +0200"
      },
      "message": "drbd: detach must not try to abort non-local requests from drbd-8.4\n\nCherry picked form 8.4\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "79f16f5dbc95da372c25afddac80f4adef3cfce1",
      "tree": "90deb417250c3dc27997219e5bd64f396573f590",
      "parents": [
        "bca482e90bf87569ffb87cba2c3a777ac23e5c86"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Fri Jul 15 18:44:26 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:15:42 2012 +0200"
      },
      "message": "drbd: Consider that the no-data-condition could be in connected state\n\n...when the peer has inconsistent data. In that case we failed to\nclear the susp_nod flag. When the local disk was attached again\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "bca482e90bf87569ffb87cba2c3a777ac23e5c86",
      "tree": "1361d848be0bd4374c90e76323325dc97de72bc3",
      "parents": [
        "22f46ce2ef94151f806f84ab0f9ee43a72dfb1f1"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Fri Jul 15 12:14:27 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:10:50 2012 +0200"
      },
      "message": "drbd: Fixed current UUID generation\n\nNow, the new edition of the clause only fires if a diskless\npeer gets promoted.\n\nThis is a fixup for \"drbd: Delayed creation of current-UUID\".\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "22f46ce2ef94151f806f84ab0f9ee43a72dfb1f1",
      "tree": "f6d9d6fb9ab824187fbfa48086bee24f42867935",
      "parents": [
        "dfa8bedbfe881caf6676704ab1aae18dfe8e430a"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Mon Jul 11 17:32:26 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:10:47 2012 +0200"
      },
      "message": "drbd: change some GFP_KERNEL to GFP_NOIO\n\nBitmap IO may happend in the context of an application write,\nin the generic block IO path.  We need to use GFP_NOIO.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "dfa8bedbfe881caf6676704ab1aae18dfe8e430a",
      "tree": "416102d8cd59c6be45b072c2ce123c6cb8f63f52",
      "parents": [
        "02ee8f95fadf7c94b3d28df436a095152f6392b2"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed Jun 29 14:06:08 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:10:45 2012 +0200"
      },
      "message": "drbd: Implemented the disk-timeout option\n\nWhen the disk-timeout is active, and it expires for a single request,\nwe consider the local disk as D_FAILED. Note: With this change,\nI made both timeout based state transitions HARD state transitions.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "02ee8f95fadf7c94b3d28df436a095152f6392b2",
      "tree": "14ae2da3dc302a7f061023d9ed0eab3c790ae458",
      "parents": [
        "5ca1de0384dafe843de10fed843de26de740bca1"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Mon Mar 14 11:54:47 2011 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:10:38 2012 +0200"
      },
      "message": "drbd: Force flag for the detach operation\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "5ca1de0384dafe843de10fed843de26de740bca1",
      "tree": "64998e65c2f3c051c7c64907d718c4eb791eeddb",
      "parents": [
        "9e58c4dad70bfba86f016bcc98fa19f468d0b777"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Tue Jun 28 17:01:19 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:10:34 2012 +0200"
      },
      "message": "drbd: Allow new IOs while the local disk in in FAILED state\n\nThe last bunch of commits prepared the \u0027detach from tar pit\u0027 feature.\nWith that we can be for long time in disk state FAILED. We need\nto accept new IO requests during that time.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "9e58c4dad70bfba86f016bcc98fa19f468d0b777",
      "tree": "c67117886829bfe77699498940c434a560fc4b64",
      "parents": [
        "d1f3779bbeae70b9552c9ac70d6ec8c4d3545615"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Mon Jun 27 15:29:16 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 15:10:33 2012 +0200"
      },
      "message": "drbd: Bitmap IO functions can now return prematurely if the disk breaks\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "d1f3779bbeae70b9552c9ac70d6ec8c4d3545615",
      "tree": "306089519ac84f24e0674de930931e21f3859d6a",
      "parents": [
        "b2057629ea96c33e4ae38102ecd0f27ed9a3c3ef"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Mon Jun 27 14:56:52 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 10:37:19 2012 +0200"
      },
      "message": "drbd: Added a kref to bm_aio_ctx\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "b2057629ea96c33e4ae38102ecd0f27ed9a3c3ef",
      "tree": "6b7723e1aab29c4e83377168cf26482447d788eb",
      "parents": [
        "4a2fe568b5428abc56d7d172e3571e33d8ab7265"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Mon Jun 27 12:23:33 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 10:31:11 2012 +0200"
      },
      "message": "drbd: Hold a reference to ldev while doing meta-data IO\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "4a2fe568b5428abc56d7d172e3571e33d8ab7265",
      "tree": "e5e83c91e470b55fc0891db355a1133e8b40cf2b",
      "parents": [
        "0c464425158482647226fb30708c68fffc061585"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Mon Jul 04 11:14:31 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 10:28:51 2012 +0200"
      },
      "message": "drbd: Keep a reference to the bio until the completion handler finished\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "0c464425158482647226fb30708c68fffc061585",
      "tree": "8928c71c627290637da06ae9308ba95eef87189f",
      "parents": [
        "e17117310b73ce6d2340ad46a539d3896a2d6de8"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Sun Jun 26 22:26:31 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 10:26:51 2012 +0200"
      },
      "message": "drbd: Implemented wait_until_done_or_disk_failure()\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "e17117310b73ce6d2340ad46a539d3896a2d6de8",
      "tree": "66fed6cc939a402f70a51fdebb3b27f1f629b0ea",
      "parents": [
        "cc94c65015022e7329e80e057e20848581d3f2a5"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Mon Jun 27 11:51:46 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 10:22:31 2012 +0200"
      },
      "message": "drbd: Replaced md_io_mutex by an atomic: md_io_in_use\n\nThe new function drbd_md_get_buffer() aborts waiting for the buffer\nin case the disk failes in the meantime.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "cc94c65015022e7329e80e057e20848581d3f2a5",
      "tree": "fafbda3f94b0658a46f0d8254076d865e9538d32",
      "parents": [
        "2b4dd36fbae7203a0d503a6cede1f4ce17aa72ac"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Sun Jun 26 11:20:27 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 10:17:24 2012 +0200"
      },
      "message": "drbd: moved md_io into mdev\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "2b4dd36fbae7203a0d503a6cede1f4ce17aa72ac",
      "tree": "09ad826a0203980e3ae54c1917a3a6badf51b773",
      "parents": [
        "6d7e32f56806ad58006720ed98a433b2047444da"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Mon Mar 14 13:01:50 2011 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 10:16:04 2012 +0200"
      },
      "message": "drbd: Immediately allow completion of IOs, that wait for IO completions on a failed disk\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "6d7e32f56806ad58006720ed98a433b2047444da",
      "tree": "3b4231bb929e0381ab69ede1204d622b08fea176",
      "parents": [
        "6809384c7152c34e74e29a4033826a300eb94f11"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Tue Mar 15 10:25:18 2011 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 10:15:28 2012 +0200"
      },
      "message": "drbd: Keep a reference to barrier acked requests\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "6809384c7152c34e74e29a4033826a300eb94f11",
      "tree": "814cd296ad8e8ca958d5ebc1571eec581c6062de",
      "parents": [
        "77e8fdfc188f0490754f703f80d2853c69052c12"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Thu Jun 30 15:43:06 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 10:08:57 2012 +0200"
      },
      "message": "drbd: Improve compatibility with drbd\u0027s older than 8.3.7\n\nRegression introduced with 8.3.11 commit:\ndrbd: Take a more conservative approach when deciding max_bio_size\n\nNever ever tell an older drbd, that we support more than 32KiB\nin a single data request (packet).\nNever believe an older drbd, that is supports more than 32KiB\nin a single data request (packet)\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "77e8fdfc188f0490754f703f80d2853c69052c12",
      "tree": "a56b084ec28ab6d376b0da3bcd4684f29f00cacd",
      "parents": [
        "07667347c89e5d971243a411ca4ed83ad14f9f9e"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed Jun 29 10:49:13 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 10:08:22 2012 +0200"
      },
      "message": "drbd: Only print sanitize state\u0027s warnings, if the state change happens\n\nThe reason for this change is that, with when doing\n\u0027drbdadm invalidate\u0027 on a disconnected resource caused\nan \"implicitly set pdsk from UpToDate to DUnknown\" message,\nwhich was missleading.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "07667347c89e5d971243a411ca4ed83ad14f9f9e",
      "tree": "cbe20ef72d0a0f225da0936c61389d92b5859bf6",
      "parents": [
        "071cf1c9a7043660be08358e4b508f62120f224b"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Tue Jun 21 01:13:37 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 10:05:25 2012 +0200"
      },
      "message": "drbd: downgraded error printk to info\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "5f138ce01ae6430db2e2cebd0a945dff75581d62",
      "tree": "4790fc682c7366b4f3fb72f28af2238052ee9309",
      "parents": [
        "7948bcdc38b9af9ef3e72199cdea1d775a9537fc"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Wed Jun 15 00:59:04 2011 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 10:03:19 2012 +0200"
      },
      "message": "DRBD: Fix comparison always false warning due to long/long long compare\n\nFix warnings of the following nature in the drbd header:\n\nIn file included from drivers/block/drbd/drbd_bitmap.c:32:\ndrivers/block/drbd/drbd_int.h: In function \u0027drbd_get_syncer_progress\u0027:\ndrivers/block/drbd/drbd_int.h:2234: warning: comparison is always false due to limited range of data\n\nwhere mdev-\u003ers_total (an unsigned long) is being compared to 1ULL \u003c\u003c 32, which\nis always false on a 32-bit machine.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\n"
    },
    {
      "commit": "7948bcdc38b9af9ef3e72199cdea1d775a9537fc",
      "tree": "24672b4ed3f4c1bdd36f9c2f715ad59eafd7b59c",
      "parents": [
        "1381e9a4969d8d24ce7b4bab048f3cb3fc9c1283"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Mon Jun 06 15:36:04 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 10:02:22 2012 +0200"
      },
      "message": "drbd: spelling fix: too small\n\nIt is not \"to small\", but \"too small\".\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "1381e9a4969d8d24ce7b4bab048f3cb3fc9c1283",
      "tree": "bb4dc384be382a482cb96579906da8905123fb3a",
      "parents": [
        "ebd2b0cde5a4c02e2999fc3dc4a59fdd8a040fb6"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Fri Jun 03 21:13:17 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 10:01:39 2012 +0200"
      },
      "message": "drbd: cosmetic: fix accidental division instead of modulo when pretty printing\n\nFor large resync rates, seq_printf_with_thousands_grouping()\naccidentally only produced Y,000,00Y, instead of the real numbers.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "ebd2b0cde5a4c02e2999fc3dc4a59fdd8a040fb6",
      "tree": "aae9f3ff793afde1c5a2b9e72488f8d4b15bd4a8",
      "parents": [
        "0b7877d4eea3f93e3dd941999522bbd8c538cb53"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 25 11:03:04 2011 +0200"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Wed May 09 09:59:29 2012 +0200"
      },
      "message": "drbd: Lower log priority for an event that is definitely not an error\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "4a17fd5229c1b6066aa478f6b690f8293ce811a1",
      "tree": "f6acd00935d2d7a990befb4c77f57fdf39f46689",
      "parents": [
        "59c55bdde856c4000bbeb33ba212c3df6f1997a4"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@parallels.com",
        "time": "Thu Apr 19 03:39:36 2012 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Apr 21 15:52:25 2012 -0400"
      },
      "message": "sock: Introduce named constants for sk_reuse\n\nName them in a \"backward compatible\" manner, i.e. reuse or not\nare still 1 and 0 respectively. The reuse value of 2 means that\nthe socket with it will forcibly reuse everyone else\u0027s port.\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "70834d3070c3f3015ab5c05176d54bd4a0100546",
      "tree": "4dbcea84c4584de05f83aa911164902b3f00265f",
      "parents": [
        "a02d6fd643cbd4c559113b35b31d3b04e4ec60c7"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Mar 23 15:02:46 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 23 16:58:41 2012 -0700"
      },
      "message": "usermodehelper: use UMH_WAIT_PROC consistently\n\nA few call_usermodehelper() callers use the hardcoded constant instead of\nthe proper UMH_WAIT_PROC, fix them.\n\nReported-by: Tetsuo Handa \u003cpenguin-kernel@i-love.sakura.ne.jp\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Lars Ellenberg \u003cdrbd-dev@lists.linbit.com\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Michal Januszewski \u003cspock@gentoo.org\u003e\nCc: Florian Tobias Schandinat \u003cFlorianSchandinat@gmx.de\u003e\nCc: Kentaro Takeda \u003ctakedakn@nttdata.co.jp\u003e\nCc: Tetsuo Handa \u003cpenguin-kernel@I-love.SAKURA.ne.jp\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "589973a7042f5a91a5b8bf78a32c97ae073e2c72",
      "tree": "1cc3f936ac3eca68dddb054bd1b75dc1a2b77a85",
      "parents": [
        "97d5dd121c3304c65326f1ce9f04f7d0161827bc"
      ],
      "author": {
        "name": "Cong Wang",
        "email": "amwang@redhat.com",
        "time": "Fri Nov 25 23:51:58 2011 +0800"
      },
      "committer": {
        "name": "Cong Wang",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Tue Mar 20 21:48:29 2012 +0800"
      },
      "message": "drbd: remove the second argument of k[un]map_atomic()\n\nSigned-off-by: Cong Wang \u003camwang@redhat.com\u003e\n"
    },
    {
      "commit": "cfd8005c99c68882e962807d36603791adddfb9f",
      "tree": "49ddae09cf9067a3729bbc58ab65c117cbca93ce",
      "parents": [
        "496cda8e75d90301cb1e6bbebea643c6bac1e6d6"
      ],
      "author": {
        "name": "Cong Wang",
        "email": "amwang@redhat.com",
        "time": "Fri Nov 25 23:14:18 2011 +0800"
      },
      "committer": {
        "name": "Cong Wang",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Tue Mar 20 21:48:16 2012 +0800"
      },
      "message": "block: remove the second argument of k[un]map_atomic()\n\nSigned-off-by: Cong Wang \u003camwang@redhat.com\u003e\n"
    },
    {
      "commit": "90ab5ee94171b3e28de6bb42ee30b527014e0be7",
      "tree": "fcf89889f6e881f2b231d3d20287c08174ce4b54",
      "parents": [
        "476bc0015bf09dad39d36a8b19f76f0c181d1ec9"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jan 13 09:32:20 2012 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Fri Jan 13 09:32:20 2012 +1030"
      },
      "message": "module_param: make bool parameters really bool (drivers \u0026 misc)\n\nmodule_param(bool) used to counter-intuitively take an int.  In\nfddd5201 (mid-2009) we allowed bool or int/unsigned int using a messy\ntrick.\n\nIt\u0027s time to remove the int/unsigned int option.  For this version\nit\u0027ll simply give a warning, but it\u0027ll break next kernel version.\n\nAcked-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "b4fdcb02f1e39c27058a885905bd0277370ba441",
      "tree": "fd4cfd1994f21f44afe5e7904681fb5ac09f81b8",
      "parents": [
        "044595d4e448305fbaec472eb7d22636d24e7d8c",
        "6dd9ad7df2019b1e33a372a501907db293ebcd0d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 04 17:06:58 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 04 17:06:58 2011 -0700"
      },
      "message": "Merge branch \u0027for-3.2/core\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-3.2/core\u0027 of git://git.kernel.dk/linux-block: (29 commits)\n  block: don\u0027t call blk_drain_queue() if elevator is not up\n  blk-throttle: use queue_is_locked() instead of lockdep_is_held()\n  blk-throttle: Take blkcg-\u003elock while traversing blkcg-\u003epolicy_list\n  blk-throttle: Free up policy node associated with deleted rule\n  block: warn if tag is greater than real_max_depth.\n  block: make gendisk hold a reference to its queue\n  blk-flush: move the queue kick into\n  blk-flush: fix invalid BUG_ON in blk_insert_flush\n  block: Remove the control of complete cpu from bio.\n  block: fix a typo in the blk-cgroup.h file\n  block: initialize the bounce pool if high memory may be added later\n  block: fix request_queue lifetime handling by making blk_queue_cleanup() properly shutdown\n  block: drop @tsk from attempt_plug_merge() and explain sync rules\n  block: make get_request[_wait]() fail if queue is dead\n  block: reorganize throtl_get_tg() and blk_throtl_bio()\n  block: reorganize queue draining\n  block: drop unnecessary blk_get/put_queue() in scsi_cmd_ioctl() and blk_get_tg()\n  block: pass around REQ_* flags instead of broken down booleans during request alloc/free\n  block: move blk_throtl prototypes to block/blk.h\n  block: fix genhd refcounting in blkio_policy_parse_and_set()\n  ...\n\nFix up trivial conflicts due to \"mddev_t\" -\u003e \"struct mddev\" conversion\nand making the request functions be of type \"void\" instead of \"int\" in\n - drivers/md/{faulty.c,linear.c,md.c,md.h,multipath.c,raid0.c,raid1.c,raid10.c,raid5.c}\n - drivers/staging/zram/zram_drv.c\n"
    },
    {
      "commit": "5c04b426f2e8b46cfc7969a35b2631063a3c646c",
      "tree": "2d27d9f5d2fe5d5e8fbc01a467ec58bcb50235c1",
      "parents": [
        "499337bb6511e665a236a6a947f819d98ea340c6",
        "899e3ee404961a90b828ad527573aaaac39f0ab1"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:30:42 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:30:42 2011 +0200"
      },
      "message": "Merge branch \u0027v3.1-rc10\u0027 into for-3.2/core\n\nConflicts:\n\tblock/blk-core.c\n\tinclude/linux/blkdev.h\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "e060c38434b2caa78efe7cedaff4191040b65a15",
      "tree": "407361230bf6733f63d8e788e4b5e6566ee04818",
      "parents": [
        "10e4ac572eeffe5317019bd7330b6058a400dfc2",
        "cc39c6a9bbdebfcf1a7dee64d83bf302bc38d941"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Sep 15 15:08:05 2011 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Sep 15 15:08:18 2011 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n\nFast-forward merge with Linus to be able to merge patches\nbased on more recent version of the tree.\n"
    },
    {
      "commit": "e5de063016ce838aff08683ce38ac40211c247d9",
      "tree": "1b4cd4e201ba784bcefcd06c0b42207b64a05f69",
      "parents": [
        "e0ffaa8cba275c48531f1a005f8ff8973fbebea9"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "jj@chaosbits.net",
        "time": "Mon Aug 01 23:16:06 2011 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Sep 15 14:57:06 2011 +0200"
      },
      "message": "Remove unneeded version.h includes from drivers/block/\n\nIt was pointed out by \u0027make versioncheck\u0027 that some includes of\nlinux/version.h are not needed in drivers/block/.\nThis patch removes them.\n\nSigned-off-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "1d273b929cad7b1ee95d5c15ac806b3abc764278",
      "tree": "53e1b3103a9d3c486211d63af428f5debb90f6c7",
      "parents": [
        "3dbd4439837f2cfd2ff302897353f4b1b6263b2a"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Fri Jun 03 02:28:46 2011 -0700"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Sep 15 14:02:57 2011 +0200"
      },
      "message": "drbd: Use angle brackets for system includes\n\nUse the normal include style.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "57f3224c3f838844cdae5e4a9d63e03152013f9a",
      "tree": "58b0195a271b810144f375f32f76755c1d44b6cb",
      "parents": [
        "3a816054fcd345d0fe47c666c375d372c6170371"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Sat May 28 10:36:24 2011 -0700"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Thu Sep 15 13:55:02 2011 +0200"
      },
      "message": "drbd: Convert vmalloc/memset to vzalloc\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "5a7bbad27a410350e64a2d7f5ec18fc73836c14f",
      "tree": "3447cd62dbcbd77b4071e2eb7576f1d7632ef2d3",
      "parents": [
        "c20e8de27fef9f59869c81c288ad6cf28200e00c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Sep 12 12:12:01 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Sep 12 12:12:01 2011 +0200"
      },
      "message": "block: remove support for bio remapping from -\u003emake_request\n\nThere is very little benefit in allowing to let a -\u003emake_request\ninstance update the bios device and sector and loop around it in\n__generic_make_request when we can archive the same through calling\ngeneric_make_request from the driver and letting the loop in\ngeneric_make_request handle it.\n\nNote that various drivers got the return value from -\u003emake_request and\nreturned non-zero values for errors.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "ddad9ef5826efdfbbdb67b13b46f30e43e46ec3e",
      "tree": "e61bae18a470e75fc46b23b9923e224aba93868d",
      "parents": [
        "e2a5429ff7947ad251310376384f449297b7492a"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Tue Aug 02 12:43:49 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Aug 02 12:43:49 2011 +0200"
      },
      "message": "drivers/block/drbd/drbd_nl.c: use bitmap_parse instead of __bitmap_parse\n\nThe buffer \u0027sc.cpu_mask\u0027 is a kernel buffer.  If bitmap_parse is used\ninstead of __bitmap_parse the extra parameter that indicates a kernel\nbuffer is not needed.\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nCc: Lars Ellenberg \u003cdrbd-dev@lists.linbit.com\u003e\nCc: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    }
  ],
  "next": "7b28afe01ab6ffb5f152f47831b44933facd2328"
}
