From 9be89728f2a0ff17d54a0dba981015fa6405eb50 Mon Sep 17 00:00:00 2001 From: Richard Jones Date: Fri, 21 May 2010 14:14:25 +0100 Subject: [PATCH] New API: pvresize-size to allow shrinking PVs (RHBZ#585222). --- daemon/lvm.c | 24 ++++++++++++++++++++++++ src/generator.ml | 7 +++++++ 2 files changed, 31 insertions(+) diff --git a/daemon/lvm.c b/daemon/lvm.c index 18d6519..70c3c90 100644 --- a/daemon/lvm.c +++ b/daemon/lvm.c @@ -20,6 +20,7 @@ #include #include +#include #include #include @@ -453,6 +454,29 @@ do_pvresize (const char *device) } int +do_pvresize_size (const char *device, int64_t size) +{ + char *err; + int r; + + char buf[32]; + snprintf (buf, sizeof buf, "%" PRIi64 "b", size); + + r = command (NULL, &err, + "lvm", "pvresize", + "--setphysicalvolumesize", buf, + device, NULL); + if (r == -1) { + reply_with_error ("%s: %s", device, err); + free (err); + return -1; + } + + free (err); + return 0; +} + +int do_vg_activate (int activate, char *const *volgroups) { char *err; diff --git a/src/generator.ml b/src/generator.ml index b2ba513..1032a1a 100755 --- a/src/generator.ml +++ b/src/generator.ml @@ -4693,6 +4693,13 @@ See also C."); This command is the same as C except that it allows you to specify the new size (in bytes) explicitly."); + ("pvresize_size", (RErr, [Device "device"; Int64 "size"]), 249, [Optional "lvm2"], + [], + "resize an LVM physical volume (with size)", + "\ +This command is the same as C except that it +allows you to specify the new size (in bytes) explicitly."); + ] let all_functions = non_daemon_functions @ daemon_functions -- 1.8.3.1