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 B99941FF0AB for ; Wed, 21 Oct 2026 08:52:52 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id A3BEC214F3; Wed, 21 Oct 2026 08:52:50 +0200 (CEST) From: Kefu Chai To: pve-devel@lists.proxmox.com Subject: [PATCH manager 0/1] ceph: pool: refuse EC layouts the cluster cannot place Date: Wed, 21 Oct 2026 14:52:39 +0800 Message-ID: <20261021065240.3495098-1-k.chai@proxmox.com> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1792565564450 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.301 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: L7OT6ARMXKW6MD2KLE5JUG6QO3O4LOSP X-Message-ID-Hash: L7OT6ARMXKW6MD2KLE5JUG6QO3O4LOSP X-MailFrom: k.chai@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 VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Hi, this one sits on top of "ceph: pool: create EC pools from an existing profile", which I sent a bit earlier [1], and needs that series applied first. That series makes 'k' and 'm' optional when 'profile' is given, and this patch builds on the profile handling it adds. A colleague created an EC pool with k=4,m=2 on a three node cluster. pveceph accepted it, but every placement group of the data pool stayed incomplete, as the six chunks need six failure domains. Creating an image on it then just hung, and pvesm alloc gave up once its storage lock timed out. I could reproduce it on a three node test cluster. The patch counts the failure domains that can hold a chunk and refuses the pool when Ceph could never serve I/O on it. If there are enough for that but not for all k + m chunks, the pool is still created, and the task log says it will stay degraded. OSDs that are out only get such a note rather than a refusal, since they're usually back in soon. This covers the profile pveceph creates from 'k' and 'm', and also an existing profile given with 'profile', as long as it uses jerasure, isa, clay or shec, which all place k + m chunks. lrc adds local parity chunks, and a profile may allow more than one chunk per failure domain, so I left those alone. I'm not sure about refusing versus only warning in the first case. A pool that can never become active seemed worth refusing, but I'm happy to turn it into a warning if that fits better. [1] https://lore.proxmox.com/pve-devel/20261021054425.3271742-1-k.chai@proxmox.com/T/ Kefu Chai (1): api: ceph: pool: createpool: refuse EC layouts the cluster cannot place PVE/API2/Ceph/Pool.pm | 52 ++++++++++ PVE/Ceph/Tools.pm | 48 +++++++++ test/CephPool_test.pl | 232 +++++++++++++++++++++++++++++++++++++++++- 3 files changed, 329 insertions(+), 3 deletions(-) -- 2.47.3