Blob Blame History Raw
From 91db4de9f068eb7d90f30e1d7205b3f0c988cce7 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Fri, 12 Aug 2016 10:32:26 +0100
Subject: [PATCH] v2v: Make fstrim warning clearer (RHBZ#1366456).

This reverts the change made for RHBZ#1168144.  The warning is now
always displayed.

It would be nice to make the warning actionable, but there is not a
lot that end users can do since fstrim is such a complex topic
interacting with all filesystem and storage layers.

(cherry picked from commit 66816e11332b07a07efd6821e7ecf090691ce441)
---
 v2v/v2v.ml       |  6 +-----
 v2v/virt-v2v.pod | 26 ++++++++++++++++++++++++++
 2 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/v2v/v2v.ml b/v2v/v2v.ml
index 4b06bc1..21f8d77 100644
--- a/v2v/v2v.ml
+++ b/v2v/v2v.ml
@@ -425,11 +425,7 @@ and do_fstrim g no_trim inspect =
       if mounted then (
         try g#fstrim "/"
         with G.Error msg ->
-          (* Only emit this warning when debugging, because otherwise
-           * it causes distress (RHBZ#1168144).
-           *)
-          if verbose () then
-            warning (f_"%s (ignored)") msg
+          warning (f_"fstrim on guest filesystem %s failed.  Usually you can ignore this message.  To find out more read \"Trimming\" in virt-v2v(1).\n\nOriginal message: %s") dev msg
       )
   ) fses
 
diff --git a/v2v/virt-v2v.pod b/v2v/virt-v2v.pod
index 9fc0b72..434f57e 100644
--- a/v2v/virt-v2v.pod
+++ b/v2v/virt-v2v.pod
@@ -1512,6 +1512,32 @@ one CPU core and between 512 MB and 1 GB of RAM per running instance.
 
 Virt-v2v can be run in a virtual machine.
 
+=head2 Trimming
+
+Virt-v2v attempts to optimize the speed of conversion by ignoring
+guest filesystem data which is not used.  This would include unused
+filesystem blocks, blocks containing zeroes, and deleted files.
+
+To do this, virt-v2v issues a non-destructive L<fstrim(8)> operation.
+As this happens to an overlay placed over the guest data, it does
+B<not> affect the source in any way.
+
+If this fstrim operation fails, you will see a warning, but virt-v2v
+will continue anyway.  It may run more slowly (in some cases much more
+slowly), because it is copying the unused parts of the disk.
+
+Unfortunately support for fstrim is not universal, and it also depends
+on specific details of the filesystem, partition alignment, and
+backing storage.  As an example, NTFS filesystems cannot be fstrimmed
+if they occupy a partition which is not aligned to the underlying
+storage.  That was the default on Windows before Vista.  As another
+example, VFAT filesystems (used by UEFI guests) cannot be trimmed at
+all.
+
+fstrim support in the Linux kernel is improving gradually, so over
+time some of these restrictions will be lifted and virt-v2v will work
+faster.
+
 =head1 POST-CONVERSION TASKS
 
 =head2 Guest network configuration
-- 
2.7.4