[stgt] [PATCH 1/2] tgt-admin: add "device-type" config option

Tomasz Chmielewski mangoo at wpkg.org
Fri Sep 26 11:32:05 CEST 2008


This patch adds "device-type" config option.

It also makes some changes needed to be able to assign a custom LUN to a 
given device (will send a patch next week).


Signed-off-by: Tomasz Chmielewski <mangoo at wpkg.org>

diff --git a/scripts/tgt-admin b/scripts/tgt-admin
index e075333..2fa29a5 100755
--- a/scripts/tgt-admin
+++ b/scripts/tgt-admin
@@ -300,18 +300,18 @@ sub add_params {
 
 	if ($param eq "write-cache") {
 		if ($param_value eq "off") {
-			execute("tgtadm --lld $driver --op update --mode logicalunit --tid $next_tid --lun=$lun --params mode_page=8:0:18:0x10:0:0xff:0xff:0:0:0xff:0xff:0xff:0xff:0x80:0x14:0:0:0:0:0:0");
+			return("tgtadm --lld $driver --op update --mode logicalunit --tid $next_tid --lun=$lun --params mode_page=8:0:18:0x10:0:0xff:0xff:0:0:0xff:0xff:0xff:0xff:0x80:0x14:0:0:0:0:0:0");
 		} elsif ($param_value eq "on" || not length $param_value) {
-			execute("# Write cache is enabled (default) for lun $lun.");
+			return("# Write cache is enabled (default) for lun $lun.");
 		} else {
-			execute("# WARNING! Unknown value ($param_value) to write-cache! Accepted values are \"on\" and \"off\".");
+			return("# WARNING! Unknown value ($param_value) to write-cache! Accepted values are \"on\" and \"off\".");
 		}
 	}
 
 	if ($param eq "scsi_id" || $param eq "scsi_sn" || $param eq "vendor_id" || $param eq "product_id" ||
 	    $param eq "product_rev" || $param eq "sense_format" || $param eq "removable" || $param eq "online" ||
 	    $param eq "path" || $param eq "mode_page") {
-		execute("tgtadm --lld $driver --op update --mode logicalunit --tid $next_tid --lun=$lun --params $param=\"$param_value\"");
+		return("tgtadm --lld $driver --op update --mode logicalunit --tid $next_tid --lun=$lun --params $param=\"$param_value\"");
 	}
 }
 
@@ -334,7 +334,8 @@ sub add_backing_direct {
 		}
 		return $lun;
 	} elsif (-e $backing_store && $can_alloc == 1) {
-		execute("tgtadm --lld $driver --op new --mode logicalunit --tid $next_tid --lun $lun -b $backing_store");
+		my @exec_commands;
+		my $device_type;
 		# Process parameters for each lun / backing store
 		if (ref $value eq "HASH") {
 			my %params_added;
@@ -348,17 +349,24 @@ sub add_backing_direct {
 						# write-cache can be set globally per target and overridden per lun,
 						# so we treat it differently
 						if ($store_option ne "mode_page" && $store_option ne "write-cache") {
-							add_params($store_option, $result, $lun, $driver);
+							my $exec_command = add_params($store_option, $result, $lun, $driver);
+							push(@exec_commands, $exec_command);
 							$params_added{$store_option} = 1;
 						}
 						if ($store_option eq "write-cache") {
-							add_params($store_option, $result, $lun, $driver);
+							my $exec_command = add_params($store_option, $result, $lun, $driver);
 							$params_added{write_cache} = 1;
+							push(@exec_commands, $exec_command);
 						}
-						if ($store_option eq "mode_page") {
+						if ($store_option eq "device-type") {
+							$device_type = $result;
+							$params_added{$store_option} = 1;
+						}
+						if ($store_option eq "mode_page") { 
 							@mode_page = @$result;
 							foreach my $mode_page (@mode_page) {
-								add_params("mode_page", $mode_page, $lun, $driver);
+								my $exec_command = add_params("mode_page", $mode_page, $lun, $driver);
+								push(@exec_commands, $exec_command);
 							}
 						}
 					}
@@ -397,7 +405,8 @@ sub add_backing_direct {
 			foreach my $single_opt (@opts) {
 				check_if_hash_array($$target_options_ref{$single_opt},$single_opt);
 				if ($params_added{$single_opt} ne 1 && length $$target_options_ref{$single_opt}) {
-					add_params($single_opt, $$target_options_ref{$single_opt}, $lun, $driver);
+					my $exec_command = add_params($single_opt, $$target_options_ref{$single_opt}, $lun, $driver);
+					push(@exec_commands, $exec_command);
 					$params_added{$single_opt} = 1;
 				}
 			}
@@ -412,13 +421,15 @@ sub add_backing_direct {
 					$this_opt = $direct_params{$single_opt};
 				}
 				if ($params_added{$single_opt} ne 1 && length $this_opt) {
-					add_params($single_opt, $this_opt, $lun, $driver);
+					my $exec_command = add_params($single_opt, $this_opt, $lun, $driver);
+					push(@exec_commands, $exec_command);
 					$params_added{$single_opt} = 1;
 				}
 			}
 			# write-cache
 			if ($params_added{write_cache} ne 1) {
-				add_params("write-cache", $$target_options_ref{"write-cache"}, $lun, $driver);
+				my $exec_command = add_params("write-cache", $$target_options_ref{"write-cache"}, $lun, $driver);
+				push(@exec_commands, $exec_command);
 				$params_added{write_cache} = 1;
 			}
 			# mode_page
@@ -427,14 +438,26 @@ sub add_backing_direct {
 			}
 			foreach my $mode_page (@{$$target_options_ref{"mode_page"}}) {
 				if (length $mode_page) {
-					add_params("mode_page", $mode_page, $lun, $driver);
+					my $exec_command = add_params("mode_page", $mode_page, $lun, $driver);
+					push(@exec_commands, $exec_command);
 				}
 			}
+			# device-type
+			if ($params_added{"device-type"} ne 1) {
+				check_if_hash_array($$target_options_ref{"device-type"}, "device-type");
+				$device_type = $$target_options_ref{"device-type"};
+			}
 		} else {
 			print "If you got here, this means your config file is not supported.\n";
 			print "Please report it to stgt mailing list and attach your config files.\n";
 			exit 1;
 		}
+		# Execute commands for a given LUN
+		if (length $device_type) { $device_type = "--device-type $device_type" };
+		execute("tgtadm --lld $driver --op new --mode logicalunit --tid $next_tid --lun $lun -b $backing_store $device_type");
+		foreach my $exec_command (@exec_commands) {
+			if (length $exec_command) { execute($exec_command) }
+		}
 		$lun += 1;
 		return $lun;
 	} elsif ($can_alloc == 0) {




-- 
Tomasz Chmielewski
http://wpkg.org
--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html



More information about the stgt mailing list