[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v1 5/6] tools/libs/guest: opt in to LZ4 save-side compression via XCFLAGS_COMPRESS_LZ4



This patch introduces a new public flag XCFLAGS_COMPRESS_LZ4 (bit 2) that
can be used to enable the LZ4 migration compression. xc_domain_save() now
starts with ctx.compression = XC_SR_COMPRESS_NONE and only switches to
XC_SR_COMPRESS_LZ4 when the caller sets the flag.

When this flag is clear, libxenguest emits the legacy REC_TYPE_PAGE_DATA
records just as it did before this series.

Signed-off-by: Marcus Granado <marcus.granado@xxxxxxxxxx>
---
 tools/include/xenguest.h      |  5 +++--
 tools/libs/guest/xg_sr_save.c | 11 +++++++++++
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h
index 2a277cb7cd..332c95f45b 100644
--- a/tools/include/xenguest.h
+++ b/tools/include/xenguest.h
@@ -24,8 +24,9 @@
 
 #define XC_NUMA_NO_NODE   (~0U)
 
-#define XCFLAGS_LIVE      (1 << 0)
-#define XCFLAGS_DEBUG     (1 << 1)
+#define XCFLAGS_LIVE         (1 << 0)
+#define XCFLAGS_DEBUG        (1 << 1)
+#define XCFLAGS_COMPRESS_LZ4 (1 << 2) /* Compress PAGE_DATA with LZ4 on save */
 
 #define X86_64_B_SIZE   64 
 #define X86_32_B_SIZE   32
diff --git a/tools/libs/guest/xg_sr_save.c b/tools/libs/guest/xg_sr_save.c
index dbbcddf6fd..6eae9894d3 100644
--- a/tools/libs/guest/xg_sr_save.c
+++ b/tools/libs/guest/xg_sr_save.c
@@ -1317,6 +1317,17 @@ int xc_domain_save(xc_interface *xch, int io_fd, 
uint32_t dom,
     bool hvm;
 
     ctx.compression = XC_SR_COMPRESS_NONE;
+    if ( flags & XCFLAGS_COMPRESS_LZ4 )
+    {
+#ifdef HAVE_LZ4
+        ctx.compression = XC_SR_COMPRESS_LZ4;
+#else
+        ERROR("XCFLAGS_COMPRESS_LZ4 requested but libxenguest was built "
+              "without liblz4 support");
+        errno = EOPNOTSUPP;
+        return -1;
+#endif
+    }
 
     /* GCC 4.4 (of CentOS 6.x vintage) can' t initialise anonymous unions. */
     ctx.save.callbacks = callbacks;
-- 
2.43.0




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.