{"push_id":2938886766,"size":285,"distinct_size":0,"ref":"refs/heads/master","head":"3c2d3042849686969add641bd38b08b9877b9e8f","before":"0a736f7ab83df26dbe5421bb3d1f7892def05dee","commits":[{"sha":"5360782d0827854383097d560715d8d8027ee590","author":{"name":"John Snow","email":"624c376396b1be97fa9f2557aab38fb7d8603d8b@redhat.com"},"message":"block/commit: add block job creation flags\n\nAdd support for taking and passing forward job creation flags.\n\nSigned-off-by: John Snow <jsnow@redhat.com>\nReviewed-by: Max Reitz <mreitz@redhat.com>\nReviewed-by: Jeff Cody <jcody@redhat.com>\nMessage-id: 20180906130225.5118-2-jsnow@redhat.com\nSigned-off-by: Max Reitz <mreitz@redhat.com>","distinct":false,"url":"https://api.github.com/repos/dgibson/qemu/commits/5360782d0827854383097d560715d8d8027ee590"},{"sha":"a1999b33488daba68a1bcd7c6fdf314ddeacc6a2","author":{"name":"John Snow","email":"624c376396b1be97fa9f2557aab38fb7d8603d8b@redhat.com"},"message":"block/mirror: add block job creation flags\n\nAdd support for taking and passing forward job creation flags.\n\nSigned-off-by: John Snow <jsnow@redhat.com>\nReviewed-by: Max Reitz <mreitz@redhat.com>\nReviewed-by: Jeff Cody <jcody@redhat.com>\nMessage-id: 20180906130225.5118-3-jsnow@redhat.com\nSigned-off-by: Max Reitz <mreitz@redhat.com>","distinct":false,"url":"https://api.github.com/repos/dgibson/qemu/commits/a1999b33488daba68a1bcd7c6fdf314ddeacc6a2"},{"sha":"cf6320df581e6cbde6a95075266859a8f9ba9d55","author":{"name":"John Snow","email":"624c376396b1be97fa9f2557aab38fb7d8603d8b@redhat.com"},"message":"block/stream: add block job creation flags\n\nAdd support for taking and passing forward job creation flags.\n\nSigned-off-by: John Snow <jsnow@redhat.com>\nReviewed-by: Max Reitz <mreitz@redhat.com>\nReviewed-by: Jeff Cody <jcody@redhat.com>\nMessage-id: 20180906130225.5118-4-jsnow@redhat.com\nSigned-off-by: Max Reitz <mreitz@redhat.com>","distinct":false,"url":"https://api.github.com/repos/dgibson/qemu/commits/cf6320df581e6cbde6a95075266859a8f9ba9d55"},{"sha":"22dffcbec62ba918db690ed44beba4bd4e970bb9","author":{"name":"John Snow","email":"624c376396b1be97fa9f2557aab38fb7d8603d8b@redhat.com"},"message":"block/commit: refactor commit to use job callbacks\n\nUse the component callbacks; prepare, abort, and clean.\n\nNB: prepare is only called when the job has not yet failed;\nand abort can be called after prepare.\n\ncomplete -> prepare -> abort -> clean\ncomplete -> abort -> clean\n\nDuring refactor, a potential problem with bdrv_drop_intermediate\nwas identified, the patched behavior is no worse than the pre-patch\nbehavior, so leave a FIXME for now to be fixed in a future patch.\n\nSigned-off-by: John Snow <jsnow@redhat.com>\nReviewed-by: Max Reitz <mreitz@redhat.com>\nMessage-id: 20180906130225.5118-5-jsnow@redhat.com\nReviewed-by: Jeff Cody <jcody@redhat.com>\nSigned-off-by: Max Reitz <mreitz@redhat.com>","distinct":false,"url":"https://api.github.com/repos/dgibson/qemu/commits/22dffcbec62ba918db690ed44beba4bd4e970bb9"},{"sha":"c2924ceaa7f1866148e2847c969fc1902a2524fa","author":{"name":"John Snow","email":"624c376396b1be97fa9f2557aab38fb7d8603d8b@redhat.com"},"message":"block/mirror: don't install backing chain on abort\n\nIn cases where we abort the block/mirror job, there's no point in\ninstalling the new backing chain before we finish aborting.\n\nSigned-off-by: John Snow <jsnow@redhat.com>\nMessage-id: 20180906130225.5118-6-jsnow@redhat.com\nReviewed-by: Jeff Cody <jcody@redhat.com>\nReviewed-by: Max Reitz <mreitz@redhat.com>\nSigned-off-by: Max Reitz <mreitz@redhat.com>","distinct":false,"url":"https://api.github.com/repos/dgibson/qemu/commits/c2924ceaa7f1866148e2847c969fc1902a2524fa"},{"sha":"737efc1eda23b904fbe0e66b37715fb0e5c3e58b","author":{"name":"John Snow","email":"624c376396b1be97fa9f2557aab38fb7d8603d8b@redhat.com"},"message":"block/mirror: conservative mirror_exit refactor\n\nFor purposes of minimum code movement, refactor the mirror_exit\ncallback to use the post-finalization callbacks in a trivial way.\n\nSigned-off-by: John Snow <jsnow@redhat.com>\nMessage-id: 20180906130225.5118-7-jsnow@redhat.com\nReviewed-by: Jeff Cody <jcody@redhat.com>\nReviewed-by: Max Reitz <mreitz@redhat.com>\n[mreitz: Added comment for the mirror_exit() function]\nSigned-off-by: Max Reitz <mreitz@redhat.com>","distinct":false,"url":"https://api.github.com/repos/dgibson/qemu/commits/737efc1eda23b904fbe0e66b37715fb0e5c3e58b"},{"sha":"1b57488acf1beba157bcd8c926e596342bcb5c60","author":{"name":"John Snow","email":"624c376396b1be97fa9f2557aab38fb7d8603d8b@redhat.com"},"message":"block/stream: refactor stream to use job callbacks\n\nSigned-off-by: John Snow <jsnow@redhat.com>\nReviewed-by: Max Reitz <mreitz@redhat.com>\nMessage-id: 20180906130225.5118-8-jsnow@redhat.com\nReviewed-by: Jeff Cody <jcody@redhat.com>\nSigned-off-by: Max Reitz <mreitz@redhat.com>","distinct":false,"url":"https://api.github.com/repos/dgibson/qemu/commits/1b57488acf1beba157bcd8c926e596342bcb5c60"},{"sha":"0cc4643b01a0138543e886db8e3bf8a3f74ff8f9","author":{"name":"John Snow","email":"624c376396b1be97fa9f2557aab38fb7d8603d8b@redhat.com"},"message":"tests/blockjob: replace Blockjob with Job\n\nThese tests don't actually test blockjobs anymore, they test\ngeneric Job lifetimes. Change the types accordingly.\n\nSigned-off-by: John Snow <jsnow@redhat.com>\nReviewed-by: Max Reitz <mreitz@redhat.com>\nMessage-id: 20180906130225.5118-9-jsnow@redhat.com\nReviewed-by: Jeff Cody <jcody@redhat.com>\nSigned-off-by: Max Reitz <mreitz@redhat.com>","distinct":false,"url":"https://api.github.com/repos/dgibson/qemu/commits/0cc4643b01a0138543e886db8e3bf8a3f74ff8f9"},{"sha":"977d26fdbeb35d8d2d0f203f9556d44a353e0dfd","author":{"name":"John Snow","email":"624c376396b1be97fa9f2557aab38fb7d8603d8b@redhat.com"},"message":"tests/test-blockjob: remove exit callback\n\nWe remove the exit callback and the completed boolean along with it.\nWe can simulate it just fine by waiting for the job to defer to the\nmain loop, and then giving it one final kick to get the main loop\nportion to run.\n\nSigned-off-by: John Snow <jsnow@redhat.com>\nReviewed-by: Max Reitz <mreitz@redhat.com>\nMessage-id: 20180906130225.5118-10-jsnow@redhat.com\nReviewed-by: Jeff Cody <jcody@redhat.com>\nSigned-off-by: Max Reitz <mreitz@redhat.com>","distinct":false,"url":"https://api.github.com/repos/dgibson/qemu/commits/977d26fdbeb35d8d2d0f203f9556d44a353e0dfd"},{"sha":"e4dad4275d51b594c8abbe726a4927f6f388e427","author":{"name":"John Snow","email":"624c376396b1be97fa9f2557aab38fb7d8603d8b@redhat.com"},"message":"tests/test-blockjob-txn: move .exit to .clean\n\nThe exit callback in this test actually only performs cleanup.\n\nSigned-off-by: John Snow <jsnow@redhat.com>\nReviewed-by: Max Reitz <mreitz@redhat.com>\nMessage-id: 20180906130225.5118-11-jsnow@redhat.com\nReviewed-by: Jeff Cody <jcody@redhat.com>\nSigned-off-by: Max Reitz <mreitz@redhat.com>","distinct":false,"url":"https://api.github.com/repos/dgibson/qemu/commits/e4dad4275d51b594c8abbe726a4927f6f388e427"},{"sha":"ccbfb3319aa265e71c16dac976ff857d0a5bcb4b","author":{"name":"John Snow","email":"624c376396b1be97fa9f2557aab38fb7d8603d8b@redhat.com"},"message":"jobs: remove .exit callback\n\nNow that all of the jobs use the component finalization callbacks,\nthere's no use for the heavy-hammer .exit callback anymore.\n\njob_exit becomes a glorified type shim so that we can call\njob_completed from aio_bh_schedule_oneshot.\n\nMove these three functions down into job.c to eliminate a\nforward reference.\n\nSigned-off-by: John Snow <jsnow@redhat.com>\nReviewed-by: Max Reitz <mreitz@redhat.com>\nMessage-id: 20180906130225.5118-12-jsnow@redhat.com\nReviewed-by: Jeff Cody <jcody@redhat.com>\nSigned-off-by: Max Reitz <mreitz@redhat.com>","distinct":false,"url":"https://api.github.com/repos/dgibson/qemu/commits/ccbfb3319aa265e71c16dac976ff857d0a5bcb4b"},{"sha":"96fbf5345f60a87fab8e7ea79a2406f381027db9","author":{"name":"John Snow","email":"624c376396b1be97fa9f2557aab38fb7d8603d8b@redhat.com"},"message":"qapi/block-commit: expose new job properties\n\nSigned-off-by: John Snow <jsnow@redhat.com>\nReviewed-by: Max Reitz <mreitz@redhat.com>\nMessage-id: 20180906130225.5118-13-jsnow@redhat.com\nReviewed-by: Jeff Cody <jcody@redhat.com>\nSigned-off-by: Max Reitz <mreitz@redhat.com>","distinct":false,"url":"https://api.github.com/repos/dgibson/qemu/commits/96fbf5345f60a87fab8e7ea79a2406f381027db9"},{"sha":"a6b58adec28ff43c0f29ff7c95cdd5d11e87cf61","author":{"name":"John Snow","email":"624c376396b1be97fa9f2557aab38fb7d8603d8b@redhat.com"},"message":"qapi/block-mirror: expose new job properties\n\nSigned-off-by: John Snow <jsnow@redhat.com>\nReviewed-by: Max Reitz <mreitz@redhat.com>\nMessage-id: 20180906130225.5118-14-jsnow@redhat.com\nReviewed-by: Jeff Cody <jcody@redhat.com>\nSigned-off-by: Max Reitz <mreitz@redhat.com>","distinct":false,"url":"https://api.github.com/repos/dgibson/qemu/commits/a6b58adec28ff43c0f29ff7c95cdd5d11e87cf61"},{"sha":"241ca1ab78542f02e666636e0323bcfe3cb1d5e8","author":{"name":"John Snow","email":"624c376396b1be97fa9f2557aab38fb7d8603d8b@redhat.com"},"message":"qapi/block-stream: expose new job properties\n\nSigned-off-by: John Snow <jsnow@redhat.com>\nReviewed-by: Max Reitz <mreitz@redhat.com>\nMessage-id: 20180906130225.5118-15-jsnow@redhat.com\nReviewed-by: Jeff Cody <jcody@redhat.com>\nSigned-off-by: Max Reitz <mreitz@redhat.com>","distinct":false,"url":"https://api.github.com/repos/dgibson/qemu/commits/241ca1ab78542f02e666636e0323bcfe3cb1d5e8"},{"sha":"dfaff2c37dfa52ab045cf87503e60ea56317230a","author":{"name":"John Snow","email":"624c376396b1be97fa9f2557aab38fb7d8603d8b@redhat.com"},"message":"block/backup: qapi documentation fixup\n\nFix documentation to match the other jobs amended for 3.1.\n\nSigned-off-by: John Snow <jsnow@redhat.com>\nReviewed-by: Max Reitz <mreitz@redhat.com>\nMessage-id: 20180906130225.5118-16-jsnow@redhat.com\nReviewed-by: Jeff Cody <jcody@redhat.com>\nSigned-off-by: Max Reitz <mreitz@redhat.com>","distinct":false,"url":"https://api.github.com/repos/dgibson/qemu/commits/dfaff2c37dfa52ab045cf87503e60ea56317230a"},{"sha":"66da04ddd3dcb8c61ee664b6faced132da002006","author":{"name":"John Snow","email":"624c376396b1be97fa9f2557aab38fb7d8603d8b@redhat.com"},"message":"blockdev: document transactional shortcomings\n\nPresently only the backup job really guarantees what one would consider\ntransactional semantics. To guard against someone helpfully adding them\nin the future, document that there are shortcomings in the model that\nwould need to be audited at that time.\n\nSigned-off-by: John Snow <jsnow@redhat.com>\nMessage-id: 20180906130225.5118-17-jsnow@redhat.com\nReviewed-by: Jeff Cody <jcody@redhat.com>\nReviewed-by: Max Reitz <mreitz@redhat.com>\nSigned-off-by: Max Reitz <mreitz@redhat.com>","distinct":false,"url":"https://api.github.com/repos/dgibson/qemu/commits/66da04ddd3dcb8c61ee664b6faced132da002006"},{"sha":"3c605f4074ebeb97970eb660fb56a9cb06525923","author":{"name":"Kevin Wolf","email":"b75d81c03bd01637475de8fdfe57bd6e8b41a08d@redhat.com"},"message":"commit: Add top-node/base-node options\n\nThe block-commit QMP command required specifying the top and base nodes\nof the commit jobs using the file name of that node. While this works\nin simple cases (local files with absolute paths), the file names\ngenerated for more complicated setups can be hard to predict.\n\nThe block-commit command has more problems than just this, so we want to\nreplace it altogether in the long run, but libvirt needs a reliable way\nto address nodes now. So we don't want to wait for a new, cleaner\ncommand, but just add the minimal thing needed right now.\n\nThis adds two new options top-node and base-node to the command, which\nallow specifying node names instead. They are mutually exclusive with\nthe old options.\n\nSigned-off-by: Kevin Wolf <kwolf@redhat.com>","distinct":false,"url":"https://api.github.com/repos/dgibson/qemu/commits/3c605f4074ebeb97970eb660fb56a9cb06525923"},{"sha":"d57177a48fc604e5427921bf20b22ee0e6d578b3","author":{"name":"Kevin Wolf","email":"b75d81c03bd01637475de8fdfe57bd6e8b41a08d@redhat.com"},"message":"qemu-iotests: Test commit with top-node/base-node\n\nThis adds some tests for block-commit with the new options top-node and\nbase-node (taking node names) instead of top and base (taking file\nnames).\n\nSigned-off-by: Kevin Wolf <kwolf@redhat.com>","distinct":false,"url":"https://api.github.com/repos/dgibson/qemu/commits/d57177a48fc604e5427921bf20b22ee0e6d578b3"},{"sha":"e091f0e905a4481f347913420f327d427f18d9d4","author":{"name":"Sergio Lopez","email":"2a49a3230a2bdfb748295d04d38c6f188489c774@redhat.com"},"message":"block/linux-aio: acquire AioContext before qemu_laio_process_completions\n\nIn qemu_laio_process_completions_and_submit, the AioContext is acquired\nbefore the ioq_submit iteration and after qemu_laio_process_completions,\nbut the latter is not thread safe either.\n\nThis change avoids a number of random crashes when the Main Thread and\nan IO Thread collide processing completions for the same AioContext.\nThis is an example of such crash:\n\n - The IO Thread is trying to acquire the AioContext at aio_co_enter,\n   which evidences that it didn't lock it before:\n\nThread 3 (Thread 0x7fdfd8bd8700 (LWP 36743)):\n #0  0x00007fdfe0dd542d in __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135\n #1  0x00007fdfe0dd0de6 in _L_lock_870 () at /lib64/libpthread.so.0\n #2  0x00007fdfe0dd0cdf in __GI___pthread_mutex_lock (mutex=mutex@entry=0x5631fde0e6c0)\n    at ../nptl/pthread_mutex_lock.c:114\n #3  0x00005631fc0603a7 in qemu_mutex_lock_impl (mutex=0x5631fde0e6c0, file=0x5631fc23520f \"util/async.c\", line=511) at util/qemu-thread-posix.c:66\n #4  0x00005631fc05b558 in aio_co_enter (ctx=0x5631fde0e660, co=0x7fdfcc0c2b40) at util/async.c:493\n #5  0x00005631fc05b5ac in aio_co_wake (co=<optimized out>) at util/async.c:478\n #6  0x00005631fbfc51ad in qemu_laio_process_completion (laiocb=<optimized out>) at block/linux-aio.c:104\n #7  0x00005631fbfc523c in qemu_laio_process_completions (s=s@entry=0x7fdfc0297670)\n    at block/linux-aio.c:222\n #8  0x00005631fbfc5499 in qemu_laio_process_completions_and_submit (s=0x7fdfc0297670)\n    at block/linux-aio.c:237\n #9  0x00005631fc05d978 in aio_dispatch_handlers (ctx=ctx@entry=0x5631fde0e660) at util/aio-posix.c:406\n #10 0x00005631fc05e3ea in aio_poll (ctx=0x5631fde0e660, blocking=blocking@entry=true)\n    at util/aio-posix.c:693\n #11 0x00005631fbd7ad96 in iothread_run (opaque=0x5631fde0e1c0) at iothread.c:64\n #12 0x00007fdfe0dcee25 in start_thread (arg=0x7fdfd8bd8700) at pthread_create.c:308\n #13 0x00007fdfe0afc34d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113\n\n - The Main Thread is also processing completions from the same\n   AioContext, and crashes due to failed assertion at util/iov.c:78:\n\nThread 1 (Thread 0x7fdfeb5eac80 (LWP 36740)):\n #0  0x00007fdfe0a391f7 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56\n #1  0x00007fdfe0a3a8e8 in __GI_abort () at abort.c:90\n #2  0x00007fdfe0a32266 in __assert_fail_base (fmt=0x7fdfe0b84e68 \"%s%s%s:%u: %s%sAssertion `%s' failed.\\n%n\", assertion=assertion@entry=0x5631fc238ccb \"offset == 0\", file=file@entry=0x5631fc23698e \"util/iov.c\", line=line@entry=78, function=function@entry=0x5631fc236adc <__PRETTY_FUNCTION__.15220> \"iov_memset\")\n    at assert.c:92\n #3  0x00007fdfe0a32312 in __GI___assert_fail (assertion=assertion@entry=0x5631fc238ccb \"offset == 0\", file=file@entry=0x5631fc23698e \"util/iov.c\", line=line@entry=78, function=function@entry=0x5631fc236adc <__PRETTY_FUNCTION__.15220> \"iov_memset\") at assert.c:101\n #4  0x00005631fc065287 in iov_memset (iov=<optimized out>, iov_cnt=<optimized out>, offset=<optimized out>, offset@entry=65536, fillc=fillc@entry=0, bytes=15515191315812405248) at util/iov.c:78\n #5  0x00005631fc065a63 in qemu_iovec_memset (qiov=<optimized out>, offset=offset@entry=65536, fillc=fillc@entry=0, bytes=<optimized out>) at util/iov.c:410\n #6  0x00005631fbfc5178 in qemu_laio_process_completion (laiocb=0x7fdd920df630) at block/linux-aio.c:88\n #7  0x00005631fbfc523c in qemu_laio_process_completions (s=s@entry=0x7fdfc0297670)\n    at block/linux-aio.c:222\n #8  0x00005631fbfc5499 in qemu_laio_process_completions_and_submit (s=0x7fdfc0297670)\n    at block/linux-aio.c:237\n #9  0x00005631fbfc54ed in qemu_laio_poll_cb (opaque=<optimized out>) at block/linux-aio.c:272\n #10 0x00005631fc05d85e in run_poll_handlers_once (ctx=ctx@entry=0x5631fde0e660) at util/aio-posix.c:497\n #11 0x00005631fc05e2ca in aio_poll (blocking=false, ctx=0x5631fde0e660) at util/aio-posix.c:574\n #12 0x00005631fc05e2ca in aio_poll (ctx=0x5631fde0e660, blocking=blocking@entry=false)\n    at util/aio-posix.c:604\n #13 0x00005631fbfcb8a3 in bdrv_do_drained_begin (ignore_parent=<optimized out>, recursive=<optimized out>, bs=<optimized out>) at block/io.c:273\n #14 0x00005631fbfcb8a3 in bdrv_do_drained_begin (bs=0x5631fe8b6200, recursive=<optimized out>, parent=0x0, ignore_bds_parents=<optimized out>, poll=<optimized out>) at block/io.c:390\n #15 0x00005631fbfbcd2e in blk_drain (blk=0x5631fe83ac80) at block/block-backend.c:1590\n #16 0x00005631fbfbe138 in blk_remove_bs (blk=blk@entry=0x5631fe83ac80) at block/block-backend.c:774\n #17 0x00005631fbfbe3d6 in blk_unref (blk=0x5631fe83ac80) at block/block-backend.c:401\n #18 0x00005631fbfbe3d6 in blk_unref (blk=0x5631fe83ac80) at block/block-backend.c:449\n #19 0x00005631fbfc9a69 in commit_complete (job=0x5631fe8b94b0, opaque=0x7fdfcc1bb080)\n    at block/commit.c:92\n #20 0x00005631fbf7d662 in job_defer_to_main_loop_bh (opaque=0x7fdfcc1b4560) at job.c:973\n #21 0x00005631fc05ad41 in aio_bh_poll (bh=0x7fdfcc01ad90) at util/async.c:90\n #22 0x00005631fc05ad41 in aio_bh_poll (ctx=ctx@entry=0x5631fddffdb0) at util/async.c:118\n #23 0x00005631fc05e210 in aio_dispatch (ctx=0x5631fddffdb0) at util/aio-posix.c:436\n #24 0x00005631fc05ac1e in aio_ctx_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>) at util/async.c:261\n #25 0x00007fdfeaae44c9 in g_main_context_dispatch (context=0x5631fde00140) at gmain.c:3201\n #26 0x00007fdfeaae44c9 in g_main_context_dispatch (context=context@entry=0x5631fde00140) at gmain.c:3854\n #27 0x00005631fc05d503 in main_loop_wait () at util/main-loop.c:215\n #28 0x00005631fc05d503 in main_loop_wait (timeout=<optimized out>) at util/main-loop.c:238\n #29 0x00005631fc05d503 in main_loop_wait (nonblocking=nonblocking@entry=0) at util/main-loop.c:497\n #30 0x00005631fbd81412 in main_loop () at vl.c:1866\n #31 0x00005631fbc18ff3 in main (argc=<optimized out>, argv=<optimized out>, envp=<optimized out>)\n    at vl.c:4647\n\n - A closer examination shows that s->io_q.in_flight appears to have\n   gone backwards:\n\n(gdb) frame 7\n #7  0x00005631fbfc523c in qemu_laio_process_completions (s=s@entry=0x7fdfc0297670)\n    at block/linux-aio.c:222\n222\t            qemu_laio_process_completion(laiocb);\n(gdb) p s\n$2 = (LinuxAioState *) 0x7fdfc0297670\n(gdb) p *s\n$3 = {aio_context = 0x5631fde0e660, ctx = 0x7fdfeb43b000, e = {rfd = 33, wfd = 33}, io_q = {plugged = 0,\n    in_queue = 0, in_flight = 4294967280, blocked = false, pending = {sqh_first = 0x0,\n      sqh_last = 0x7fdfc0297698}}, completion_bh = 0x7fdfc0280ef0, event_idx = 21, event_max = 241}\n(gdb) p/x s->io_q.in_flight\n$4 = 0xfffffff0\n\nSigned-off-by: Sergio Lopez <slp@redhat.com>\nSigned-off-by: Kevin Wolf <kwolf@redhat.com>","distinct":false,"url":"https://api.github.com/repos/dgibson/qemu/commits/e091f0e905a4481f347913420f327d427f18d9d4"},{"sha":"8961be33e8ca7e809c603223803ea66ef7ea5be7","author":{"name":"Alberto Garcia","email":"e9db499e13ac90573163837d2fb1fc9f85402d6d@igalia.com"},"message":"block: Fix use after free error in bdrv_open_inherit()\n\nWhen a block device is opened with BDRV_O_SNAPSHOT and the\nbdrv_append_temp_snapshot() call fails then the error code path tries\nto unref the already destroyed 'options' QDict.\n\nThis can be reproduced easily by setting TMPDIR to a location where\nthe QEMU process can't write:\n\n   $ TMPDIR=/nonexistent $QEMU -drive driver=null-co,snapshot=on\n\nSigned-off-by: Alberto Garcia <berto@igalia.com>\nSigned-off-by: Kevin Wolf <kwolf@redhat.com>","distinct":false,"url":"https://api.github.com/repos/dgibson/qemu/commits/8961be33e8ca7e809c603223803ea66ef7ea5be7"}]}
{"actor":{"display_login":"dgibson"}}