kvm tools: Add option to list rootfs in 'kvm list'

Previously we would only list running instances, now that we create
rootfs instances it's appropriate to add a method to list them as
well.

Suggested-by: Ingo Molnar <mingo@elte.hu>
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
Sasha Levin
2011-10-13 11:32:46 +02:00
committed by Will Deacon
parent 7b6d50d629
commit 076e946ec2
+65 -1
View File
@@ -4,6 +4,7 @@
#include <kvm/kvm.h>
#include <kvm/parse-options.h>
#include <dirent.h>
#include <stdio.h>
#include <string.h>
#include <signal.h>
@@ -11,12 +12,18 @@
#define PROCESS_NAME "kvm"
static bool run;
static bool rootfs;
static const char * const list_usage[] = {
"kvm list",
NULL
};
static const struct option list_options[] = {
OPT_GROUP("General options:"),
OPT_BOOLEAN('i', "run", &run, "List running instances"),
OPT_BOOLEAN('r', "rootfs", &rootfs, "List rootfs instances"),
OPT_END()
};
@@ -58,9 +65,66 @@ cleanup:
return 0;
}
int kvm_cmd_list(int argc, const char **argv, const char *prefix)
static int kvm_list_running_instances(void)
{
printf(" PID GUEST\n");
return kvm__enumerate_instances(print_guest);
}
static int kvm_list_rootfs(void)
{
char name[PATH_MAX];
DIR *dir;
struct dirent *dirent;
snprintf(name, PATH_MAX, "%s%s", HOME_DIR, KVM_PID_FILE_PATH);
dir = opendir(name);
if (dir == NULL)
return -1;
printf(" ROOTFS\n");
while ((dirent = readdir(dir))) {
if (dirent->d_type == DT_DIR &&
strcmp(dirent->d_name, ".") &&
strcmp(dirent->d_name, ".."))
printf("%s\n", dirent->d_name);
}
return 0;
}
static void parse_setup_options(int argc, const char **argv)
{
while (argc != 0) {
argc = parse_options(argc, argv, list_options, list_usage,
PARSE_OPT_STOP_AT_NON_OPTION);
if (argc != 0)
kvm_list_help();
}
}
int kvm_cmd_list(int argc, const char **argv, const char *prefix)
{
int r;
parse_setup_options(argc, argv);
if (!run && !rootfs)
kvm_list_help();
if (run) {
r = kvm_list_running_instances();
if (r < 0)
perror("Error listing instances");
}
if (rootfs) {
r = kvm_list_rootfs();
if (r < 0)
perror("Error listing rootfs");
}
return 0;
}