)]}'
{
  "commit": "af28b65fae6fcbc22efdbcd4d71b37fd0c8adf89",
  "tree": "281d6514b481f7eb7d1fb43a3d547f1adb6b1d81",
  "parents": [
    "196a50b0902b0951ce331212f7bcf109de832b5f"
  ],
  "author": {
    "name": "Denis V. Lunev",
    "email": "den@openvz.org",
    "time": "Mon Aug 24 15:37:25 2026 +0200"
  },
  "committer": {
    "name": "Kevin Wolf",
    "email": "kwolf@redhat.com",
    "time": "Wed Oct 07 17:36:20 2026 +0200"
  },
  "message": "qcow2: do not clear the dirty bit when reopening a read-only node\n\nqcow2_reopen_prepare() clears the dirty bit whenever the node is\nreopened read-only, with an unguarded header write. A read-only node\ncan still be dirty, inherited from an earlier writable session, and it\nholds no BLK_PERM_WRITE to resolve that. A read-only to read-only\nreopen of a dirty image therefore fails outright:\n\n  $ qemu-io -r -f qcow2 dirty.qcow2 \u003c\u003c\u003c $\u0027reopen -r\\nquit\u0027\n  qemu-io: failed while preparing to reopen image \u0027dirty.qcow2\u0027\n\nWhere the file node below is writable the write is not refused early,\nand bdrv_co_write_req_prepare() aborts on its BLK_PERM_WRITE assertion\ninstead.\n\nClear it only for a node that is writable now, the predicate\nqcow2_do_open() already uses for the repair. bdrv_is_writable() also\nexcludes an inactive node, whose header must not be touched either.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nReviewed-by: Andrey Drobyshev \u003candrey.drobyshev@virtuozzo.com\u003e\nCC: Kevin Wolf \u003ckwolf@redhat.com\u003e\nCC: Hanna Reitz \u003chreitz@redhat.com\u003e\nCC: Andrey Drobyshev \u003candrey.drobyshev@virtuozzo.com\u003e\nCc: qemu-stable@nongnu.org\nMessage-ID: \u003c20260824133729.1141990-2-den@openvz.org\u003e\nReviewed-by: Kevin Wolf \u003ckwolf@redhat.com\u003e\nSigned-off-by: Kevin Wolf \u003ckwolf@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7292dd036c9d4cc9ca4d1f4ffc20924feb951115",
      "old_mode": 33188,
      "old_path": "block/qcow2.c",
      "new_id": "1543255eba87e6b699afc4e9776e098e16e2f068",
      "new_mode": 33188,
      "new_path": "block/qcow2.c"
    },
    {
      "type": "modify",
      "old_id": "8fe677ce731cd2183763a46b739baa889295e816",
      "old_mode": 33261,
      "old_path": "tests/qemu-iotests/039",
      "new_id": "686c6da50fd3b91bfe9f70c61889b313a042aa11",
      "new_mode": 33261,
      "new_path": "tests/qemu-iotests/039"
    },
    {
      "type": "modify",
      "old_id": "c66361128f62de565444a8fee3c28870af364bd5",
      "old_mode": 33188,
      "old_path": "tests/qemu-iotests/039.out",
      "new_id": "ce8ee577216134500d312875e2e45504573e6672",
      "new_mode": 33188,
      "new_path": "tests/qemu-iotests/039.out"
    }
  ]
}
