[Libguestfs] [PATCH] New API: mdadm-stop for stopping MD devices.

Wanlong Gao wanlong.gao at gmail.com
Wed Nov 23 14:43:36 UTC 2011


This API is used to stop a md device.
When we want to move a device to another md array, we should
stop the md device which contained this device first.

Signed-off-by: Wanlong Gao <gaowanlong at cn.fujitsu.com>
---
 daemon/md.c                    |   16 ++++++++++++++++
 generator/generator_actions.ml |    9 +++++++++
 regressions/test-mdadm.sh      |   14 ++++++++++++++
 src/MAX_PROC_NR                |    2 +-
 4 files changed, 40 insertions(+), 1 deletions(-)

diff --git a/daemon/md.c b/daemon/md.c
index 82ddb82..9004a6f 100644
--- a/daemon/md.c
+++ b/daemon/md.c
@@ -310,3 +310,19 @@ error:
 
   return NULL;
 }
+
+int
+do_mdadm_stop(const char *md)
+{
+  int r;
+  char *err = NULL;
+
+  const char *mdadm[] = { "mdadm", "--stop", md, NULL};
+  r = commandv(NULL, &err, mdadm);
+  if (r == -1) {
+    reply_with_error("%s", err);
+    free(err);
+    return -1;
+  }
+  return 0;
+}
diff --git a/generator/generator_actions.ml b/generator/generator_actions.ml
index 925640f..938a543 100644
--- a/generator/generator_actions.ml
+++ b/generator/generator_actions.ml
@@ -6527,6 +6527,15 @@ The name of the MD device.
 
 =back");
 
+  ("mdadm_stop", (RErr, [Device "md"], []), 302, [],
+   [],
+   "stop a Linux md (RAID) device",
+   "\
+This command is a wrap of 'mdadm --stop md'.
+Use this command to stop a created Linux md (RAID) device.
+
+NOTE: This just stop the md device but not remove or zeroed it.");
+
 ]
 
 let all_functions = non_daemon_functions @ daemon_functions
diff --git a/regressions/test-mdadm.sh b/regressions/test-mdadm.sh
index 8119561..017341a 100755
--- a/regressions/test-mdadm.sh
+++ b/regressions/test-mdadm.sh
@@ -150,4 +150,18 @@ done
 
 ../fish/guestfish --remote exit
 
+eval `../fish/guestfish --listen`
+../fish/guestfish --remote add-ro md-test1.img
+../fish/guestfish --remote add-ro md-test2.img
+../fish/guestfish --remote add-ro md-test3.img
+../fish/guestfish --remote add-ro md-test4.img
+../fish/guestfish --remote run
+
+for md in `../fish/guestfish --remote list-md-devices`; do
+  ../fish/guestfish --remote mdadm-stop "${md}"
+done
+
+../fish/guestfish --remote exit
+
+
 rm -f mdadm-detail.out md-test1.img md-test2.img md-test3.img md-test4.img
diff --git a/src/MAX_PROC_NR b/src/MAX_PROC_NR
index d8fc48a..274f714 100644
--- a/src/MAX_PROC_NR
+++ b/src/MAX_PROC_NR
@@ -1 +1 @@
-301
+302
-- 
1.7.8.rc3




More information about the Libguestfs mailing list