public inbox for lvm2-cvs@sourceware.org help / color / mirror / Atom feed
From: agk@sourceware.org To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org Subject: LVM2/tools toollib.c Date: Mon, 12 Nov 2007 14:36:00 -0000 [thread overview] Message-ID: <20071112143657.4286.qmail@sourceware.org> (raw) CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: agk@sourceware.org 2007-11-12 14:36:57 Modified files: tools : toollib.c Log message: Remove new mirror logs when creation fails. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/toollib.c.diff?cvsroot=lvm2&r1=1.110&r2=1.111 --- LVM2/tools/toollib.c 2007/11/02 20:40:05 1.110 +++ LVM2/tools/toollib.c 2007/11/12 14:36:57 1.111 @@ -1339,56 +1339,46 @@ size_t len; struct str_list *sl; + if (!activation() && in_sync) { + log_error("Aborting. Unable to create in-sync mirror log " + "while activation is disabled."); + return NULL; + } + len = strlen(lv_name) + 32; if (!(log_name = alloca(len)) || !(generate_log_name_format(vg, lv_name, log_name, len))) { - log_error("log_name allocation failed. " - "Remove new LV and retry."); + log_error("log_name allocation failed."); return NULL; } if (!(log_lv = lv_create_empty(log_name, NULL, VISIBLE_LV | LVM_READ | LVM_WRITE, - alloc, 0, vg))) { - stack; - return NULL; - } + alloc, 0, vg))) + return_NULL; - if (!lv_add_log_segment(ah, log_lv)) { - stack; - goto error; - } + if (!lv_add_log_segment(ah, log_lv)) + return_NULL; /* Temporary tag mirror log */ list_iterate_items(sl, tags) if (!str_list_add(cmd->mem, &log_lv->tags, sl->str)) { log_error("Aborting. Unable to tag mirror log."); - goto error; + return NULL; } /* store mirror log on disk(s) */ - if (!vg_write(vg)) { - stack; - goto error; - } + if (!vg_write(vg)) + return_NULL; backup(vg); - if (!vg_commit(vg)) { - stack; - goto error; - } - - if (!activation() && in_sync) { - log_error("Aborting. Unable to create in-sync mirror log " - "while activation is disabled."); - goto error; - } + if (!vg_commit(vg)) + return_NULL; if (!activate_lv(cmd, log_lv)) { - log_error("Aborting. Failed to activate mirror log. " - "Remove new LVs and retry."); - goto error; + log_error("Aborting. Failed to activate mirror log."); + goto revert_new_lv; } list_iterate_items(sl, tags) @@ -1398,27 +1388,35 @@ if (activation() && !set_lv(cmd, log_lv, log_lv->size, in_sync ? -1 : 0)) { - log_error("Aborting. Failed to wipe mirror log. " - "Remove new LV and retry."); - goto error; + log_error("Aborting. Failed to wipe mirror log."); + goto deactivate_and_revert_new_lv; } if (activation() && !_write_log_header(cmd, log_lv)) { - log_error("Aborting. Failed to write mirror log header. " - "Remove new LV and retry."); - goto error; + log_error("Aborting. Failed to write mirror log header."); + goto deactivate_and_revert_new_lv; } if (!deactivate_lv(cmd, log_lv)) { log_error("Aborting. Failed to deactivate mirror log. " - "Remove new LV and retry."); - goto error; + "Manual intervention required."); + return NULL; } log_lv->status &= ~VISIBLE_LV; return log_lv; -error: - /* FIXME Attempt to clean up. */ + +deactivate_and_revert_new_lv: + if (!deactivate_lv(cmd, log_lv)) { + log_error("Unable to deactivate mirror log LV. " + "Manual intervention required."); + return NULL; + } + +revert_new_lv: + if (!lv_remove(log_lv) || !vg_write(vg) || backup(vg), !vg_commit(vg)) + log_error("Manual intervention may be required to remove " + "abandoned log LV before retrying."); return NULL; }
next reply other threads:[~2007-11-12 14:36 UTC|newest] Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top 2007-11-12 14:36 agk [this message] -- strict thread matches above, loose matches on Subject: below -- 2012-03-04 15:58 zkabelac 2010-12-20 14:05 zkabelac 2010-12-01 12:22 zkabelac 2010-12-01 10:36 zkabelac 2010-10-25 12:08 zkabelac 2010-04-28 12:23 zkabelac 2009-07-15 12:23 wysochanski 2009-07-15 12:15 wysochanski 2009-07-15 5:23 wysochanski 2009-06-10 11:15 mbroz 2009-06-10 10:15 mbroz 2009-04-23 16:45 mornfall 2009-04-07 10:22 mbroz 2008-06-11 15:02 meyering 2006-11-03 21:23 agk 2006-03-10 15:41 agk 2005-01-19 17:31 agk 2005-01-19 17:31 agk 2004-06-20 15:14 agk
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20071112143657.4286.qmail@sourceware.org \ --to=agk@sourceware.org \ --cc=lvm-devel@redhat.com \ --cc=lvm2-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).