rbd plugin: do not use cache in list_images()
A static cache key 'rbd' was used to cache pool/storeid-specific information. This was causing issues in case of multiple RBD pools. Drop $cache usage instead of fixing the issue as there is no caller using it and the same pool/storeid multiple times. Remove $pool from rbd_ls() and get_rbd_path($scfg) from list_images(). Signed-off-by: Dmitry Petrov <dpetrov67@gmail.com>
This commit is contained in:
committed by
Fabian Grünbichler
parent
e5f4af47d0
commit
9b7c1746f1
@ -209,9 +209,6 @@ sub run_rbd_command {
|
|||||||
sub rbd_ls {
|
sub rbd_ls {
|
||||||
my ($scfg, $storeid) = @_;
|
my ($scfg, $storeid) = @_;
|
||||||
|
|
||||||
my $pool = $scfg->{pool} ? $scfg->{pool} : 'rbd';
|
|
||||||
$pool .= "/$scfg->{namespace}" if defined($scfg->{namespace});
|
|
||||||
|
|
||||||
my $raw = '';
|
my $raw = '';
|
||||||
my $parser = sub { $raw .= shift };
|
my $parser = sub { $raw .= shift };
|
||||||
|
|
||||||
@ -237,7 +234,7 @@ sub rbd_ls {
|
|||||||
my ($owner) = $image =~ m/^(?:vm|base)-(\d+)-/;
|
my ($owner) = $image =~ m/^(?:vm|base)-(\d+)-/;
|
||||||
next if !defined($owner);
|
next if !defined($owner);
|
||||||
|
|
||||||
$list->{$pool}->{$image} = {
|
$list->{$image} = {
|
||||||
name => $image,
|
name => $image,
|
||||||
size => $el->{size},
|
size => $el->{size},
|
||||||
parent => $get_parent_image_name->($el->{parent}),
|
parent => $get_parent_image_name->($el->{parent}),
|
||||||
@ -672,9 +669,7 @@ sub free_image {
|
|||||||
sub list_images {
|
sub list_images {
|
||||||
my ($class, $storeid, $scfg, $vmid, $vollist, $cache) = @_;
|
my ($class, $storeid, $scfg, $vmid, $vollist, $cache) = @_;
|
||||||
|
|
||||||
$cache->{rbd} = rbd_ls($scfg, $storeid) if !$cache->{rbd};
|
my $dat = rbd_ls($scfg, $storeid);
|
||||||
|
|
||||||
my $dat = $cache->{rbd}->{get_rbd_path($scfg)};
|
|
||||||
return [] if !$dat; # nothing found
|
return [] if !$dat; # nothing found
|
||||||
|
|
||||||
my $res = [];
|
my $res = [];
|
||||||
|
|||||||
Reference in New Issue
Block a user