X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=daemon%2Flvm.c;h=18d6519fa45678f083b6e076e97912109771f6d8;hp=e4fa54e879771d8cd22f6d7e9d89e23ffe5c6a23;hb=53ca11ee44f71ed056f72df9769ca93b9a35e1a7;hpb=9e0b31a2af26b8d58a44dd80993a5e73d4942307 diff --git a/daemon/lvm.c b/daemon/lvm.c index e4fa54e..18d6519 100644 --- a/daemon/lvm.c +++ b/daemon/lvm.c @@ -267,7 +267,33 @@ do_lvresize (const char *logvol, int mbytes) r = command (NULL, &err, "lvm", "lvresize", - "-L", size, logvol, NULL); + "--force", "-L", size, logvol, NULL); + if (r == -1) { + reply_with_error ("%s", err); + free (err); + return -1; + } + + free (err); + return 0; +} + +int +do_lvresize_free (const char *logvol, int percent) +{ + char *err; + int r; + + if (percent < 0 || percent > 100) { + reply_with_error ("percentage must be [0..100] (was %d)", percent); + return -1; + } + + char size[64]; + snprintf (size, sizeof size, "+%d%%FREE", percent); + + r = command (NULL, &err, + "lvm", "lvresize", "-l", size, logvol, NULL); if (r == -1) { reply_with_error ("%s", err); free (err); @@ -594,3 +620,21 @@ do_vglvuuids (const char *vgname) { return get_lvm_fields ("vgs", "lv_uuid", vgname); } + +int +do_vgscan (void) +{ + char *err; + int r; + + r = command (NULL, &err, + "lvm", "vgscan", NULL); + if (r == -1) { + reply_with_error ("%s", err); + free (err); + return -1; + } + + free (err); + return 0; +}