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

[Libguestfs] [PATCH 1/2] daemon: allow to change the labels of swap partitions



---
 daemon/daemon.h      |  1 +
 daemon/labels.c      |  3 +++
 daemon/swap.c        | 21 +++++++++++++++++++++
 generator/actions.ml |  4 ++++
 4 files changed, 29 insertions(+)

diff --git a/daemon/daemon.h b/daemon/daemon.h
index 79a5288..2379e31 100644
--- a/daemon/daemon.h
+++ b/daemon/daemon.h
@@ -254,6 +254,7 @@ extern int64_t ntfs_minimum_size (const char *device);
 
 /*-- in swap.c --*/
 extern int swap_set_uuid (const char *device, const char *uuid);
+extern int swap_set_label (const char *device, const char *label);
 
 /* ordinary daemon functions use these to indicate errors
  * NB: you don't need to prefix the string with the current command,
diff --git a/daemon/labels.c b/daemon/labels.c
index 20f27cb..aaa3eaf 100644
--- a/daemon/labels.c
+++ b/daemon/labels.c
@@ -85,6 +85,9 @@ do_set_label (const mountable_t *mountable, const char *label)
   else if (STREQ (vfs_type, "xfs"))
     r = xfslabel (mountable->device, label);
 
+  else if (STREQ (vfs_type, "swap"))
+    r = swap_set_label (mountable->device, label);
+
   else
     NOT_SUPPORTED (-1, "don't know how to set the label for '%s' filesystems",
                    vfs_type);
diff --git a/daemon/swap.c b/daemon/swap.c
index 9d7839e..028bc1e 100644
--- a/daemon/swap.c
+++ b/daemon/swap.c
@@ -239,3 +239,24 @@ swap_set_uuid (const char *device, const char *uuid)
 
   return 0;
 }
+
+int
+swap_set_label (const char *device, const char *label)
+{
+  int r;
+  CLEANUP_FREE char *err = NULL;
+
+  if (strlen (label) > SWAP_LABEL_MAX) {
+    reply_with_error ("%s: Linux swap labels are limited to %d bytes",
+                      label, SWAP_LABEL_MAX);
+    return -1;
+  }
+
+  r = command (NULL, &err, str_swaplabel, "-L", label, device, NULL);
+  if (r == -1) {
+    reply_with_error ("%s", err);
+    return -1;
+  }
+
+  return 0;
+}
diff --git a/generator/actions.ml b/generator/actions.ml
index 43de38b..5e0356f 100644
--- a/generator/actions.ml
+++ b/generator/actions.ml
@@ -10304,6 +10304,10 @@ when trying to set the label.
 
 The label is limited to 11 bytes.
 
+=item swap
+
+The label is limited to 16 bytes.
+
 =back
 
 If there is no support for changing the label
-- 
2.7.4


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