)]}'
{
  "commit": "a0d64a61db602696f4f1895a890c65eda5b3b618",
  "tree": "a448fb1c4f0a3b60b0fb09f0bd81beab9ef748db",
  "parents": [
    "5ac724184c286b367525035eabf4b8bb4a386c54"
  ],
  "author": {
    "name": "Alberto Garcia",
    "email": "berto@igalia.com",
    "time": "Wed Nov 04 15:15:36 2015 +0200"
  },
  "committer": {
    "name": "Kevin Wolf",
    "email": "kwolf@redhat.com",
    "time": "Wed Nov 11 16:25:47 2015 +0100"
  },
  "message": "throttle: Use bs-\u003ethrottle_state instead of bs-\u003eio_limits_enabled\n\nThere are two ways to check for I/O limits in a BlockDriverState:\n\n- bs-\u003ethrottle_state: if this pointer is not NULL, it means that this\n  BDS is member of a throttling group, its ThrottleTimers structure\n  has been initialized and its I/O limits are ready to be applied.\n\n- bs-\u003eio_limits_enabled: if true it means that the throttle_state\n  pointer is valid _and_ the limits are currently enabled.\n\nThe latter is used in several places to check whether a BDS has I/O\nlimits configured, but what it really checks is whether requests\nare being throttled or not. For example, io_limits_enabled can be\ntemporarily set to false in cases like bdrv_read_unthrottled() without\notherwise touching the throtting configuration of that BDS.\n\nThis patch replaces bs-\u003eio_limits_enabled with bs-\u003ethrottle_state in\nall cases where what we really want to check is the existence of I/O\nlimits, not whether they are currently enabled or not.\n\nSigned-off-by: Alberto Garcia \u003cberto@igalia.com\u003e\nSigned-off-by: Kevin Wolf \u003ckwolf@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "34935015dd36448dd2c1ab81fbaf692220c36afe",
      "old_mode": 33188,
      "old_path": "block.c",
      "new_id": "cffac75016f4a951be8f1e68602f3d92b3195b7c",
      "new_mode": 33188,
      "new_path": "block.c"
    },
    {
      "type": "modify",
      "old_id": "ec0f5139e25574725794521d5f096581356705ce",
      "old_mode": 33188,
      "old_path": "block/qapi.c",
      "new_id": "89d42741773de4c1099dcbfad3445ef42422e7f0",
      "new_mode": 33188,
      "new_path": "block/qapi.c"
    },
    {
      "type": "modify",
      "old_id": "7645d491cb9a95f69ac943046ef87637950c2a63",
      "old_mode": 33188,
      "old_path": "blockdev.c",
      "new_id": "3598b014196a9b762852509faa2b49ef2f5d2b5b",
      "new_mode": 33188,
      "new_path": "blockdev.c"
    },
    {
      "type": "modify",
      "old_id": "6a3f64da1213519e425c0d4abde92528dee3305a",
      "old_mode": 33188,
      "old_path": "include/block/block_int.h",
      "new_id": "603145a21d35fb5bc11746cad066573f5b9533ee",
      "new_mode": 33188,
      "new_path": "include/block/block_int.h"
    }
  ]
}
