From 054cf25b5f6a34de8886ba6293deee2b24720902 Mon Sep 17 00:00:00 2001 From: Petr Rockai Date: Wed, 18 Sep 2013 11:22:49 +0200 Subject: [PATCH] vgcfgrestore: Remove VG rom lvmetad later, to better deal with errors. --- lib/format_text/archiver.c | 14 +++++++++++++- tools/vgcfgrestore.c | 8 -------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/format_text/archiver.c b/lib/format_text/archiver.c index b6b9fb3bf..752e93c24 100644 --- a/lib/format_text/archiver.c +++ b/lib/format_text/archiver.c @@ -18,6 +18,7 @@ #include "format-text.h" #include "lvm-string.h" #include "lvmcache.h" +#include "lvmetad.h" #include "toolcontext.h" #include "locking.h" @@ -347,7 +348,18 @@ int backup_restore_vg(struct cmd_context *cmd, struct volume_group *vg) vg->extent_size = tmp; } - if (!vg_write(vg) || !vg_commit(vg)) + if (!vg_write(vg)) + return_0; + + if (lvmetad_active()) { + struct volume_group *vg_lvmetad = lvmetad_vg_lookup(cmd, vg->name, NULL); + if (vg_lvmetad) { + lvmetad_vg_remove(vg_lvmetad); + release_vg(vg_lvmetad); + } + } + + if (!vg_commit(vg)) return_0; return 1; diff --git a/tools/vgcfgrestore.c b/tools/vgcfgrestore.c index f56083681..36396c33f 100644 --- a/tools/vgcfgrestore.c +++ b/tools/vgcfgrestore.c @@ -57,14 +57,6 @@ int vgcfgrestore(struct cmd_context *cmd, int argc, char **argv) return ECMD_FAILED; } - if (lvmetad_active()) { - struct volume_group *vg = lvmetad_vg_lookup(cmd, vg_name, NULL); - if (vg) { - lvmetad_vg_remove(vg); - release_vg(vg); - } - } - cmd->handles_unknown_segments = 1; if (!(arg_count(cmd, file_ARG) ?