diff --git a/PVE/Diskmanage.pm b/PVE/Diskmanage.pm index 66b264a..612bc3b 100644 --- a/PVE/Diskmanage.pm +++ b/PVE/Diskmanage.pm @@ -371,6 +371,16 @@ sub dir_is_empty { return 1; } +sub is_iscsi { + my ($sysdir) = @_; + + if (-l $sysdir && readlink($sysdir) =~ m|host[^/]*/session[^/]*|) { + return 1; + } + + return 0; +} + sub get_disks { my ($disk, $nosmart) = @_; my $disklist = {}; @@ -421,7 +431,7 @@ sub get_disks { my $sysdir = "/sys/block/$dev"; # we do not want iscsi devices - return if -l $sysdir && readlink($sysdir) =~ m|host[^/]*/session[^/]*|; + return if is_iscsi($sysdir); my $sysdata = get_sysdir_info($sysdir); return if !defined($sysdata); diff --git a/test/disklist_test.pm b/test/disklist_test.pm index b2bde49..902563c 100644 --- a/test/disklist_test.pm +++ b/test/disklist_test.pm @@ -80,6 +80,10 @@ sub mocked_get_sysdir_info { return &$originalsub($param); } +sub mocked_is_iscsi { + return 0; +} + sub mocked_dir_glob_foreach { my ($dir, $regex, $sub) = @_; @@ -186,6 +190,8 @@ $diskmanage_module->mock('dir_glob_foreach' => \&mocked_dir_glob_foreach); print("\tMocked dir_glob_foreach\n"); $diskmanage_module->mock('get_sysdir_info' => \&mocked_get_sysdir_info); print("\tMocked get_sysdir_info\n"); +$diskmanage_module->mock('is_iscsi' => \&mocked_is_iscsi); +print("\tMocked is_iscsi\n"); $diskmanage_module->mock('assert_blockdev' => sub { return 1; }); print("\tMocked assert_blockdev\n"); $diskmanage_module->mock('dir_is_empty' => sub {