How to Apply Promox Patch?

HE_Cole

Member
Oct 25, 2018
45
1
6
32
Miami, FL
Hi everyone!

I want to apply this patch but i am not sure how.

Patch: https://pve.proxmox.com/pipermail/pve-devel/2019-April/036621.html

and the code

Code:
use list_images to check for existence of cloudinit disk instead of
'-e'. this should solve the problem with rbd where the path returned by
PVE::Storage::path is not checkable with '-e'.

Signed-off-by: Mira Limbeck <m.limbeck at proxmox.com>
---
 PVE/QemuServer/Cloudinit.pm | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/PVE/QemuServer/Cloudinit.pm b/PVE/QemuServer/Cloudinit.pm
index 445c777..da08470 100644
--- a/PVE/QemuServer/Cloudinit.pm
+++ b/PVE/QemuServer/Cloudinit.pm
@@ -31,13 +31,17 @@ sub commit_cloudinit_disk {
     my $iso_path = PVE::Storage::path($storecfg, $drive->{file});
     my $scfg = PVE::Storage::storage_config($storecfg, $storeid);
     my $format = PVE::QemuServer::qemu_img_format($scfg, $volname);
-    if (! -e $iso_path) {
+
+    my $plugin = PVE::Storage::Plugin->lookup($scfg->{type});
+    my $vollist = $plugin->list_images($storeid, $scfg, $vmid);
+    my $exists = grep { $_->{volid} eq $drive->{file} } @$vollist;
+
+    if (!$exists) {
     $volname =~ m/(vm-$vmid-cloudinit(.(qcow2|raw))?)/;
     my $name = $1;
     my $d = PVE::Storage::vdisk_alloc($storecfg, $storeid, $vmid, $format, $name, 4 * 1024);
     }
 
-    my $plugin = PVE::Storage::Plugin->lookup($scfg->{type});
     $plugin->activate_volume($storeid, $scfg, $volname);
 
     my $size = PVE::Storage::file_size_info($iso_path);
--
2.11.0

Could someone please explain, I am sure its simple.

I assume

the - means remove line in file
the + is add line in file
?

Thanks
 
Last edited:
This patch was created with the tool 'diff' and the easiest way to apply it is with the tool 'patch'. Copy/Paste the patch into a file, starting with these two lines:
--- a/PVE/QemuServer/Cloudinit.pm
+++ b/PVE/QemuServer/Cloudinit.pm

and ending with
my $size = PVE::Storage::file_size_info($iso_path);

(so do not include the "--" above.)

If you called the file "cloudinit.patch", then you apply it by running:

patch < cloudinit.patch

I highly recommend that you use the "--dry-run" option first. You may need to make sure to run in the right directory so the files can be found, or check the man page for "patch" for details.

hope this helps.

Usually, it is not recommended to apply patches like this, unless you really need to, and can't wait for a packaged update. Also, make sure to back up any files that may be changed.
 
  • Like
Reactions: HE_Cole
This patch was created with the tool 'diff' and the easiest way to apply it is with the tool 'patch'. Copy/Paste the patch into a file, starting with these two lines:
--- a/PVE/QemuServer/Cloudinit.pm
+++ b/PVE/QemuServer/Cloudinit.pm

and ending with
my $size = PVE::Storage::file_size_info($iso_path);

(so do not include the "--" above.)

If you called the file "cloudinit.patch", then you apply it by running:

patch < cloudinit.patch

I highly recommend that you use the "--dry-run" option first. You may need to make sure to run in the right directory so the files can be found, or check the man page for "patch" for details.

hope this helps.

Usually, it is not recommended to apply patches like this, unless you really need to, and can't wait for a packaged update. Also, make sure to back up any files that may be changed.


I waited but in the next update from Promox there was no patch still. And i need live migration working again.

The guide you wrote is good but i have some questions.


1. Do i need to be in the directory of file i am patching?
2 . If so where is that file?

My steps

I created a file called cloudinit.patch in /

i pasted everything from

--- a/PVE/QemuServer/Cloudinit.pm
to the end at
my $size = PVE::Storage::file_size_info($iso_path);

Where is it you said i need to remove the "--" from ?
The beginning of the a/PVE/Qemu ?

I did "patch < /cloudinit.patch --dry-run"
and i get error

Code:
can't find file to patch at input line 3
Perhaps you should have used the -p or --strip option?
The text leading up to this was:
--------------------------
|--- a/PVE/QemuServer/Cloudinit.pm
|+++ b/PVE/QemuServer/Cloudinit.pm
--------------------------
File to patch:

All help is greatly appreciated!
 
  • Like
Reactions: shantanu

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!