--- /dev/null
+/bindings
+/history
+/virt-v2v.d/windows-sda
+/virt-v2v.d/windows.xml
--- /dev/null
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<div id="titlepage">
+ <p class="title">
+ New qemu technology used in virt-v2v
+ </p>
+ <p><author>
+ Richard W.M. Jones <br/>
+ <small>rjones @ redhat.com</small>
+ </author></p>
+ <p>
+ <i>virt-v2v converts guests from VMware, Xen, Hyper-V, and
+ physical machines, so they run efficiently on KVM</i>
+ </p>
+</div>
--- /dev/null
+#!/bin/bash -
+
+source functions
+
+# History.
+remember 'virt-v2v -i disk windows.qcow2 -o local -os .'
+remember 'ls -l -h'
+
+echo "Running virt-v2v"
+
+cd virt-v2v.d
+terminal
--- /dev/null
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<h1>How does virt-v2v work? <small>Old vs New</small></h1>
+
+<table>
+<tr>
+<th>
+<b>Old</b>
+</th>
+<td>(RHEL 6)</td>
+<td>
+<pre>
+ copy
+VMware ────▶ v2v ────▶ RHEV-M
+ conversion
+</pre>
+</td>
+</tr>
+
+<tr>
+<td></td>
+<td></td>
+<td> <hr/> </td>
+</tr>
+
+<tr>
+<th>
+<b>New</b>
+</th>
+<td>(RHEL 7.1)</td>
+<td>
+<pre>
+ copy
+ v2v ────────▶
+ conversion
+</pre>
+</td>
+</tr>
+</table>
--- /dev/null
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<h1>How does virt-v2v work? #1</h1>
+
+<pre>
+VMware ┌───────────────┐
+(curl) │ overlay.qcow2 │
+Xen │ │
+(ssh) ──◀───│ │
+physical │ │
+(nbd) │ │
+local disk └───────────────┘
+ convert
+</pre>
+
+<p>Backing file with Copy on read enabled</p>
--- /dev/null
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<h1>How does virt-v2v work? #2</h1>
+
+<pre>
+ ┌───────────────┐
+ │ overlay.qcow2 │
+backing │ │
+image ──◀───│ │
+ │ │
+ │ │
+ └───────────────┘
+ fstrim
+</pre>
--- /dev/null
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<h1>How does virt-v2v work? #3</h1>
+
+<pre>
+ ┌───────────────┐
+ │ overlay.qcow2 │
+backing │ │ copy
+image ──◀───│ │──────────▶
+ │ │
+ │ │
+ └───────────────┘
+</pre>
+
+<p>
+qemu-img convert overlay.qcow2 target
+</p>
--- /dev/null
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<h1>Performance</h1>
+
+<i>(The missing slide)</i>
--- /dev/null
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<h1>Nice to have</h1>
+
+<ul>
+<li> Streaming
+<li> qemu defaults that understand libguestfs needs <br/>
+ a.k.a Work! Dammit!
+</ul>
--- /dev/null
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+<link rel="stylesheet" href="style.css" type="text/css"/>
+<script src="code.js" type="text/javascript"></script>
+
+<h1>virt-v2v</h1>
+
+<ul>
+<li> Project page: <a href="http://libguestfs.org/"><b><big>libguestfs.org</big></b></a>
+<li> <a href="http://libguestfs.org/virt-v2v.1.html">http://libguestfs.org/virt-v2v.1.html</a>
+<li> Fedora ≥ 21, RHEL ≥ 7.1, Debian experimental, Ubuntu 15.x
+<li> Widely used and (to a lesser extent) liked by Red Hat customers and
+ Professional Services.
+</ul>
--- /dev/null
+This is a presentation given privately to the Red Hat KVM developers
+at the 2014 KVM Forum in Dusseldorf, covering the new technology from
+qemu that was used when writing virt-v2v.
+
+It is essentially a longer version of this blog posting:
+
+http://rwmj.wordpress.com/2014/08/29/virt-v2v-better-living-through-new-technology/#content
+
+For more information about virt-v2v, read the manual here:
+
+http://libguestfs.org/virt-v2v.1.html
--- /dev/null
+# -*- shell-script -*-
+
+# Colour ls.
+if [ -f /etc/profile.d/colorls.sh ]; then . /etc/profile.d/colorls.sh; fi
+
+# Fancy prompt colours (see
+# https://wiki.archlinux.org/index.php/Color_Bash_Prompt)
+promptcol='\e[0;32m' ;# colour for the prompt
+commandcol='\e[1;31m' ;# colour for the typed command
+outputcol='\e[0m' ;# colour for command output
+
+export PS1="\n\[$promptcol\]\$ \[$commandcol\]"
+
+trap 'echo -ne "$outputcol"' DEBUG
+
+# Load key bindings (if any).
+bind -f $talkdir/bindings
--- /dev/null
+# -*- shell-script -*-
+# This creates some standard functions. See also $talkdir/bashrc
+# which runs in the same bash context as the terminal.
+
+# Place any local environment variables and settings in "local".
+if [ -f local ]; then source local; fi
+
+# Environment variables.
+export HISTFILE=$talkdir/history
+export PATH=$talkdir:$PATH
+export EDITOR="emacs -nw"
+
+# remember <command> <args ...>
+#
+# This function does two things: (1) It adds the command and arguments
+# to the shell history, so that commands can be recalled using up
+# arrow or reverse search. (2) It makes a function key recall the
+# command. The first command is assigned to F2, the second to F3 and
+# so forth.
+
+rm -f $HISTFILE
+touch $HISTFILE
+rm -f $talkdir/bindings
+touch bindings
+
+fnum=2
+keys=(- OP OQ OR OS '[15~' '[17~' '[18~' '[19~' '[20~' '[21~')
+
+remember ()
+{
+ echo "$@" >> $HISTFILE
+ echo \"\\e${keys[$fnum]}\":\"\\C-k \\C-u"$@"\" >> $talkdir/bindings
+ ((fnum++))
+}
+
+terminal ()
+{
+ chmod -w $HISTFILE
+ /bin/bash --rcfile $talkdir/bashrc "$@"
+}
--- /dev/null
+#!/bin/bash -
+# Run the talk.
+
+# Avoid GNOME keyring stupidity
+export GNOME_KEYRING_CONTROL=
+export GNOME_KEYRING_PID=
+
+# Clean up everything.
+find -name '*~' -delete
+rm -f virt-v2v.d/windows.xml
+rm -f virt-v2v.d/windows-sda
+
+# No proxy.
+unset http_proxy
+unset https_proxy
+unset ftp_proxy
+
+# Get everything into the cache.
+guestfish -a /dev/null run > /dev/null &
+
+# Run techtalk.
+techtalk-pse
--- /dev/null
+/* Red Hat red is rgb(204,0,0). */
+
+body {
+ background: url(redhat.png) no-repeat;
+ background-position: 98% 0;
+ font-size: 28pt; /* For max */
+ /* font-size: 20pt; */ /* For 1024x768 */
+ /* font-family: liberation, helvetica; */
+ font-family: helvetica;
+}
+
+body td, body th { /* why?? */
+ font-size: 24pt;
+ padding-bottom: 8px;
+}
+
+h1 {
+ color: rgb(204,0,0);
+ /*font-size: 48px;*/
+ font-size: 40px;
+ top: 8;
+ left: 0;
+ border-bottom: 2px solid rgb(204,0,0);
+}
+
+b {
+ color: rgb(204,0,0);
+}
+
+div#titlepage {
+ margin-top: 100px;
+ text-align: center;
+}
+
+div#titlepage p.title {
+ color: rgb(204,0,0);
+ font-weight: bold;
+ font-size: 48px;
+}
+
+div#titlepage author {
+ font-size: 36px;
+}
+
+/* Code */
+pre.code {
+ margin-left: 1em;
+ background: #eee;
+}
+
+code {
+ color: rgb(204,0,0);
+}
+
+/* Bullet points */
+li {
+ padding-bottom: 16px;
+}
+
+/* Logo */
+img#fish {
+ position: absolute;
+ top: 128px;
+ right: 32px;
+ width: 200px;
+ /*height: 256px;*/
+}
\ No newline at end of file