fix volume activation for ZFS subvols
When using the path to request properties, and no ZFS file system is mounted at that path, ZFS will fall back to the parent filesystem: > # zfs unmount myzpool/subvol-172-disk-0 > # zfs get mounted /myzpool/subvol-172-disk-0 > NAME PROPERTY VALUE SOURCE > myzpool mounted yes - > # zfs get mounted myzpool/subvol-172-disk-0 > NAME PROPERTY VALUE SOURCE > myzpool/subvol-172-disk-0 mounted no - Thus, we cannot use the path and need to use the dataset directly. Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
This commit is contained in:
committed by
Thomas Lamprecht
parent
68c4bca39e
commit
3893d2755e
@ -549,15 +549,14 @@ sub activate_volume {
|
||||
|
||||
return 1 if defined($snapname);
|
||||
|
||||
my (undef, undef, undef, undef, undef, undef, $format) = $class->parse_volname($volname);
|
||||
my (undef, $dataset, undef, undef, undef, undef, $format) = $class->parse_volname($volname);
|
||||
|
||||
if ($format eq 'raw') {
|
||||
$class->zfs_wait_for_zvol_link($scfg, $volname);
|
||||
} elsif ($format eq 'subvol') {
|
||||
my ($path, undef, undef) = $class->path($scfg, $volname, $storeid);
|
||||
my $mounted = $class->zfs_get_properties($scfg, 'mounted', "$path");
|
||||
my $mounted = $class->zfs_get_properties($scfg, 'mounted', "$scfg->{pool}/$dataset");
|
||||
if ($mounted !~ m/^yes$/) {
|
||||
$class->zfs_request($scfg, undef, 'mount', "$path");
|
||||
$class->zfs_request($scfg, undef, 'mount', "$scfg->{pool}/$dataset");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user