summaryrefslogtreecommitdiffstats
path: root/lib/snapshot/snapshot.c
diff options
context:
space:
mode:
authorMike Snitzer <snitzer@redhat.com>2010-10-13 21:26:37 +0000
committerMike Snitzer <snitzer@redhat.com>2010-10-13 21:26:37 +0000
commit9443b5d4cda01b4ec0fc80c505680d43c0e52af7 (patch)
tree811cf1c38258fdd36dc7ecd09f7e1cc522b121b1 /lib/snapshot/snapshot.c
parent336d41d685d8b7199b149972416ac655a7f7177c (diff)
downloadlvm2-9443b5d4cda01b4ec0fc80c505680d43c0e52af7.tar.gz
lvm2-9443b5d4cda01b4ec0fc80c505680d43c0e52af7.tar.xz
lvm2-9443b5d4cda01b4ec0fc80c505680d43c0e52af7.zip
Convey need for snapshot-merge target in lvconvert error message and man
page. Add ->target_name to segtype_handler to allow a more specific target name to be returned based on the state of the segment. Result of trying to merge a snapshot using a kernel that doesn't have the snapshot-merge target: Before: # lvconvert --merge vg/snap Can't expand LV lv: snapshot target support missing from kernel? Failed to suspend origin lv After: # lvconvert --merge vg/snap Can't process LV lv: snapshot-merge target support missing from kernel? Failed to suspend origin lv Unable to merge LV "snap" into it's origin.
Diffstat (limited to 'lib/snapshot/snapshot.c')
-rw-r--r--lib/snapshot/snapshot.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/snapshot/snapshot.c b/lib/snapshot/snapshot.c
index 92f89111..30e78d47 100644
--- a/lib/snapshot/snapshot.c
+++ b/lib/snapshot/snapshot.c
@@ -28,6 +28,14 @@ static const char *_snap_name(const struct lv_segment *seg)
return seg->segtype->name;
}
+static const char *_snap_target_name(const struct lv_segment *seg)
+{
+ if (seg->status & MERGING)
+ return "snapshot-merge";
+
+ return _snap_name(seg);
+}
+
static int _snap_text_import(struct lv_segment *seg, const struct config_node *sn,
struct dm_hash_table *pv_hash __attribute__((unused)))
{
@@ -217,6 +225,7 @@ static void _snap_destroy(const struct segment_type *segtype)
static struct segtype_handler _snapshot_ops = {
.name = _snap_name,
+ .target_name = _snap_target_name,
.text_import = _snap_text_import,
.text_export = _snap_text_export,
.target_status_compatible = _snap_target_status_compatible,