From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [45.144.208.40]) by lore.proxmox.com (Postfix) with ESMTPS id 2A8C81FF0E4 for ; Tue, 11 Aug 2026 13:12:12 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id AE6DD2155A; Tue, 11 Aug 2026 13:12:11 +0200 (CEST) Message-ID: <8f67a923-1469-4742-91c0-a1355e366e5b@proxmox.com> Date: Tue, 11 Aug 2026 13:12:06 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH proxmox 3/3] pbs-api-types: zfs: define schema for recordsize To: pbs-devel@lists.proxmox.com References: <20260804124021.83704-1-s.shaji@proxmox.com> <20260804124021.83704-4-s.shaji@proxmox.com> Content-Language: en-US From: Nicolas Frey In-Reply-To: <20260804124021.83704-4-s.shaji@proxmox.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1786446713762 X-SPAM-LEVEL: Spam detection results: 0 AWL 1.681 Adjusted score from AWL reputation of From: address DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment (newer systems) RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: WVXSUMITRDC5JRW7HQ4QGREH5RRBL337 X-Message-ID-Hash: WVXSUMITRDC5JRW7HQ4QGREH5RRBL337 X-MailFrom: n.frey@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox Backup Server development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: when using the CLI, this currently creates a zpool even though the validation *should* fail. e.g. the following command: proxmox-backup-manager disk zpool create test1 \ --devices sdc --raidlevel single --recordsize=12 prints this error: command "zfs" "set" "recordsize=12" "relatime=on" "test1" failed - status code: 255 - cannot set property for 'test1': 'recordsize' must be power of 2 from 512B to 16M but still creates a zfs pool with the default 128K record size. On 8/4/26 2:40 PM, Shan Shaji wrote: > Signed-off-by: Shan Shaji > --- > pbs-api-types/src/zfs.rs | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/pbs-api-types/src/zfs.rs b/pbs-api-types/src/zfs.rs > index 2cfbd403..3cfb9f8f 100644 > --- a/pbs-api-types/src/zfs.rs > +++ b/pbs-api-types/src/zfs.rs > @@ -6,6 +6,7 @@ use proxmox_schema::*; > > const_regex! { > pub ZPOOL_NAME_REGEX = r"^[a-zA-Z][a-z0-9A-Z\-_.:]+$"; > + ZFS_RECORD_SIZE_REGEX = r"^(?i)([1-9][0-9]*)([km])?$"; > } > > pub const ZFS_ASHIFT_SCHEMA: Schema = IntegerSchema::new("Pool sector size exponent.") > @@ -18,6 +19,10 @@ pub const ZPOOL_NAME_SCHEMA: Schema = StringSchema::new("ZFS Pool Name") > .format(&ApiStringFormat::Pattern(&ZPOOL_NAME_REGEX)) > .schema(); > > +pub const ZFS_RECORD_SIZE_SCHEMA: Schema = StringSchema::new("ZFS Recordsize. Use numbers with optional k or m suffix (e.g., 128k).") > + .format(&ApiStringFormat::Pattern(&ZFS_RECORD_SIZE_REGEX)) consider using `ApiStringFormat::VerifyFn` to verify the record size, analagous to the one you have in javascript > + .schema(); > + > #[api(default: "On")] > #[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize)] > #[serde(rename_all = "lowercase")]