qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

yank.json (2570B)


      1 # -*- Mode: Python -*-
      2 # vim: filetype=python
      3 #
      4 
      5 ##
      6 # = Yank feature
      7 ##
      8 
      9 ##
     10 # @YankInstanceType:
     11 #
     12 # An enumeration of yank instance types. See @YankInstance for more
     13 # information.
     14 #
     15 # Since: 6.0
     16 ##
     17 { 'enum': 'YankInstanceType',
     18   'data': [ 'block-node', 'chardev', 'migration' ] }
     19 
     20 ##
     21 # @YankInstanceBlockNode:
     22 #
     23 # Specifies which block graph node to yank. See @YankInstance for more
     24 # information.
     25 #
     26 # @node-name: the name of the block graph node
     27 #
     28 # Since: 6.0
     29 ##
     30 { 'struct': 'YankInstanceBlockNode',
     31   'data': { 'node-name': 'str' } }
     32 
     33 ##
     34 # @YankInstanceChardev:
     35 #
     36 # Specifies which character device to yank. See @YankInstance for more
     37 # information.
     38 #
     39 # @id: the chardev's ID
     40 #
     41 # Since: 6.0
     42 ##
     43 { 'struct': 'YankInstanceChardev',
     44   'data': { 'id': 'str' } }
     45 
     46 ##
     47 # @YankInstance:
     48 #
     49 # A yank instance can be yanked with the @yank qmp command to recover from a
     50 # hanging QEMU.
     51 #
     52 # Currently implemented yank instances:
     53 #  - nbd block device:
     54 #    Yanking it will shut down the connection to the nbd server without
     55 #    attempting to reconnect.
     56 #  - socket chardev:
     57 #    Yanking it will shut down the connected socket.
     58 #  - migration:
     59 #    Yanking it will shut down all migration connections. Unlike
     60 #    @migrate_cancel, it will not notify the migration process, so migration
     61 #    will go into @failed state, instead of @cancelled state. @yank should be
     62 #    used to recover from hangs.
     63 #
     64 # Since: 6.0
     65 ##
     66 { 'union': 'YankInstance',
     67   'base': { 'type': 'YankInstanceType' },
     68   'discriminator': 'type',
     69   'data': {
     70       'block-node': 'YankInstanceBlockNode',
     71       'chardev': 'YankInstanceChardev' } }
     72 
     73 ##
     74 # @yank:
     75 #
     76 # Try to recover from hanging QEMU by yanking the specified instances. See
     77 # @YankInstance for more information.
     78 #
     79 # Takes a list of @YankInstance as argument.
     80 #
     81 # Returns: - Nothing on success
     82 #          - @DeviceNotFound error, if any of the YankInstances doesn't exist
     83 #
     84 # Example:
     85 #
     86 # -> { "execute": "yank",
     87 #      "arguments": {
     88 #          "instances": [
     89 #               { "type": "block-node",
     90 #                 "node-name": "nbd0" }
     91 #          ] } }
     92 # <- { "return": {} }
     93 #
     94 # Since: 6.0
     95 ##
     96 { 'command': 'yank',
     97   'data': { 'instances': ['YankInstance'] },
     98   'allow-oob': true }
     99 
    100 ##
    101 # @query-yank:
    102 #
    103 # Query yank instances. See @YankInstance for more information.
    104 #
    105 # Returns: list of @YankInstance
    106 #
    107 # Example:
    108 #
    109 # -> { "execute": "query-yank" }
    110 # <- { "return": [
    111 #          { "type": "block-node",
    112 #            "node-name": "nbd0" }
    113 #      ] }
    114 #
    115 # Since: 6.0
    116 ##
    117 { 'command': 'query-yank',
    118   'returns': ['YankInstance'],
    119   'allow-oob': true }