File 0020-tcm_dump-Error-checking-in-startup-script.patch of Package lio-utils

From ff05d56bf0770fb688836e7be6ca88622c74c36f Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare@suse.de>
Date: Fri, 1 Feb 2013 15:11:30 +0100
Subject: tcm_dump: Error checking in startup script

When tcm_dump generates the startup script it should insert some
error checking to allow the script to abort and report an error.

Signed-off-by: Hannes Reinecke <hare@suse.de>
---
 tcm-py/tcm_dump.py | 52 ++++++++++++++--------------------------------------
 1 file changed, 14 insertions(+), 38 deletions(-)

diff --git a/tcm-py/tcm_dump.py b/tcm-py/tcm_dump.py
index e4a99e6..9e182b1 100755
--- a/tcm-py/tcm_dump.py
+++ b/tcm-py/tcm_dump.py
@@ -39,7 +39,12 @@ def tcm_dump_configfs(option, opt_str, value, parser):
 		if lu_gp == "default_lu_gp":
 			continue
 
-		print "mkdir -p " + tcm_root + "/alua/lu_gps/" + lu_gp
+		lu_gp_dir = tcm_root + "/alua/lu_gps/" + lu_gp
+		print "mkdir -p " + lu_gp_dir
+		print "if [ $? -eq 0 ] ; then"
+		print "  echo \"Failed to create " + lu_gp_dir + "\""
+		print "  exit 1"
+		print "fi"
 		lu_gp_id_file = tcm_root + "/alua/lu_gps/" + lu_gp + "/lu_gp_id"
 		p = os.open(lu_gp_id_file, 0)
 		value = os.read(p, 8)
@@ -53,8 +58,6 @@ def tcm_dump_configfs(option, opt_str, value, parser):
 		if f == "alua":
 			continue;
 		
-#		print "mkdir -p " + tcm_root + "/" + f
-
 		dev_root = tcm_root + "/" + f + "/"
 		for g in os.listdir(dev_root):
 			if g == "hba_info" or g == "hba_mode":
@@ -72,6 +75,7 @@ def tcm_dump_configfs(option, opt_str, value, parser):
 				if not params:
 					continue
 				print "tcm_node --establishdev " + f + "/" + g + " " + str(params)
+				print "[ $? -eq 0 ] || exit 1"
 			result = re.search('iblock_', f)
 			if result:
 				dev = dev_root + g
@@ -79,6 +83,7 @@ def tcm_dump_configfs(option, opt_str, value, parser):
 				if not params:
 					continue
 				print "tcm_node --establishdev " + f + "/" + g + " " + str(params)
+				print "[ $? -eq 0 ] || exit 1"
 			result = re.search('rd_dr_', f)
 			if result:
 				dev = dev_root + g
@@ -86,6 +91,7 @@ def tcm_dump_configfs(option, opt_str, value, parser):
 				if not params:
 					continue
 				print "tcm_node --establishdev " + f + "/" + g + " " + str(params)
+				print "[ $? -eq 0 ] || exit 1"
 			result = re.search('rd_mcp_', f)
 			if result:
 				dev = dev_root + g
@@ -93,6 +99,7 @@ def tcm_dump_configfs(option, opt_str, value, parser):
 				if not params:
 					continue
 				print "tcm_node --establishdev " + f + "/" + g + " " + str(params)
+				print "[ $? -eq 0 ] || exit 1"
 			result = re.search('fileio_', f)
 			if result:
 				dev = dev_root + g
@@ -100,6 +107,7 @@ def tcm_dump_configfs(option, opt_str, value, parser):
 				if not params:
 					continue
 				print "tcm_node --establishdev " + f + "/" + g + " " + str(params)
+				print "[ $? -eq 0 ] || exit 1"
 
 			# Dump T10 VP Unit Serial for all non Target_Core_Mod/pSCSI objects
 			result = re.search('pscsi_', f)
@@ -112,6 +120,7 @@ def tcm_dump_configfs(option, opt_str, value, parser):
 				unit_serial = value[off:]
 				# Note that this will handle read, parse and set any PR APTPL metadata
 				print "tcm_node --setunitserialwithmd " + f + "/" + g + " " + unit_serial.rstrip()
+				print "[ $? -eq 0 ] || exit 1"
 				os.close(p)
 
 			# Dump device object alias
@@ -150,6 +159,7 @@ def tcm_dump_configfs(option, opt_str, value, parser):
 					if not value:
 						continue
 					print "tcm_node --addaluatpgwithmd " + f + "/" + g + " " + tg_pt_gp + " " + value.rstrip()
+					print "[ $? -eq 0 ] || exit 1"
 					# Dump the ALUA types
 					tg_pt_gp_type_file = dev_root + g + "/alua/" + tg_pt_gp + "/alua_access_type"
 					p = os.open(tg_pt_gp_type_file, 0)
@@ -213,41 +223,7 @@ def tcm_dump_configfs(option, opt_str, value, parser):
 				print "echo " + value.rstrip() + " > " + attrib_file
 				os.close(p)
 
-			# Dump snapshot attributes
-			snap_attrib_root = dev_root + g + "/snap/"
-			if (os.path.isdir(snap_attrib_root) == False):
-				continue
-
-			snap_enabled = 0
-			enabled_attr_file = snap_attrib_root + "enabled"
-			p = open(enabled_attr_file, 'rU')
-			if not p:
-				continue
-			value = p.read()
-			enabled = value.rstrip()
-			p.close()
-			if enabled != "1":
-				continue
-
-			snap_enabled = 1
-			print "#### Snapshot Attributes for " + dev_root + g
-			for s in os.listdir(snap_attrib_root):
-				if s == "pid":
-					continue
-				if s == "usage":
-					continue
-				if s == "enabled":
-					continue
-
-				attrib_file = snap_attrib_root + s
-				p = open(attrib_file, 'rU')
-				value = p.read()
-				p.close()
-				attr_val = value.rstrip()
-				print "echo " + attr_val + " > " + attrib_file
-
-			if snap_enabled == 1:
-				print "tcm_node --lvsnapstart " + f + "/" + g
+	return
 
 def tcm_backup_to_file(option, opt_str, value, parser):
 	datetime = str(value)
-- 
1.8.1.4