[pve-devel] [PATCH storage v5 16/51] plugin api: bump api version and age
Fiona Ebner
f.ebner at proxmox.com
Wed Jul 2 18:27:49 CEST 2025
Introduce qemu_blockdev_options() plugin method.
In terms of the plugin API only, adding the qemu_blockdev_options()
method is a fully backwards-compatible change. When qemu-server will
switch to '-blockdev' however, plugins where the default implemenation
is not sufficient, will not be usable for virtual machines anymore.
Therefore, this is intended for the next major release, Proxmox VE 9.
Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
---
Changes in v5:
* Mention where to find allowed drivers and options and how to request
if more are needed.
ApiChangeLog | 15 +++++++++++++++
src/PVE/Storage.pm | 4 ++--
2 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/ApiChangeLog b/ApiChangeLog
index 987da54..9ea7724 100644
--- a/ApiChangeLog
+++ b/ApiChangeLog
@@ -6,6 +6,21 @@ without breaking anything unaware of it.)
Future changes should be documented in here.
+## Version 12:
+
+* Introduce `qemu_blockdev_options()` plugin method
+
+ Proxmox VE will switch to the more modern QEMU command line option `-blockdev` replacing `-drive`.
+ With `-drive`, it was enough to specify a path, where special protocol paths like `iscsi://` were
+ also supported. With `-blockdev`, the data is more structured, a driver needs to be specified
+ alongside the path to an image and each driver supports driver-specific options. Most storage
+ plugins should be fine using driver `host_device` in case of a block device and `file` in case of
+ a file and no special options. See the default implemenation of the base plugin for guidance, also
+ if the plugin uses protocol paths. Implement this this method for Proxmox VE 9. See
+ `$allowed_qemu_blockdev_options` in `PVE/Storage.pm` for currently allowed drivers and option.
+ Feel free to request allowing more drivers or options on the pve-devel mailing list based on your
+ needs.
+
## Version 11:
* Allow declaring storage features via plugin data
diff --git a/src/PVE/Storage.pm b/src/PVE/Storage.pm
index 25ce5f2..6e6bdb2 100755
--- a/src/PVE/Storage.pm
+++ b/src/PVE/Storage.pm
@@ -41,11 +41,11 @@ use PVE::Storage::BTRFSPlugin;
use PVE::Storage::ESXiPlugin;
# Storage API version. Increment it on changes in storage API interface.
-use constant APIVER => 11;
+use constant APIVER => 12;
# Age is the number of versions we're backward compatible with.
# This is like having 'current=APIVER' and age='APIAGE' in libtool,
# see https://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html
-use constant APIAGE => 2;
+use constant APIAGE => 3;
our $KNOWN_EXPORT_FORMATS = ['raw+size', 'tar+size', 'qcow2+size', 'vmdk+size', 'zfs', 'btrfs'];
--
2.47.2
More information about the pve-devel
mailing list