)]}'
{
  "commit": "2f388b93a147258f9dbc83ebe63365edac4aa7a2",
  "tree": "bf98cb87589b0bc996b5d7366996dbcc1817def0",
  "parents": [
    "f406c03c093f1451ac0ba7fde31eeb78e5e5e417"
  ],
  "author": {
    "name": "Alberto Garcia",
    "email": "berto@igalia.com",
    "time": "Mon Jun 15 18:41:15 2015 +0300"
  },
  "committer": {
    "name": "Stefan Hajnoczi",
    "email": "stefanha@redhat.com",
    "time": "Tue Jun 23 15:06:16 2015 +0100"
  },
  "message": "throttle: Check current timers before updating any_timer_armed[]\n\nCalling throttle_group_config() cancels all timers from a particular\nBlockDriverState, so any_timer_armed[] should be updated accordingly.\n\nHowever, with the current code it may happen that a timer is armed in\na different BlockDriverState from the same group, so any_timer_armed[]\nwould be set to false in a situation where there is still a timer\narmed.\n\nThe consequence is that we might end up with two timers armed. This\nshould not have any noticeable impact however, since all accesses to\nthe ThrottleGroup are protected by a lock, and the situation would\nbecome normal again shortly thereafter as soon as all timers have been\nfired.\n\nThe correct way to solve this is to check that we\u0027re actually\ncancelling a timer before updating any_timer_armed[].\n\nSigned-off-by: Alberto Garcia \u003cberto@igalia.com\u003e\nMessage-id: 1434382875-3998-1-git-send-email-berto@igalia.com\nSigned-off-by: Stefan Hajnoczi \u003cstefanha@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "efc462fbc556678118760e47b4ec29e92049a48f",
      "old_mode": 33188,
      "old_path": "block/throttle-groups.c",
      "new_id": "1abc6fcaea73690aeb5f175dfcc7122471c4061d",
      "new_mode": 33188,
      "new_path": "block/throttle-groups.c"
    }
  ]
}
