diff options
author | Richard W.M. Jones <rjones@redhat.com> | 2009-07-31 11:55:38 +0100 |
---|---|---|
committer | Richard W.M. Jones <rjones@redhat.com> | 2009-07-31 11:55:38 +0100 |
commit | 77b2275dfcebce16ceea17ddf77a7f9d0a41c082 (patch) | |
tree | 5be0875ed858cd522a2d5b0f700986ffb9e1cf7c /daemon | |
parent | 0e6e32025885286e2de39efca34ced2aaf26b3a3 (diff) | |
download | libguestfs-77b2275dfcebce16ceea17ddf77a7f9d0a41c082.tar.gz libguestfs-77b2275dfcebce16ceea17ddf77a7f9d0a41c082.tar.xz libguestfs-77b2275dfcebce16ceea17ddf77a7f9d0a41c082.zip |
New commands: swapon-*, swapoff-*, mkswap-file.
swapon-device
swapoff-device
swapon-file
swapoff-file
swapon-label
swapoff-label
swapon-uuid
swapoff-uuid
mkswap-file
Diffstat (limited to 'daemon')
-rw-r--r-- | daemon/swap.c | 130 |
1 files changed, 128 insertions, 2 deletions
diff --git a/daemon/swap.c b/daemon/swap.c index faed7f68..db93e573 100644 --- a/daemon/swap.c +++ b/daemon/swap.c @@ -33,8 +33,6 @@ mkswap (char *device, const char *flag, const char *value) char *err; int r; - IS_DEVICE (device, -1); - if (!flag) r = command (NULL, &err, "/sbin/mkswap", device, NULL); else @@ -54,17 +52,145 @@ mkswap (char *device, const char *flag, const char *value) int do_mkswap (char *device) { + IS_DEVICE (device, -1); + return mkswap (device, NULL, NULL); } int do_mkswap_L (char *label, char *device) { + IS_DEVICE (device, -1); + return mkswap (device, "-L", label); } int do_mkswap_U (char *uuid, char *device) { + IS_DEVICE (device, -1); + return mkswap (device, "-U", uuid); } + +int +do_mkswap_file (char *path) +{ + char *buf; + int r; + + NEED_ROOT (-1); + ABS_PATH (path, -1); + + buf = sysroot_path (path); + if (!buf) { + reply_with_perror ("malloc"); + return -1; + } + + r = mkswap (buf, NULL, NULL); + free (buf); + return r; +} + +static int +swaponoff (const char *cmd, const char *flag, const char *value) +{ + char *err; + int r; + + if (!flag) + r = command (NULL, &err, cmd, value, NULL); + else + r = command (NULL, &err, cmd, flag, value, NULL); + + if (r == -1) { + reply_with_error ("%s: %s: %s", cmd, value, err); + free (err); + return -1; + } + + free (err); + + return 0; +} + +int +do_swapon_device (char *device) +{ + IS_DEVICE (device, -1); + + return swaponoff ("/sbin/swapon", NULL, device); +} + +int +do_swapoff_device (char *device) +{ + IS_DEVICE (device, -1); + + return swaponoff ("/sbin/swapoff", NULL, device); +} + +int +do_swapon_file (char *path) +{ + char *buf; + int r; + + NEED_ROOT (-1); + ABS_PATH (path, -1); + + buf = sysroot_path (path); + if (!buf) { + reply_with_perror ("malloc"); + return -1; + } + + r = swaponoff ("/sbin/swapon", NULL, buf); + free (buf); + return r; +} + +int +do_swapoff_file (char *path) +{ + char *buf; + int r; + + NEED_ROOT (-1); + ABS_PATH (path, -1); + + buf = sysroot_path (path); + if (!buf) { + reply_with_perror ("malloc"); + return -1; + } + + r = swaponoff ("/sbin/swapoff", NULL, buf); + free (buf); + return r; +} + +int +do_swapon_label (char *label) +{ + return swaponoff ("/sbin/swapon", "-L", label); +} + +int +do_swapoff_label (char *label) +{ + return swaponoff ("/sbin/swapoff", "-L", label); +} + +int +do_swapon_uuid (char *uuid) +{ + return swaponoff ("/sbin/swapon", "-U", uuid); +} + +int +do_swapoff_uuid (char *uuid) +{ + return swaponoff ("/sbin/swapoff", "-U", uuid); +} |