From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id D552298AC9 for ; Mon, 13 Nov 2023 14:14:03 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id AE4D112CDB for ; Mon, 13 Nov 2023 14:13:33 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Mon, 13 Nov 2023 14:13:33 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id B586E41C15 for ; Mon, 13 Nov 2023 14:13:32 +0100 (CET) Message-ID: Date: Mon, 13 Nov 2023 14:13:31 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: Fiona Ebner , Proxmox VE development discussion References: <20231016115920.95859-1-h.duerr@proxmox.com> <5f42156e-a80c-411b-9ce9-782fa72ffb61@proxmox.com> From: =?UTF-8?Q?Hannes_D=C3=BCrr?= In-Reply-To: <5f42156e-a80c-411b-9ce9-782fa72ffb61@proxmox.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.003 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - Subject: Re: [pve-devel] [PATCH pve-storage] fix #1611: implement import of base-images for LVM-thin Storage X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Nov 2023 13:14:03 -0000 On 11/3/23 11:39, Fiona Ebner wrote: [...] > This essentially duplicates most of the same function in the parent > plugin, i.e. LVMPlugin. What you can do to avoid it, is introduce new > helper functions for the parts that are different, call those in > LVMPlugin's implementation and overwrite the helpers appropriately in > LvmThinPlugin. Then call the parent plugin's function here and do the > base conversion at the end. yes makes sense to work with the LVMPlugin implementation rather then duplicating all the code, good point. >> +sub volume_import { > (...) > >> + >> + # Request new vm-name which is needed for the import >> + if ($isBase) { >> + my $newvmname = $class->find_free_diskname($storeid, $scfg, $vmid); >> + $name = $newvmname; >> + $volname = $newvmname; >> + } > So this is one of the parts that needs to be different. > > You could also just set the name to undef and alloc_image will call > find_free_diskname itself. Might be slightly nicer and avoids a new > find_free_diskname call. We could also set the name to vm-XYZ-disk-N > instead of base-XYZ-disk-N for the allocation I think. Or the whole > function could even be: > > 1. check if base > 2. check if already exists/rename allowed > 3. call parent plugin's volume_import function passing along > vm-XYZ-disk-N (or undef if it should be renamed) instead of base-XYZ-disk-N > 4. if it was a base image, handle the conversion to base image > > Then there's no need for new helpers either. But this is just a sketch > of course, didn't think through all details. What do you think? that sounds good so far, but you can't get around the "find_free_diskspace()" call, can you ? Not specifying a name leads to an error in the volume_import of the LVM plugin, because without a name no plugin can be parsed and to get a new name in the style of "vm-XYZ-disk-N" you need "find_free_diskspace()" to make sure that the name does not yet exist, or am I missing something ? So I'd propose: 1. check if base 2. check if already exists/rename allowed 3. call parent plugin's volume_import function passing along vm-XYZ-disk-N generated with "find_free_diskspace(), instead of base-XYZ-disk-N 4. if it was a base image, handle the conversion to base image