)]}'
{
  "commit": "433fcea40c31ff355f84da22a46977c2a1b596c3",
  "tree": "47a995db30935c88634c46402b26d736a10d8b73",
  "parents": [
    "ccee48aa736b97f0ce4ab04ad41815f0e575d526"
  ],
  "author": {
    "name": "Stefan Hajnoczi",
    "email": "stefanha@redhat.com",
    "time": "Wed Sep 13 16:00:43 2023 -0400"
  },
  "committer": {
    "name": "Kevin Wolf",
    "email": "kwolf@redhat.com",
    "time": "Tue Oct 31 15:41:42 2023 +0100"
  },
  "message": "util/defer-call: move defer_call() to util/\n\nThe networking subsystem may wish to use defer_call(), so move the code\nto util/ where it can be reused.\n\nAs a reminder of what defer_call() does:\n\nThis API defers a function call within a defer_call_begin()/defer_call_end()\nsection, allowing multiple calls to batch up. This is a performance\noptimization that is used in the block layer to submit several I/O requests\nat once instead of individually:\n\n  defer_call_begin(); \u003c-- start of section\n  ...\n  defer_call(my_func, my_obj); \u003c-- deferred my_func(my_obj) call\n  defer_call(my_func, my_obj); \u003c-- another\n  defer_call(my_func, my_obj); \u003c-- another\n  ...\n  defer_call_end(); \u003c-- end of section, my_func(my_obj) is called once\n\nSuggested-by: Ilya Maximets \u003ci.maximets@ovn.org\u003e\nReviewed-by: Philippe Mathieu-Daudé \u003cphilmd@linaro.org\u003e\nSigned-off-by: Stefan Hajnoczi \u003cstefanha@redhat.com\u003e\nMessage-ID: \u003c20230913200045.1024233-3-stefanha@redhat.com\u003e\nReviewed-by: Michael S. Tsirkin \u003cmst@redhat.com\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": "cd8d6b140f4662e0bccde38e4341dc37edd0ada4",
      "old_mode": 33188,
      "old_path": "MAINTAINERS",
      "new_id": "018ed62560f94ecfef5ff1d1dbeb7b550b3f8186",
      "new_mode": 33188,
      "new_path": "MAINTAINERS"
    },
    {
      "type": "modify",
      "old_id": "7cf6d61f473ee6a99d68ec5e78a7eae3a3c0cff3",
      "old_mode": 33188,
      "old_path": "block/blkio.c",
      "new_id": "0a0a6c0f5fde6ae874982671dbe9842d2d8c70e0",
      "new_mode": 33188,
      "new_path": "block/blkio.c"
    },
    {
      "type": "modify",
      "old_id": "8429f341be7c3affcdea11879f353e28cd3204b4",
      "old_mode": 33188,
      "old_path": "block/io_uring.c",
      "new_id": "3a1e1f45b3cd318e1c2cc41ab88df580fae3725b",
      "new_mode": 33188,
      "new_path": "block/io_uring.c"
    },
    {
      "type": "modify",
      "old_id": "49a37174c273c7f82f4f7d6415d34b9322281512",
      "old_mode": 33188,
      "old_path": "block/linux-aio.c",
      "new_id": "a2670b3e46269109eb253ac6b89dae1250c8d6a6",
      "new_mode": 33188,
      "new_path": "block/linux-aio.c"
    },
    {
      "type": "modify",
      "old_id": "f351b9d0d3327554557829c64991a668eb5de12c",
      "old_mode": 33188,
      "old_path": "block/meson.build",
      "new_id": "59ff6d380c041e415e0e49f127e787c94faa301e",
      "new_mode": 33188,
      "new_path": "block/meson.build"
    },
    {
      "type": "modify",
      "old_id": "dfbd1085fdbb1df9a4de6953772b56a172c7fe00",
      "old_mode": 33188,
      "old_path": "block/nvme.c",
      "new_id": "96b3f8f2fa1dcc19cde155e00d790907119f2380",
      "new_mode": 33188,
      "new_path": "block/nvme.c"
    },
    {
      "type": "modify",
      "old_id": "e9dd8f8a996c04ffe7bfcb3e8e107c039c2ac2c9",
      "old_mode": 33188,
      "old_path": "hw/block/dataplane/xen-block.c",
      "new_id": "c4bb28c66fede684b4a6ee02a2b89009f64869bc",
      "new_mode": 33188,
      "new_path": "hw/block/dataplane/xen-block.c"
    },
    {
      "type": "modify",
      "old_id": "6a45033d151a9dd3d377f1de80f9943096a1be0b",
      "old_mode": 33188,
      "old_path": "hw/block/virtio-blk.c",
      "new_id": "a1f8e155227591fb428f065d11658f133e348a6b",
      "new_mode": 33188,
      "new_path": "hw/block/virtio-blk.c"
    },
    {
      "type": "modify",
      "old_id": "42fcbcb45f182b88666292199937728665fbf9f3",
      "old_mode": 33188,
      "old_path": "hw/scsi/virtio-scsi.c",
      "new_id": "9c751bf29699697e40a24bc5149583f9380b7cee",
      "new_mode": 33188,
      "new_path": "hw/scsi/virtio-scsi.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e2c1d245728a4ac4fb139e0c7a1f283f36ad6bbd",
      "new_mode": 33188,
      "new_path": "include/qemu/defer-call.h"
    },
    {
      "type": "modify",
      "old_id": "cfcfd85c1d24d1b28ae689d236c9b317ee618938",
      "old_mode": 33188,
      "old_path": "include/sysemu/block-backend-io.h",
      "new_id": "d174275a5cb6bb5926cee22fc1a2e6afd99f2e5f",
      "new_mode": 33188,
      "new_path": "include/sysemu/block-backend-io.h"
    },
    {
      "type": "rename",
      "old_id": "f26173559c1f1d8c5ae4f77badbcf70da71d1337",
      "old_mode": 33188,
      "old_path": "block/plug.c",
      "new_id": "037dc0abf0a6850664fccf26c6c2e84edaec6ba0",
      "new_mode": 33188,
      "new_path": "util/defer-call.c",
      "score": 98
    },
    {
      "type": "modify",
      "old_id": "c4827fd70aa241d4c3ba7a868b2e4ed253b26a8e",
      "old_mode": 33188,
      "old_path": "util/meson.build",
      "new_id": "769b24f2e0df23a755a4ed460c5d67cfc49aa4c4",
      "new_mode": 33188,
      "new_path": "util/meson.build"
    }
  ]
}
