From 5a7c26d86aa0fc672053411ff321411534ae28ee Mon Sep 17 00:00:00 2001 From: Tom Mortensen Date: Fri, 20 Oct 2017 23:48:10 -0700 Subject: [PATCH] Device info page link should be active for disabled non-present devices so that size of emulated device can be examined, and file system check can be peformed. --- plugins/dynamix/DeviceInfo.page | 11 +------ plugins/dynamix/include/DeviceList.php | 42 ++++++++++++++++++-------- 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/plugins/dynamix/DeviceInfo.page b/plugins/dynamix/DeviceInfo.page index 5ab7a6d7a..af9c36c28 100644 --- a/plugins/dynamix/DeviceInfo.page +++ b/plugins/dynamix/DeviceInfo.page @@ -23,15 +23,6 @@ function displayTemp($temp) { global $display; return $display['unit']=='F' ? round($temp*9/5)+32 : $temp; } -function luks_status($luksState) { - switch ($luksState) { - case 0: return 'Not encrypted'; break; - case 1: return 'Encrypted'; break; - case 2: return 'Missing encryption key'; break; - case 3: return 'Wrong encryption key'; break; - default: return 'Unknown error'; break; - } -} function maintenance_mode() { global $var, $disk; return ($var['fsState']=="Started" && $var['startMode']=="Maintenance" && $disk['luksState']<=1); @@ -102,7 +93,7 @@ Name: : Partition size: -: KB (K=1024) +: KB (K=1024) Partition format: : diff --git a/plugins/dynamix/include/DeviceList.php b/plugins/dynamix/include/DeviceList.php index 02110dabd..5aba6a776 100644 --- a/plugins/dynamix/include/DeviceList.php +++ b/plugins/dynamix/include/DeviceList.php @@ -57,7 +57,7 @@ function device_info(&$disk,$online) { case 'grey-off': $help = 'Device not present'; break; } $status = "$ctrl$help"; - $link = (strpos($disk['status'], 'DISK_NP')===false || $disk['name']=="cache") ? "".$fancyname."" : $fancyname; + $link = (strcmp($disk['status'], 'DISK_NP')!=0 || $disk['name']=="cache") ? "".$fancyname."" : $fancyname; switch ($disk['luksState']) { case 0: $luks = ""; break; case 1: $luks = ""; break; @@ -123,8 +123,25 @@ function fs_info(&$disk) { function my_diskio($data) { return my_scale($data,$unit,1)." $unit/s"; } -function array_offline(&$disk,$w) { - $warning = $w ? 'ALL DATA ON THIS DISK WILL BE ERASED WHEN ARRAY IS STARTED' : ''; +function array_offline(&$disk) { + global $var, $disks; + if (strpos($var['mdState'],"ERROR:")===false) { + $w = 'All existing data on this device will be OVERWRITTEN when array is Started'; + if ($disk['type']=="Cache") { + if (!empty($disks['cache']['uuid']) && $disk['status']=="DISK_NEW") $warning = $w; + } + else { + if ($var['mdState']=="NEW_ARRAY") { + if ($disk['type']=="Parity") $warning = $w; + } + else { + if ($disk['status']=="DISK_INVALID" || + $disk['status']=="DISK_DSBL_NEW" || + $disk['status']=="DISK_WRONG" || + $disk['status']=="DISK_NEW") $warning = $w; + } + } + } echo ""; switch ($disk['status']) { case 'DISK_NP': @@ -133,10 +150,14 @@ function array_offline(&$disk,$w) { echo "".assignment($disk).""; echo ""; break; + case 'DISK_NP_MISSING': + echo "".device_info($disk,false)."
Missing"; + echo "".assignment($disk)."{$disk['idSb']} - ".my_scale($disk['sizeSb']*1024,$unit)." $unit"; + echo ""; + break; case 'DISK_OK': - $warning = ''; - case 'DISK_INVALID': case 'DISK_DSBL': + case 'DISK_INVALID': case 'DISK_DSBL_NEW': case 'DISK_NEW': echo "".device_info($disk,false).""; @@ -144,11 +165,6 @@ function array_offline(&$disk,$w) { echo "".my_temp($disk['temp']).""; echo "$warning"; break; - case 'DISK_NP_MISSING': - echo "".device_info($disk,false)."
Missing"; - echo "".assignment($disk)."{$disk['idSb']} - ".my_scale($disk['sizeSb']*1024,$unit)." $unit"; - echo ""; - break; case 'DISK_WRONG': echo "".device_info($disk,false)."
Wrong"; echo "".assignment($disk)."{$disk['idSb']} - ".my_scale($disk['sizeSb']*1024,$unit)." $unit"; @@ -288,9 +304,9 @@ function cache_slots() { switch ($_POST['device']) { case 'array': if ($var['fsState']=='Stopped') { - foreach ($disks as $disk) {if ($disk['type']=='Parity') array_offline($disk,true);} + foreach ($disks as $disk) {if ($disk['type']=='Parity') array_offline($disk);} echo ""; - foreach ($disks as $disk) {if ($disk['type']=='Data') array_offline($disk,$var['mdResyncAction']=='clear');} + foreach ($disks as $disk) {if ($disk['type']=='Data') array_offline($disk);} echo "Slots:".array_slots().""; } else { foreach ($disks as $disk) {if ($disk['type']=='Parity' && $disk['status']!='DISK_NP_DSBL') array_online($disk);} @@ -314,7 +330,7 @@ case 'flash': break; case 'cache': if ($var['fsState']=='Stopped') { - foreach ($disks as $disk) {if ($disk['type']=='Cache') array_offline($disk,false);} + foreach ($disks as $disk) {if ($disk['type']=='Cache') array_offline($disk);} echo "Slots:".cache_slots().""; } else { foreach ($disks as $disk) {if ($disk['type']=='Cache') array_online($disk);}