<!--

lxc: linux Container library

(C) Copyright IBM Corp. 2007, 2008

Authors:
Daniel Lezcano <dlezcano at fr.ibm.com>

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

-->

<!DOCTYPE refentry PUBLIC "-//Davenport//DTD DocBook V3.0//EN" [

<!ENTITY commonoptions SYSTEM "@builddir@/common_options.sgml">
<!ENTITY seealso SYSTEM "@builddir@/see_also.sgml">
]>

<refentry>

  <docinfo><date>@LXC_GENERATE_DATE@</date></docinfo>

  <refmeta>
    <refentrytitle>lxc-checkpoint</refentrytitle>
    <manvolnum>1</manvolnum>
    <refmiscinfo>IBM</refmiscinfo>
  </refmeta>

  <refnamediv>
    <refname>lxc-checkpoint</refname>

    <refpurpose>
      checkpoint a running container (not implemented yet)
    </refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <cmdsynopsis>
      <command>lxc-checkpoint
	--statefile=<replaceable>FILE</replaceable>
	--statefd=<replaceable>FD</replaceable>
	--name=<replaceable>NAME</replaceable> </command>
      <arg><option>-k</option>|<option>-p</option></arg>
    </cmdsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para>
      <command>lxc-checkpoint</command> is a command
      to checkpoint the specified container
      <replaceable>NAME</replaceable> and dumps its state into the file
      <replaceable>FILE</replaceable>. If the
      option <option>--kill</option> is specified, the application
      running in the container will terminate after the checkpoint
      just before resuming its execution. If the
      option <option>--pause</option> is specified, the application
      will be stopped after the checkpoint just before resuming
      execution. The command <command>lxc-unfreeze</command> will
      resume its execution.
    </para>

  </refsect1>

  <refsect1>
    <title>Checkpoint Options</title>

    <variablelist>

      <varlistentry>
	<term><option>-S, --statefile=<replaceable>FILE</replaceable></option></term>
	<listitem>
	  <para>
	    write the state of the container in this
	    <replaceable>FILE</replaceable>.
	    This option is exclusive with <option>--statefd</option> below.
	  </para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><option>-d, --statefd=<replaceable>FD</replaceable></option></term>
	<listitem>
	  <para>
	    write the state of the container in this
	    <replaceable>FD</replaceable> file descriptor.
	    This option is exclusive with above <option>--statefile</option>.
	  </para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><option>-k,--kill</option></term>
	<listitem>
	  <para>
	    Kill container processes after checkpoint. the processes are sent
	    a <literal>SIGKILL</literal> signal.
	  </para>
	  <para>
	    This option is mutually exclusive with the following
	    <option>--pause</option> option.
	  </para>
	</listitem>
      </varlistentry>

      <varlistentry>
	<term><option>-p,--pause</option></term>
	<listitem>
	  <para>
	    Pause container processes after checkpoint. The container
	    will be stopped until you resume it. This option is
	    mutually exclusive with previously mentionned
	    <option>--kill</option> option.
	  </para>
	</listitem>
      </varlistentry>

    </variablelist>

  </refsect1>

  &commonoptions;

  <refsect1>
    <title>Examples</title>
    <para>
      To start a new container <literal>123</literal> computing decimals of pi
    </para>
    <programlisting>
      lxc-execute -n 123 -- pi1 -d 500000
      lxc-execute --name=123 -- pi1 -d 500000
    </programlisting>

    <para>
      to checkpoint the same container in <emphasis>dump-death</emphasis>
      mode
    </para>
    <programlisting>
      lxc-checkpoint -n 123 -S /share/123/chkpt1 -k
      lxc-checkpoint --name=123 -S /share/123/chkpt1 -k
    </programlisting>

    <para>
      to checkpoint the same container and <emphasis>pause</emphasis> it
    </para>
    <programlisting>
      lxc-checkpoint -n 123 -S /share/123/chkpt1 -p
      lxc-checkpoint --name=123 -S /share/123/chkpt1 -p
    </programlisting>

  </refsect1>

  <refsect1>
    <title>Notes</title>
    <para>Actually, this command does not operate. Its description
    helps to define a CLI api for future Checkpoint / Restart
    solution</para>
  </refsect1>

  &seealso;

  <refsect1>
    <title>Author</title>
    <para>Daniel Lezcano <email>daniel.lezcano@free.fr</email></para>
  </refsect1>

</refentry>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:2
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:nil
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->
