{"push_id":685161681,"size":82,"distinct_size":82,"ref":"refs/heads/master","head":"2700a976dba6b107365aa9af7fd927ffb3dd3b21","before":"42d58e7c6760cb9c55627c28ae538e27dcf2f144","commits":[{"sha":"65207c59d99f2260c5f1d3b9c491146616a522aa","author":{"email":"5d00b6b660f20fb41305186c34c40973ec5cb35b@redhat.com","name":"Markus Armbruster"},"message":"monitor: Drop broken, unused asynchronous command interface\n\nThe asynchronous monitor command interface goes back to commit 940cc30\n(Jan 2010).  Added a third case to command execution.  The hope back\nthen according to the commit message was that all commands get\nconverted to the asynchronous interface, killing off the other two\ncases.  Didn't happen.\n\nThe initial asynchronous commands balloon and info balloon were\nconverted back to synchronous long ago (commit 96637bc and d72f32),\nwith commit messages calling the asynchronous interface \"not fully\nworking\" and \"deprecated\".  The only other user went away in commit\n3b5704b.\n\nNew code generally uses synchronous commands and asynchronous events.\n\nWhat exactly is still \"not fully working\" with asynchronous commands?\nWell, here's a bug that defeats actual asynchronous use pretty\nreliably: the reply's ID is wrong (and has always been wrong) unless\nyou use the command synchronously!  To reproduce, we need an\nasynchronous command, so we have to go back before commit 3b5704b.\nRun QEMU with spice:\n\n    $ qemu-system-x86_64 -nodefaults -S -spice port=5900,disable-ticketing -qmp stdio\n    {\"QMP\": {\"version\": {\"qemu\": {\"micro\": 94, \"minor\": 2, \"major\": 2}, \"package\": \"\"}, \"capabilities\": []}}\n\nConnect a spice client in another terminal:\n\n    $ remote-viewer spice://localhost:5900\n\nSet up a migration destination dummy in a third terminal:\n\n    $ socat TCP-LISTEN:12345 STDIO\n\nNow paste the following into the QMP monitor:\n\n    { \"execute\": \"qmp_capabilities\", \"id\": \"i0\" }\n    { \"execute\": \"client_migrate_info\", \"id\": \"i1\", \"arguments\": { \"protocol\": \"spice\", \"hostname\": \"localhost\", \"port\": 12345 } }\n    { \"execute\": \"query-kvm\", \"id\": \"i2\" }\n\nProduces two replies immediately, one to qmp_capabilities, and one to\nquery-kvm:\n\n    {\"return\": {}, \"id\": \"i0\"}\n    {\"return\": {\"enabled\": false, \"present\": true}, \"id\": \"i2\"}\n\nBoth are correct.  Two lines of debug output from libspice-server not\nshown.\n\nNow EOF socat's standard input to make it close the connection.  This\nmakes the asynchronous client_migrate_info complete.  It replies:\n\n    {\"return\": {}}\n\nBug: \"id\": \"i1\" is missing.  Two lines of debug output from\nlibspice-server not shown.  Cherry on top: storage for the missing ID\nis leaked.\n\nGet rid of this stuff before somebody hurts himself with it.\n\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\nReviewed-by: Eric Blake <eblake@redhat.com>\nReviewed-by: Luiz Capitulino <lcapitulino@redhat.com>","distinct":true,"url":"https://api.github.com/repos/J-Liu/qemu/commits/65207c59d99f2260c5f1d3b9c491146616a522aa"},{"sha":"84add864ebd2e6f3c645948ab595d8454165ebc5","author":{"email":"5d00b6b660f20fb41305186c34c40973ec5cb35b@redhat.com","name":"Markus Armbruster"},"message":"monitor: Clean up after previous commit\n\nInline qmp_call_cmd() along with its helper handler_audit() into its\nonly caller handle_qmp_command(), and simplify the result.\n\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\nReviewed-by: Eric Blake <eblake@redhat.com>\nReviewed-by: Luiz Capitulino <lcapitulino@redhat.com>","distinct":true,"url":"https://api.github.com/repos/J-Liu/qemu/commits/84add864ebd2e6f3c645948ab595d8454165ebc5"},{"sha":"13cadefbda71e119db79fe0b7a4efd26a6d005bd","author":{"email":"5d00b6b660f20fb41305186c34c40973ec5cb35b@redhat.com","name":"Markus Armbruster"},"message":"monitor: Improve and document client_migrate_info protocol error\n\nProtocol must be spice, vnc isn't implemented.  Fix up documentation.\n\nAttempts to use vnc or any other unknown protocol yield the misleading\nerror message \"Invalid parameter 'protocol'\".  Improve it to\n\"Parameter 'protocol' expects spice\".\n\nCc: Gerd Hoffmann <kraxel@redhat.com>\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\nReviewed-by: Eric Blake <eblake@redhat.com>\nReviewed-by. Gerd Hoffmann <kraxel@redhat.com>\nReviewed-by: Luiz Capitulino <lcapitulino@redhat.com>","distinct":true,"url":"https://api.github.com/repos/J-Liu/qemu/commits/13cadefbda71e119db79fe0b7a4efd26a6d005bd"},{"sha":"b8a185bc9a8ecbdc74fd64672e4abdd09a558e1c","author":{"email":"5d00b6b660f20fb41305186c34c40973ec5cb35b@redhat.com","name":"Markus Armbruster"},"message":"monitor: Convert client_migrate_info to QAPI\n\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\nReviewed-by: Eric Blake <eblake@redhat.com>\nReviewed-by: Luiz Capitulino <lcapitulino@redhat.com>","distinct":true,"url":"https://api.github.com/repos/J-Liu/qemu/commits/b8a185bc9a8ecbdc74fd64672e4abdd09a558e1c"},{"sha":"072ebe6b0351060b33287454fdef625fe79c858f","author":{"email":"5d00b6b660f20fb41305186c34c40973ec5cb35b@redhat.com","name":"Markus Armbruster"},"message":"monitor: Use traditional command interface for HMP drive_del\n\nAll QMP commands use the \"new\" handler interface (mhandler.cmd_new).\nMost HMP commands still use the traditional interface (mhandler.cmd),\nbut a few use the \"new\" one.  Complicates handle_user_command() for no\ngain, so I'm converting these to the traditional interface.\n\nFor drive_del, that's easy: hmp_drive_del() sheds its unused last\nparameter, and its return value, which the caller ignored anyway.\n\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\nReviewed-by: Eric Blake <eblake@redhat.com>\nReviewed-by: Luiz Capitulino <lcapitulino@redhat.com>","distinct":true,"url":"https://api.github.com/repos/J-Liu/qemu/commits/072ebe6b0351060b33287454fdef625fe79c858f"},{"sha":"318660f84a0a26451750aee68ab7dcf88731637d","author":{"email":"5d00b6b660f20fb41305186c34c40973ec5cb35b@redhat.com","name":"Markus Armbruster"},"message":"monitor: Use traditional command interface for HMP device_add\n\nAll QMP commands use the \"new\" handler interface (mhandler.cmd_new).\nMost HMP commands still use the traditional interface (mhandler.cmd),\nbut a few use the \"new\" one.  Complicates handle_user_command() for no\ngain, so I'm converting these to the traditional interface.\n\nFor device_add, that's easy: just wrap the obvious hmp_device_add()\naround do_device_add().\n\nmonitor_user_noop() is now unused, drop it.\n\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\nReviewed-by: Eric Blake <eblake@redhat.com>\nReviewed-by: Luiz Capitulino <lcapitulino@redhat.com>","distinct":true,"url":"https://api.github.com/repos/J-Liu/qemu/commits/318660f84a0a26451750aee68ab7dcf88731637d"},{"sha":"04e00c92ef75629a241ebc50537f75de0867928d","author":{"email":"5d00b6b660f20fb41305186c34c40973ec5cb35b@redhat.com","name":"Markus Armbruster"},"message":"monitor: Use trad. command interface for HMP pcie_aer_inject_error\n\nAll QMP commands use the \"new\" handler interface (mhandler.cmd_new).\nMost HMP commands still use the traditional interface (mhandler.cmd),\nbut a few use the \"new\" one.  Complicates handle_user_command() for no\ngain, so I'm converting these to the traditional interface.\n\npcie_aer_inject_error's implementation is split into the\nhmp_pcie_aer_inject_error() and pcie_aer_inject_error_print().  The\nformer is a peculiar crossbreed between HMP and QMP handler.  On\nsuccess, it works like a QMP handler: store QDict through ret_data\nparameter, return 0.  Printing the QDict is left to\npcie_aer_inject_error_print().  On failure, it works more like an HMP\nhandler: print error to monitor, return negative number.\n\nTo convert to the traditional interface, turn\npcie_aer_inject_error_print() into a command handler wrapping around\nhmp_pcie_aer_inject_error().  By convention, this command handler\nshould be called hmp_pcie_aer_inject_error(), so rename the existing\nhmp_pcie_aer_inject_error() to do_pcie_aer_inject_error().\n\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\nReviewed-by: Eric Blake <eblake@redhat.com>\nReviewed-by: Luiz Capitulino <lcapitulino@redhat.com>","distinct":true,"url":"https://api.github.com/repos/J-Liu/qemu/commits/04e00c92ef75629a241ebc50537f75de0867928d"},{"sha":"8a4f501c09bcb8b5a220699e378aa8fb7ec178e4","author":{"email":"5d00b6b660f20fb41305186c34c40973ec5cb35b@redhat.com","name":"Markus Armbruster"},"message":"monitor: Drop unused \"new\" HMP command interface\n\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\nReviewed-by: Eric Blake <eblake@redhat.com>\nReviewed-by: Luiz Capitulino <lcapitulino@redhat.com>","distinct":true,"url":"https://api.github.com/repos/J-Liu/qemu/commits/8a4f501c09bcb8b5a220699e378aa8fb7ec178e4"},{"sha":"326283aa5d4d51d576185af4cbbdc29f648cd766","author":{"email":"5d00b6b660f20fb41305186c34c40973ec5cb35b@redhat.com","name":"Markus Armbruster"},"message":"monitor: Propagate errors through qmp_check_client_args()\n\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\nReviewed-by: Eric Blake <eblake@redhat.com>\nReviewed-by: Luiz Capitulino <lcapitulino@redhat.com>","distinct":true,"url":"https://api.github.com/repos/J-Liu/qemu/commits/326283aa5d4d51d576185af4cbbdc29f648cd766"},{"sha":"ba0510aad43148e5284cb52fcc7a0103b5e0af4d","author":{"email":"5d00b6b660f20fb41305186c34c40973ec5cb35b@redhat.com","name":"Markus Armbruster"},"message":"monitor: Propagate errors through qmp_check_input_obj()\n\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\nReviewed-by: Eric Blake <eblake@redhat.com>\nReviewed-by: Luiz Capitulino <lcapitulino@redhat.com>","distinct":true,"url":"https://api.github.com/repos/J-Liu/qemu/commits/ba0510aad43148e5284cb52fcc7a0103b5e0af4d"},{"sha":"4086182fcd9b106345b5cc535d78bcc6d13a7683","author":{"email":"5d00b6b660f20fb41305186c34c40973ec5cb35b@redhat.com","name":"Markus Armbruster"},"message":"monitor: Propagate errors through invalid_qmp_mode()\n\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\nReviewed-by: Luiz Capitulino <lcapitulino@redhat.com>","distinct":true,"url":"https://api.github.com/repos/J-Liu/qemu/commits/4086182fcd9b106345b5cc535d78bcc6d13a7683"},{"sha":"70ea0c58991ae44b5a1e67d9c189d79029168cb1","author":{"email":"5d00b6b660f20fb41305186c34c40973ec5cb35b@redhat.com","name":"Markus Armbruster"},"message":"monitor: Wean monitor_protocol_emitter() off mon->error\n\nMove mon->error handling to its caller handle_qmp_command().\n\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\nReviewed-by: Eric Blake <eblake@redhat.com>\nReviewed-by: Luiz Capitulino <lcapitulino@redhat.com>","distinct":true,"url":"https://api.github.com/repos/J-Liu/qemu/commits/70ea0c58991ae44b5a1e67d9c189d79029168cb1"},{"sha":"452e0300a3521f13b6c4ba0b99a8cea3a29209f1","author":{"email":"5d00b6b660f20fb41305186c34c40973ec5cb35b@redhat.com","name":"Markus Armbruster"},"message":"monitor: Inline monitor_has_error() into its only caller\n\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\nReviewed-by: Eric Blake <eblake@redhat.com>\nReviewed-by: Luiz Capitulino <lcapitulino@redhat.com>","distinct":true,"url":"https://api.github.com/repos/J-Liu/qemu/commits/452e0300a3521f13b6c4ba0b99a8cea3a29209f1"},{"sha":"710aec915d208246891b68e2ba61b54951edc508","author":{"email":"5d00b6b660f20fb41305186c34c40973ec5cb35b@redhat.com","name":"Markus Armbruster"},"message":"monitor: Limit QError use to command handlers\n\nThe previous commits narrowed use of QError to handle_qmp_command()\nand its helpers monitor_protocol_emitter(), build_qmp_error_dict().\nNarrow it further to just the command handler call: instead of\nconverting Error to QError throughout handle_qmp_command(), convert\nthe QError gotten from the command handler to Error, and switch the\nhelpers from QError to Error.\n\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\nReviewed-by: Eric Blake <eblake@redhat.com>\nReviewed-by: Luiz Capitulino <lcapitulino@redhat.com>","distinct":true,"url":"https://api.github.com/repos/J-Liu/qemu/commits/710aec915d208246891b68e2ba61b54951edc508"},{"sha":"7ef6cf6341c453021939c909adf2d62d9dc25fd5","author":{"email":"5d00b6b660f20fb41305186c34c40973ec5cb35b@redhat.com","name":"Markus Armbruster"},"message":"monitor: Rename handle_user_command() to handle_hmp_command()\n\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\nReviewed-by: Eric Blake <eblake@redhat.com>\nReviewed-by: Luiz Capitulino <lcapitulino@redhat.com>","distinct":true,"url":"https://api.github.com/repos/J-Liu/qemu/commits/7ef6cf6341c453021939c909adf2d62d9dc25fd5"},{"sha":"c83fe23b58199a6d4a938305cb0fc45fe7729b61","author":{"email":"5d00b6b660f20fb41305186c34c40973ec5cb35b@redhat.com","name":"Markus Armbruster"},"message":"monitor: Rename monitor_control_read(), monitor_control_event()\n\n... to monitor_qmp_read(), monitor_qmp_event().\n\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\nReviewed-by: Eric Blake <eblake@redhat.com>\nReviewed-by: Luiz Capitulino <lcapitulino@redhat.com>","distinct":true,"url":"https://api.github.com/repos/J-Liu/qemu/commits/c83fe23b58199a6d4a938305cb0fc45fe7729b61"},{"sha":"74358f2a1647b239d87340ea0024f9d2efa266ca","author":{"email":"5d00b6b660f20fb41305186c34c40973ec5cb35b@redhat.com","name":"Markus Armbruster"},"message":"monitor: Unbox Monitor member mc and rename to qmp\n\nWhile there, rename its type as well, from MonitorControl to\nMonitorQMP.\n\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\nReviewed-by: Eric Blake <eblake@redhat.com>\nReviewed-by: Luiz Capitulino <lcapitulino@redhat.com>","distinct":true,"url":"https://api.github.com/repos/J-Liu/qemu/commits/74358f2a1647b239d87340ea0024f9d2efa266ca"},{"sha":"6a50636f35ba677c747f2f6127b0dba994b039ca","author":{"email":"5d00b6b660f20fb41305186c34c40973ec5cb35b@redhat.com","name":"Markus Armbruster"},"message":"monitor: Drop do_qmp_capabilities()'s superfluous QMP check\n\nSuperfluous since commit 30f5041 removed it from HMP.\n\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\nReviewed-by: Eric Blake <eblake@redhat.com>\nReviewed-by: Luiz Capitulino <lcapitulino@redhat.com>","distinct":true,"url":"https://api.github.com/repos/J-Liu/qemu/commits/6a50636f35ba677c747f2f6127b0dba994b039ca"},{"sha":"f994b2587f081693b017ebd03b362d162d3108b3","author":{"email":"5d00b6b660f20fb41305186c34c40973ec5cb35b@redhat.com","name":"Markus Armbruster"},"message":"monitor: Turn int command_mode into bool in_command_mode\n\nWhile there, inline the pointless qmp_cmd_mode() wrapper.\n\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\nReviewed-by: Eric Blake <eblake@redhat.com>\nReviewed-by: Luiz Capitulino <lcapitulino@redhat.com>","distinct":true,"url":"https://api.github.com/repos/J-Liu/qemu/commits/f994b2587f081693b017ebd03b362d162d3108b3"},{"sha":"9f3982f2dcd96753d57d0ac64bd1ae3b37a90eb3","author":{"email":"5d00b6b660f20fb41305186c34c40973ec5cb35b@redhat.com","name":"Markus Armbruster"},"message":"monitor: Rename monitor_ctrl_mode() to monitor_is_qmp()\n\n... and change return type to bool.\n\nSigned-off-by: Markus Armbruster <armbru@redhat.com>\nReviewed-by: Eric Blake <eblake@redhat.com>\nReviewed-by: Luiz Capitulino <lcapitulino@redhat.com>","distinct":true,"url":"https://api.github.com/repos/J-Liu/qemu/commits/9f3982f2dcd96753d57d0ac64bd1ae3b37a90eb3"}]}