| Server IP : 172.67.134.114 / Your IP : 104.23.197.122 Web Server : Apache/2.4.37 System : Linux almalinux.duckdns.org 4.18.0-553.111.1.el8_10.x86_64 #1 SMP Sun Mar 8 20:06:07 EDT 2026 x86_64 User : ricodeal ( 1046) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/doc/qemu-kvm/interop/ |
Upload File : |
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>D-Bus VMState — QEMU qemu-kvm-6.2.0-53.module_el8.10.0+4110+4a319788.6 documentation</title>
<link rel="shortcut icon" href="../_static/qemu_32x32.png"/>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Live Block Device Operations" href="live-block-operations.html" />
<link rel="prev" title="D-Bus" href="dbus.html" />
<script src="../_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="../index.html" class="icon icon-home"> QEMU
<img src="../_static/qemu_128x128.png" class="logo" alt="Logo"/>
</a>
<div class="version">
6.2.0
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../about/index.html">About QEMU</a></li>
<li class="toctree-l1"><a class="reference internal" href="../system/index.html">System Emulation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../user/index.html">User Mode Emulation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Tools</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">System Emulation Management and Interoperability</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="barrier.html">Barrier client protocol</a></li>
<li class="toctree-l2"><a class="reference internal" href="bitmaps.html">Dirty Bitmaps and Incremental Backup</a></li>
<li class="toctree-l2"><a class="reference internal" href="dbus.html">D-Bus</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">D-Bus VMState</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#introduction">Introduction</a></li>
<li class="toctree-l3"><a class="reference internal" href="#interface">Interface</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#id-property">“Id” property</a></li>
<li class="toctree-l4"><a class="reference internal" href="#load-in-u8-bytes-method">Load(in u8[] bytes) method</a></li>
<li class="toctree-l4"><a class="reference internal" href="#save-out-u8-bytes-method">Save(out u8[] bytes) method</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="live-block-operations.html">Live Block Device Operations</a></li>
<li class="toctree-l2"><a class="reference internal" href="pr-helper.html">Persistent reservation helper protocol</a></li>
<li class="toctree-l2"><a class="reference internal" href="qemu-ga.html">QEMU Guest Agent</a></li>
<li class="toctree-l2"><a class="reference internal" href="qemu-ga-ref.html">QEMU Guest Agent Protocol Reference</a></li>
<li class="toctree-l2"><a class="reference internal" href="qemu-qmp-ref.html">QEMU QMP Reference Manual</a></li>
<li class="toctree-l2"><a class="reference internal" href="qemu-storage-daemon-qmp-ref.html">QEMU Storage Daemon QMP Reference Manual</a></li>
<li class="toctree-l2"><a class="reference internal" href="vhost-user.html">Vhost-user Protocol</a></li>
<li class="toctree-l2"><a class="reference internal" href="vhost-user-gpu.html">Vhost-user-gpu Protocol</a></li>
<li class="toctree-l2"><a class="reference internal" href="vhost-vdpa.html">Vhost-vdpa Protocol</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../specs/index.html">System Emulation Guest Hardware Specifications</a></li>
<li class="toctree-l1"><a class="reference internal" href="../devel/index.html">Developer Information</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">QEMU</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html">Docs</a> »</li>
<li><a href="index.html">System Emulation Management and Interoperability</a> »</li>
<li>D-Bus VMState</li>
<li class="wy-breadcrumbs-aside">
<a href="https://gitlab.com/qemu-project/qemu/blob/master/docs/interop/dbus-vmstate.rst" class="fa fa-gitlab"> Edit on GitLab</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="d-bus-vmstate">
<h1>D-Bus VMState<a class="headerlink" href="#d-bus-vmstate" title="Permalink to this headline">¶</a></h1>
<div class="section" id="introduction">
<h2>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h2>
<p>The QEMU dbus-vmstate object’s aim is to migrate helpers’ data running
on a QEMU D-Bus bus. (refer to the <a class="reference internal" href="dbus.html"><span class="doc">D-Bus</span></a> document for
some recommendations on D-Bus usage)</p>
<p>Upon migration, QEMU will go through the queue of
<code class="docutils literal notranslate"><span class="pre">org.qemu.VMState1</span></code> D-Bus name owners and query their <code class="docutils literal notranslate"><span class="pre">Id</span></code>. It
must be unique among the helpers.</p>
<p>It will then save arbitrary data of each Id to be transferred in the
migration stream and restored/loaded at the corresponding destination
helper.</p>
<p>For now, the data amount to be transferred is arbitrarily limited to
1Mb. The state must be saved quickly (a fraction of a second). (D-Bus
imposes a time limit on reply anyway, and migration would fail if data
isn’t given quickly enough.)</p>
<p>dbus-vmstate object can be configured with the expected list of
helpers by setting its <code class="docutils literal notranslate"><span class="pre">id-list</span></code> property, with a comma-separated
<code class="docutils literal notranslate"><span class="pre">Id</span></code> list.</p>
</div>
<div class="section" id="interface">
<h2>Interface<a class="headerlink" href="#interface" title="Permalink to this headline">¶</a></h2>
<p>On object path <code class="docutils literal notranslate"><span class="pre">/org/qemu/VMState1</span></code>, the following
<code class="docutils literal notranslate"><span class="pre">org.qemu.VMState1</span></code> interface should be implemented:</p>
<div class="code xml highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o"><</span><span class="n">interface</span> <span class="n">name</span><span class="o">=</span><span class="s2">"org.qemu.VMState1"</span><span class="o">></span>
<span class="o"><</span><span class="nb">property</span> <span class="n">name</span><span class="o">=</span><span class="s2">"Id"</span> <span class="nb">type</span><span class="o">=</span><span class="s2">"s"</span> <span class="n">access</span><span class="o">=</span><span class="s2">"read"</span><span class="o">/></span>
<span class="o"><</span><span class="n">method</span> <span class="n">name</span><span class="o">=</span><span class="s2">"Load"</span><span class="o">></span>
<span class="o"><</span><span class="n">arg</span> <span class="nb">type</span><span class="o">=</span><span class="s2">"ay"</span> <span class="n">name</span><span class="o">=</span><span class="s2">"data"</span> <span class="n">direction</span><span class="o">=</span><span class="s2">"in"</span><span class="o">/></span>
<span class="o"></</span><span class="n">method</span><span class="o">></span>
<span class="o"><</span><span class="n">method</span> <span class="n">name</span><span class="o">=</span><span class="s2">"Save"</span><span class="o">></span>
<span class="o"><</span><span class="n">arg</span> <span class="nb">type</span><span class="o">=</span><span class="s2">"ay"</span> <span class="n">name</span><span class="o">=</span><span class="s2">"data"</span> <span class="n">direction</span><span class="o">=</span><span class="s2">"out"</span><span class="o">/></span>
<span class="o"></</span><span class="n">method</span><span class="o">></span>
<span class="o"></</span><span class="n">interface</span><span class="o">></span>
</pre></div>
</div>
<div class="section" id="id-property">
<h3>“Id” property<a class="headerlink" href="#id-property" title="Permalink to this headline">¶</a></h3>
<p>A string that identifies the helper uniquely. (maximum 256 bytes
including terminating NUL byte)</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The helper ID namespace is a separate namespace. In particular, it is not
related to QEMU “id” used in -object/-device objects.</p>
</div>
</div>
<div class="section" id="load-in-u8-bytes-method">
<h3>Load(in u8[] bytes) method<a class="headerlink" href="#load-in-u8-bytes-method" title="Permalink to this headline">¶</a></h3>
<p>The method called on destination with the state to restore.</p>
<p>The helper may be initially started in a waiting state (with
an –incoming argument for example), and it may resume on success.</p>
<p>An error may be returned to the caller.</p>
</div>
<div class="section" id="save-out-u8-bytes-method">
<h3>Save(out u8[] bytes) method<a class="headerlink" href="#save-out-u8-bytes-method" title="Permalink to this headline">¶</a></h3>
<p>The method called on the source to get the current state to be
migrated. The helper should continue to run normally.</p>
<p>An error may be returned to the caller.</p>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="live-block-operations.html" class="btn btn-neutral float-right" title="Live Block Device Operations" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="dbus.html" class="btn btn-neutral" title="D-Bus" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
© Copyright 2021, The QEMU Project Developers.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
<!-- Empty para to force a blank line after "Built with Sphinx ..." -->
<p></p>
<p>This documentation is for QEMU version 6.2.0.</p>
<p><a href="../about/license.html">QEMU and this manual are released under the
GNU General Public License, version 2.</a></p>
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../',
VERSION:'qemu-kvm-6.2.0-53.module_el8.10.0+4110+4a319788.6',
LANGUAGE:'None',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: false,
SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>