diff --git a/lib/backend.py b/lib/backend.py
index b42ebe7be97a16ccca9f00d6ce7e3c27201034c5..57c2ce4039efe6fd832638873583ada8d31ace2a 100644
--- a/lib/backend.py
+++ b/lib/backend.py
@@ -2143,7 +2143,7 @@ def BlockdevSnapshot(disk):
   @type disk: L{objects.Disk}
   @param disk: the disk to be snapshotted
   @rtype: string
-  @return: snapshot disk path
+  @return: snapshot disk ID as (vg, lv)
 
   """
   if disk.dev_type == constants.LD_DRBD8:
diff --git a/lib/bdev.py b/lib/bdev.py
index 1378a2ff744fd3dcdcf97b8101380d2bc3ad1f48..13b856625048cf6ea82ddfbb3cb0dca52b2c0384 100644
--- a/lib/bdev.py
+++ b/lib/bdev.py
@@ -694,6 +694,8 @@ class LogicalVolume(BlockDev):
   def Snapshot(self, size):
     """Create a snapshot copy of an lvm block device.
 
+    @returns: tuple (vg, lv)
+
     """
     snap_name = self._lv_name + ".snap"
 
@@ -715,7 +717,7 @@ class LogicalVolume(BlockDev):
       _ThrowError("command: %s error: %s - %s",
                   result.cmd, result.fail_reason, result.output)
 
-    return snap_name
+    return (self._vg_name, snap_name)
 
   def SetInfo(self, text):
     """Update metadata with info text.
diff --git a/lib/masterd/instance.py b/lib/masterd/instance.py
index f097639568eeff7ff03a67f1fe857fac286ed523..d83e83625d6c7e68dd1ab9f57b843064df0b6493 100644
--- a/lib/masterd/instance.py
+++ b/lib/masterd/instance.py
@@ -1151,8 +1151,6 @@ class ExportInstanceHelper:
     instance = self._instance
     src_node = instance.primary_node
 
-    vgname = self._lu.cfg.GetVGName()
-
     for idx, disk in enumerate(instance.disks):
       self._feedback_fn("Creating a snapshot of disk/%s on node %s" %
                         (idx, src_node))
@@ -1160,13 +1158,17 @@ class ExportInstanceHelper:
       # result.payload will be a snapshot of an lvm leaf of the one we
       # passed
       result = self._lu.rpc.call_blockdev_snapshot(src_node, disk)
+      new_dev = False
       msg = result.fail_msg
       if msg:
         self._lu.LogWarning("Could not snapshot disk/%s on node %s: %s",
                             idx, src_node, msg)
-        new_dev = False
+      elif (not isinstance(result.payload, (tuple, list)) or
+            len(result.payload) != 2):
+        self._lu.LogWarning("Could not snapshot disk/%s on node %s: invalid"
+                            " result '%s'", idx, src_node, result.payload)
       else:
-        disk_id = (vgname, result.payload)
+        disk_id = tuple(result.payload)
         new_dev = objects.Disk(dev_type=constants.LD_LV, size=disk.size,
                                logical_id=disk_id, physical_id=disk_id,
                                iv_name=disk.iv_name)