fix: Detect device type (tape/changer) for TGT LUN mapping
This commit is contained in:
24
dist/adastra-vtl-installer/web-ui/api.php
vendored
24
dist/adastra-vtl-installer/web-ui/api.php
vendored
@@ -325,18 +325,36 @@ function addLun($params) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Determine backing store type
|
||||
// Determine backing store type and device type
|
||||
$bstypeParam = '';
|
||||
$deviceTypeParam = '';
|
||||
|
||||
if (strpos($device, '/dev/sg') === 0) {
|
||||
$bstypeParam = '--bstype sg'; // Use sg (passthrough) for generic scsi devices
|
||||
|
||||
// Detect specific device type (tape or changer)
|
||||
$lsscsiOutput = [];
|
||||
exec("sudo /usr/bin/lsscsi -g | grep " . escapeshellarg($device), $lsscsiOutput);
|
||||
|
||||
if (!empty($lsscsiOutput)) {
|
||||
$line = $lsscsiOutput[0];
|
||||
if (strpos($line, 'mediumx') !== false) {
|
||||
$deviceTypeParam = '--device-type changer';
|
||||
} elseif (strpos($line, 'tape') !== false) {
|
||||
$deviceTypeParam = '--device-type tape';
|
||||
} else {
|
||||
$deviceTypeParam = '--device-type pt'; // Default to passthrough if unknown
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$command = sprintf(
|
||||
'sudo /usr/sbin/tgtadm --lld iscsi --mode logicalunit --op new --tid %d --lun %d --backing-store %s %s 2>&1',
|
||||
'sudo /usr/sbin/tgtadm --lld iscsi --mode logicalunit --op new --tid %d --lun %d --backing-store %s %s %s 2>&1',
|
||||
$tid,
|
||||
$lun,
|
||||
escapeshellarg($device),
|
||||
$bstypeParam
|
||||
$bstypeParam,
|
||||
$deviceTypeParam
|
||||
);
|
||||
|
||||
$output = [];
|
||||
|
||||
Reference in New Issue
Block a user