qemu/qapi/yank.json
<<
>>
Prefs
   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 }
 120