diff options
author | Dave Wysochanski <dwysocha@redhat.com> | 2010-02-24 18:15:49 +0000 |
---|---|---|
committer | Dave Wysochanski <dwysocha@redhat.com> | 2010-02-24 18:15:49 +0000 |
commit | cd69ee74535333f8d4ae7141e42b76a89fcfcb31 (patch) | |
tree | 7031fcee4e6f7069c8d76cc0155d6b887dd7ca8c | |
parent | aee205752abdd9d05e67b953c2bc1f5d626dd808 (diff) | |
download | lvm2-cd69ee74535333f8d4ae7141e42b76a89fcfcb31.tar.gz lvm2-cd69ee74535333f8d4ae7141e42b76a89fcfcb31.tar.xz lvm2-cd69ee74535333f8d4ae7141e42b76a89fcfcb31.zip |
Refactor lvchange_tag() to call lv_change_tag() library function.
Similar refactoring to vgchange - pull out common parts and put into
library function for reuse. Should be no functional change.
Signed-off-by: Dave Wysochanski <dwysocha@redhat.com>
-rw-r--r-- | lib/metadata/metadata-exported.h | 2 | ||||
-rw-r--r-- | lib/metadata/metadata.c | 24 | ||||
-rw-r--r-- | tools/lvchange.c | 21 |
3 files changed, 28 insertions, 19 deletions
diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h index fae9551f..95402852 100644 --- a/lib/metadata/metadata-exported.h +++ b/lib/metadata/metadata-exported.h @@ -493,6 +493,8 @@ struct logical_volume *lv_create_empty(const char *name, int set_lv(struct cmd_context *cmd, struct logical_volume *lv, uint64_t sectors, int value); +int lv_change_tag(struct logical_volume *lv, const char *tag, int add_tag); + /* Reduce the size of an LV by extents */ int lv_reduce(struct logical_volume *lv, uint32_t extents); diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c index 52bbc46c..2b8a1be0 100644 --- a/lib/metadata/metadata.c +++ b/lib/metadata/metadata.c @@ -665,6 +665,30 @@ int vg_reduce(struct volume_group *vg, char *pv_name) return 0; } +int lv_change_tag(struct logical_volume *lv, const char *tag, int add_tag) +{ + if (!(lv->vg->fid->fmt->features & FMT_TAGS)) { + log_error("Logical volume %s/%s does not support tags", + lv->vg->name, lv->name); + return 0; + } + + if (add_tag) { + if (!str_list_add(lv->vg->vgmem, &lv->tags, tag)) { + log_error("Failed to add tag %s to %s/%s", + tag, lv->vg->name, lv->name); + return 0; + } + } else { + if (!str_list_del(&lv->tags, tag)) { + log_error("Failed to remove tag %s from %s/%s", + tag, lv->vg->name, lv->name); + return 0; + } + } + return 1; +} + int vg_change_tag(struct volume_group *vg, const char *tag, int add_tag) { if (!(vg->fid->fmt->features & FMT_TAGS)) { diff --git a/tools/lvchange.c b/tools/lvchange.c index 5118e510..2d7955e8 100644 --- a/tools/lvchange.c +++ b/tools/lvchange.c @@ -500,25 +500,8 @@ static int lvchange_tag(struct cmd_context *cmd, struct logical_volume *lv, return 0; } - if (!(lv->vg->fid->fmt->features & FMT_TAGS)) { - log_error("Logical volume %s/%s does not support tags", - lv->vg->name, lv->name); - return 0; - } - - if ((arg == addtag_ARG)) { - if (!str_list_add(cmd->mem, &lv->tags, tag)) { - log_error("Failed to add tag %s to %s/%s", - tag, lv->vg->name, lv->name); - return 0; - } - } else { - if (!str_list_del(&lv->tags, tag)) { - log_error("Failed to remove tag %s from %s/%s", - tag, lv->vg->name, lv->name); - return 0; - } - } + if (!lv_change_tag(lv, tag, arg == addtag_ARG)) + return_0; log_very_verbose("Updating logical volume \"%s\" on disk(s)", lv->name); |