New version. NBD network block device fixes

Two enhancements/bug fixes:
1. inxi did not have support for network block devices /dev/nbd0 type syntax in
disks.
2. this caused a slight failure in lsblk output, so I switched to using lsblk -P
to force paired key values, which are then put into an array of hashes.

These both appeared on an ARM server system, but surprisingly, there were no ARM
specific issues at all on that system.

Both issues/enhancements tested and working fine.
This commit is contained in:
Harald Hope 2018-04-12 19:30:53 -07:00
parent 2b9562c46d
commit 174078bcce
2 changed files with 52 additions and 13 deletions

42
inxi
View file

@ -31,7 +31,7 @@ use POSIX qw(uname strftime ttyname);
## INXI INFO ## ## INXI INFO ##
my $self_name='inxi'; my $self_name='inxi';
my $self_version='3.0.02'; my $self_version='3.0.03';
my $self_date='2018-04-12'; my $self_date='2018-04-12';
my $self_patch='00'; my $self_patch='00';
## END INXI INFO ## ## END INXI INFO ##
@ -7169,7 +7169,7 @@ sub proc_data {
foreach (@proc_partitions){ foreach (@proc_partitions){
next if (/^\s*$/); next if (/^\s*$/);
my @row = split /\s+/, $_; my @row = split /\s+/, $_;
if ( $row[-1] =~ /^([hsv]d[a-z]+|(ada|mmcblk|nvme[0-9]+n)[0-9]+)$/) { if ( $row[-1] =~ /^([hsv]d[a-z]+|(ada|mmcblk|n[b]?d|nvme[0-9]+n)[0-9]+)$/) {
$drive_size = $row[2]; $drive_size = $row[2];
$b_hdx = 1 if $row[-1] =~ /^hd[a-z]/; $b_hdx = 1 if $row[-1] =~ /^hd[a-z]/;
@data = ({ @data = ({
@ -7192,9 +7192,10 @@ sub proc_data {
# $size += $row[2]; # $size += $row[2];
# } # }
# special case from this data: 8 0 156290904 sda # special case from this data: 8 0 156290904 sda
# 43 0 48828124 nbd0
# note: known starters: vm: 252/253/254; grsec: 202; nvme: 259 # note: known starters: vm: 252/253/254; grsec: 202; nvme: 259
if ( $row[0] =~ /^(3|8|22|33|202|252|253|254|259)$/ && if ( $row[0] =~ /^(3|8|22|33|43|202|252|253|254|259)$/ &&
$row[-1] =~ /(nvme[0-9]+n[0-9]+|[hsv]d[a-z]+)$/ && $row[-1] =~ /(n[b]?d[0-9]+|nvme[0-9]+n[0-9]+|[hsv]d[a-z]+)$/ &&
( $row[1] % 16 == 0 || $row[1] % 16 == 8 ) ) { ( $row[1] % 16 == 0 || $row[1] % 16 == 8 ) ) {
$size += $row[2]; $size += $row[2];
} }
@ -9999,9 +10000,24 @@ sub get_bsd_label_uuid {
sub set_lsblk { sub set_lsblk {
eval $start if $b_log; eval $start if $b_log;
$b_lsblk = 1; $b_lsblk = 1;
my (@temp,@working);
if (my $program = main::check_program('lsblk')){ if (my $program = main::check_program('lsblk')){
@lsblk = main::grabber("$program -r --output NAME,TYPE,RM,FSTYPE,SIZE 2>/dev/null"); @working = main::grabber("$program -P --output NAME,TYPE,RM,FSTYPE,SIZE 2>/dev/null");
foreach (@working){
my ($name,$type,$rm,$fstype,$size) = ('','','','','');
if (/NAME="([^"]*)"\s+TYPE="([^"]*)"\s+RM="([^"]*)"\s+FSTYPE="([^"]*)"\s+SIZE="([^"]*)"/){
my @temp = ({
'name' => $1,
'type' => $2,
'rm' => $3,
'fs' => $4,
'size' => $5
});
@lsblk = (@lsblk,@temp);
} }
}
}
# print Data::Dumper::Dumper \@lsblk;
main::log_data('dump','@lsblk',\@lsblk) if $b_log; main::log_data('dump','@lsblk',\@lsblk) if $b_log;
shift @lsblk if @lsblk; # get rid of row headers shift @lsblk if @lsblk; # get rid of row headers
eval $end if $b_log; eval $end if $b_log;
@ -10010,13 +10026,13 @@ sub check_lsblk {
eval $start if $b_log; eval $start if $b_log;
my ($name,$b_size) = @_; my ($name,$b_size) = @_;
my (%part,@row); my (%part,@row);
foreach (@lsblk){ foreach my $ref (@lsblk){
@row = split /\s+/, $_; my %row = %$ref;
next if ! $row[1]; next if ! $row{'name'};
if ($name eq $row[0]){ if ($name eq $row{'name'}){
$part{'fs'} = $row[3]; $part{'fs'} = $row{'fs'};
$part{'size'} = $row[-1] / 1024 if $b_size && $row[-1]; $part{'size'} = $row{'size'}/ 1024 if $b_size && $row{'size'};
$part{'rm'} = $row[2] if defined $row[2]; $part{'rm'} = $row{'rm'} if $row{'rm'};
last; last;
} }
} }
@ -15006,7 +15022,7 @@ sub get_tty_console_irc {
sub get_tty_number { sub get_tty_number {
eval $start if $b_log; eval $start if $b_log;
my $tty = POSIX::ttyname(1); my $tty = POSIX::ttyname(1);
#variants: /dev/pts/1 /dev/tty1 /dev/pts/5 /dev/ttyp2 /dev/pts/1 #variants: /dev/pts/1 /dev/tty1 /dev/ttyp2 /dev/ttyra [hex number a]
$tty =~ s/.*\/[^0-9]*//g if defined $tty; $tty =~ s/.*\/[^0-9]*//g if defined $tty;
$tty = '' if ! defined $tty; $tty = '' if ! defined $tty;
log_data('data',"tty:$tty") if $b_log; log_data('data',"tty:$tty") if $b_log;

View file

@ -1,3 +1,26 @@
=====================================================================================
Version: 3.0.03
Patch Version: 00
Script Date: 2018-04-12
-----------------------------------
Changes:
-----------------------------------
New version. NBD network block device fixes
Two enhancements/bug fixes:
1. inxi did not have support for network block devices /dev/nbd0 type syntax in
disks.
2. this caused a slight failure in lsblk output, so I switched to using lsblk -P
to force paired key values, which are then put into an array of hashes.
These both appeared on an ARM server system, but surprisingly, there were no ARM
specific issues at all on that system.
Both issues/enhancements tested and working fine.
-----------------------------------
-- Harald Hope - Thu, 12 Apr 2018 19:22:27 -0700
===================================================================================== =====================================================================================
Version: 3.0.02 Version: 3.0.02
Patch Version: 00 Patch Version: 00