From cdef3abb25984c369571626b38f97f92a0a2fd15 Mon Sep 17 00:00:00 2001 From: Mira Limbeck Date: Fri, 29 Mar 2019 10:13:10 +0100 Subject: [PATCH] workaround zfs create -V error for unaligned sizes fixes the 'cannot create 'nvme/foo': volume size must be a multiple of volume block size' error by always rounding the size up to the next 1M boundary. this is a workaround until https://github.com/zfsonlinux/zfs/issues/8541 is solved. the current manpage says 128k is the maximum blocksize, but a local test showed that values up to 1M are allowed. it might be possible to increase it even further (see f1512ee61). Signed-off-by: Mira Limbeck --- PVE/Storage/ZFSPoolPlugin.pm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/PVE/Storage/ZFSPoolPlugin.pm b/PVE/Storage/ZFSPoolPlugin.pm index 6e08457..4bf6d50 100644 --- a/PVE/Storage/ZFSPoolPlugin.pm +++ b/PVE/Storage/ZFSPoolPlugin.pm @@ -309,7 +309,12 @@ sub zfs_get_pool_stats { sub zfs_create_zvol { my ($class, $scfg, $zvol, $size) = @_; - + + # always align size to 1M as workaround until + # https://github.com/zfsonlinux/zfs/issues/8541 is solved + my $padding = (1024 - $size % 1024) % 1024; + $size = $size + $padding; + my $cmd = ['create']; push @$cmd, '-s' if $scfg->{sparse}; -- 2.39.2