From: Mike Snitzer <msnitzer@fedoraproject.org>
To: James Antill <james@fedoraproject.org>
Cc: okozina@fedoraproject.org, yum-devel@lists.baseurl.org,
linux-lvm@redhat.com
Subject: [linux-lvm] [PATCH 4/2 v3] fs snapshot plugin: add LVM tag to allow tools to link pre and post snapshots
Date: Tue, 12 Mar 2013 14:16:42 -0400 [thread overview]
Message-ID: <20130312181641.GB14883@redhat.com> (raw)
In-Reply-To: <1363037150-8757-2-git-send-email-msnitzer@fedoraproject.org>
Add a "yum_fs_snapshot_pre_lv_name=<pre_snapshot_lv>" LVM tag to the
post transaction LVM-based snapshot (old or thinp). This tag will
allow tools (e.g snapper) to link the pre and post snapshot volumes
together.
Factored out add_lvm_tag_to_snapshot() to allow for reuse.
Signed-off-by: Mike Snitzer <msnitzer@fedoraproject.org>
---
plugins/fs-snapshot/fs-snapshot.py | 28 ++++++++++++++++++++++------
1 file changed, 22 insertions(+), 6 deletions(-)
diff --git a/plugins/fs-snapshot/fs-snapshot.py b/plugins/fs-snapshot/fs-snapshot.py
index 32a1f17..38496c5 100644
--- a/plugins/fs-snapshot/fs-snapshot.py
+++ b/plugins/fs-snapshot/fs-snapshot.py
@@ -221,6 +221,14 @@ def _create_btrfs_snapshot(conduit, snapshot_tag, volume):
return 1
return 2
+def add_lvm_tag_to_snapshot(conduit, tag, snap_volume):
+ p = Popen(["/sbin/lvchange", "--addtag", tag, snap_volume],
+ stdout=PIPE, stderr=PIPE)
+ err = p.wait()
+ if err:
+ conduit.error(1, "fs-snapshot: couldn't add tag to snapshot: %s" %
+ snap_volume)
+
def _create_lvm_snapshot(conduit, snapshot_tag, volume):
"""
Create LVM snapshot LV and tag it with $snapshot_tag.
@@ -278,13 +287,15 @@ def _create_lvm_snapshot(conduit, snapshot_tag, volume):
# Add tag ($snapshot_tag) to snapshot LV
# - should help facilitate merge of all snapshot LVs created
# by a yum transaction, e.g.: lvconvert --merge @snapshot_tag
- p = Popen(["/sbin/lvchange", "--addtag", snapshot_tag, snap_device],
- stdout=PIPE, stderr=PIPE)
- err = p.wait()
- if err:
- conduit.error(1, "fs-snapshot: couldn't add tag to snapshot: %s" %
- snap_device)
+ if add_lvm_tag_to_snapshot(conduit, snapshot_tag, snap_device):
return 1
+ if conduit._base.__plugin_fs_snapshot_post_snapshot_tag == snapshot_tag:
+ # Add tag to allow other tools (e.g. snapper) to link pre
+ # and post snapshot LVs together
+ pre_snap_lv_name = "%s_%s" % (device, conduit._base.__plugin_fs_snapshot_pre_snapshot_tag)
+ pre_snapshot_tag = "yum_fs_snapshot_pre_lv_name=" + pre_snap_lv_name
+ if add_lvm_tag_to_snapshot(conduit, pre_snapshot_tag, snap_device):
+ return 1
return 2
def create_snapshots(conduit):
@@ -295,6 +306,10 @@ def create_snapshots(conduit):
"""
# common snapshot tag format: yum_${year}${month}${day}${hour}${minute}${sec}
snapshot_tag = "yum_" + time.strftime("%Y%m%d%H%M%S")
+ if not conduit._base.__plugin_fs_snapshot_pre_snapshot_tag:
+ conduit._base.__plugin_fs_snapshot_pre_snapshot_tag = snapshot_tag
+ else:
+ conduit._base.__plugin_fs_snapshot_post_snapshot_tag = snapshot_tag
volumes = get_volumes(conduit)
for volume in volumes:
@@ -306,6 +321,8 @@ def create_snapshots(conduit):
conduit.registerPackageName("yum-plugin-fs-snapshot")
def pretrans_hook(conduit):
+ conduit._base.__plugin_fs_snapshot_pre_snapshot_tag = None
+ conduit._base.__plugin_fs_snapshot_post_snapshot_tag = None
create_snapshots(conduit)
def posttrans_hook(conduit):
prev parent reply other threads:[~2013-03-12 18:16 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-10 16:18 [linux-lvm] [PATCH 0/2] yum-utils fs snapshot plugin: fix old LVM snapshots and add thinp support Mike Snitzer
2013-03-10 16:18 ` [linux-lvm] [PATCH 1/2] fs snapshot plugin: fix inspect_volume_lvm to use supported dmsetup splitname options Mike Snitzer
2013-03-10 16:18 ` [linux-lvm] [PATCH 2/2] fs snapshot plugin: add support for snapshotting thinly provisioned LVM volumes Mike Snitzer
2013-03-11 21:25 ` [linux-lvm] [PATCH 3/2] fs snapshot plugin: add ability to create snapshots during post transaction Mike Snitzer
2013-03-11 21:25 ` [linux-lvm] [PATCH 4/2] fs snapshot plugin: add LVM tag to allow tools to link pre and post snapshots Mike Snitzer
2013-03-12 13:46 ` [linux-lvm] [Yum-devel] " James Antill
2013-03-12 14:41 ` [linux-lvm] " Mike Snitzer
2013-03-12 16:41 ` James Antill
2013-03-12 18:09 ` Mike Snitzer
2013-03-12 19:52 ` [linux-lvm] [Yum-devel] " James Antill
2013-03-12 20:30 ` [linux-lvm] " Mike Snitzer
2013-03-12 15:00 ` [linux-lvm] [PATCH 4/2 v2] " Mike Snitzer
2013-03-12 18:16 ` Mike Snitzer [this message]
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=20130312181641.GB14883@redhat.com \
--to=msnitzer@fedoraproject.org \
--cc=james@fedoraproject.org \
--cc=linux-lvm@redhat.com \
--cc=okozina@fedoraproject.org \
--cc=yum-devel@lists.baseurl.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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.