From befeabb45a6ae9c015e967e55318842d42a78d72 Mon Sep 17 00:00:00 2001 From: Dave Wysochanski Date: Sun, 26 Jul 2009 14:37:15 +0000 Subject: [PATCH] Update test/api/test.c to call lvm_lv_remove. Author: Dave Wysochanski --- test/api/test.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/test/api/test.c b/test/api/test.c index 90b1ca81d..2517cb4e0 100644 --- a/test/api/test.c +++ b/test/api/test.c @@ -50,6 +50,8 @@ static int lvm_split(char *str, int *argc, char **argv, int max) static void _show_help(void) { + printf("'vg_remove_lv vgname lvname': " + "Remove a LV\n"); printf("'vg_create_lv_linear vgname lvname size_in_bytes': " "Create a linear LV\n"); printf("'scan_vgs': " @@ -116,6 +118,23 @@ static int _hash_create(void) return 1; } +/* FIXME: this should be per vg */ +static lv_t *_lookup_lv_by_name(const char *name) +{ + lv_t *lv; + + if (!name) { + printf ("Invalid LV name\n"); + return NULL; + } + if (!(lv = dm_hash_lookup(_lvname_hash, name))) { + printf ("Can't find %s in LVs - run vg_create_lv first\n", + name); + return NULL; + } + return lv; +} + static vg_t *_lookup_vg_by_name(char **argv, int argc) { vg_t *vg; @@ -206,6 +225,7 @@ static void _vg_close(char **argv, int argc) dm_hash_remove(_vgname_hash, lvm_vg_get_name(vg)); lvm_vg_close(vg); } + /* FIXME: remove LVs from lvname_hash */ } static void _show_one_vg(vg_t *vg) @@ -297,6 +317,26 @@ static void _lvs_in_vg(char **argv, int argc) } } +static void _vg_remove_lv(char **argv, int argc) +{ + lv_t *lv; + + if (argc < 3) { + printf("Please enter vgname, lvname\n"); + return; + } + if (!(lv = _lookup_lv_by_name(argv[2]))) + return; + if (!lvm_vg_remove_lv(lv)) + printf("Error "); + else { + printf("Success "); + dm_hash_remove(_lvname_hash, argv[2]); + } + printf("removing LV %s in VG %s\n", + argv[2], argv[1]); +} + static void _vg_create_lv_linear(char **argv, int argc) { vg_t *vg; @@ -311,10 +351,12 @@ static void _vg_create_lv_linear(char **argv, int argc) lv = lvm_vg_create_lv_linear(vg, argv[2], atol(argv[3])); if (!lv) printf("Error "); - else + else { printf("Success "); + dm_hash_insert(_lvname_hash, argv[2], lv); + } printf("creating LV %s in VG %s\n", - argv[2], lvm_vg_get_name(vg)); + argv[2], argv[1]); } static int lvmapi_test_shell(lvm_t libh) @@ -362,6 +404,8 @@ static int lvmapi_test_shell(lvm_t libh) _vg_open(argv, argc, libh); } else if (!strcmp(argv[0], "vg_close")) { _vg_close(argv, argc); + } else if (!strcmp(argv[0], "vg_remove_lv")) { + _vg_remove_lv(argv, argc); } else if (!strcmp(argv[0], "vgs_open")) { _list_open_vgs(); } else if (!strcmp(argv[0], "vg_list_pvs")) {