public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [PATCH manager] ui: ceph: use record sizes in Ceph pool edit dialog
@ 2026-01-29 14:42 Kefu Chai
  2026-01-29 14:52 ` [PATCH manager v2] " Kefu Chai
  0 siblings, 1 reply; 2+ messages in thread
From: Kefu Chai @ 2026-01-29 14:42 UTC (permalink / raw)
  To: pve-devel; +Cc: Kefu Chai

From: Kefu Chai <tchaikov@gmail.com>

When editing Ceph pools via the GUI, the edit dialog displays incorrect
Size and Min Size values that don't match the pool overview table. This
can lead to accidental data loss if users save the pool configuration
without noticing the discrepancy.

Root Cause:
The run_editor function creates the PVE.Ceph.PoolEdit dialog but fails
to pass the actual size and min_size values from the grid record. This
causes a race condition where:

1. Form fields initialize with undefined defaultSize/defaultMinSize
2. Fields fall back to default values (e.g., size=2)
3. The sizeChange handler fires and calculates minSize = size/2
4. ViewModel is updated with incorrect values
5. autoLoad tries to load correct data asynchronously
6. But pmxDisplayEditField binding doesn't work properly (see line 30)
7. User sees wrong values and may accidentally save them

The bug is intermittent because closing and reopening the dialog changes
the timing, allowing autoLoad to complete before form initialization.

Fix:
Pass defaultSize and defaultMinSize from the grid record to the edit
dialog, matching the pattern already used by the Create dialog. This
ensures form fields initialize with correct values immediately, avoiding
the race condition.

Impact:
- Prevents accidental reduction of replication factor
- Prevents data loss from incorrect min_size values
- Ensures GUI consistency between overview table and edit dialog

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
---
 www/manager6/ceph/Pool.js | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/www/manager6/ceph/Pool.js b/www/manager6/ceph/Pool.js
index 26384e32..80d57f11 100644
--- a/www/manager6/ceph/Pool.js
+++ b/www/manager6/ceph/Pool.js
@@ -457,6 +457,8 @@ Ext.define(
                     nodename: nodename,
                     pool_name: rec.data.pool_name,
                     isErasure: rec.data.type === 'erasure',
+                    defaultSize: rec.data.size,
+                    defaultMinSize: rec.data.min_size,
                     autoShow: true,
                     listeners: {
                         destroy: () => rstore.load(),
-- 
2.47.3





^ permalink raw reply	[flat|nested] 2+ messages in thread

* [PATCH manager v2] ui: ceph: use record sizes in Ceph pool edit dialog
  2026-01-29 14:42 [PATCH manager] ui: ceph: use record sizes in Ceph pool edit dialog Kefu Chai
@ 2026-01-29 14:52 ` Kefu Chai
  0 siblings, 0 replies; 2+ messages in thread
From: Kefu Chai @ 2026-01-29 14:52 UTC (permalink / raw)
  To: pve-devel; +Cc: Kefu Chai

From: Kefu Chai <tchaikov@gmail.com>

When editing Ceph pools via the GUI, the edit dialog displays incorrect
Size and Min Size values that don't match the pool overview table. This
can lead to accidental data loss if users save the pool configuration
without noticing the discrepancy.

Root Cause:
The run_editor function creates the PVE.Ceph.PoolEdit dialog but fails
to pass the actual size and min_size values from the grid record. This
causes a race condition where:

1. Form fields initialize with undefined defaultSize/defaultMinSize
2. Fields fall back to default values (e.g., size=2)
3. The sizeChange handler fires and calculates minSize = size/2
4. ViewModel is updated with incorrect values
5. autoLoad tries to load correct data asynchronously
6. But pmxDisplayEditField binding doesn't work properly (see line 30)
7. User sees wrong values and may accidentally save them

The bug is intermittent because closing and reopening the dialog changes
the timing, allowing autoLoad to complete before form initialization.

Fix:
Pass defaultSize and defaultMinSize from the grid record to the edit
dialog, matching the pattern already used by the Create dialog. This
ensures form fields initialize with correct values immediately, avoiding
the race condition.

Impact:
- Prevents accidental reduction of replication factor
- Prevents data loss from incorrect min_size values
- Ensures GUI consistency between overview table and edit dialog

Fixes: https://bugzilla.proxmox.com/show_bug.cgi?id=7266
Signed-off-by: Kefu Chai <k.chai@proxmox.com>
---
 www/manager6/ceph/Pool.js | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/www/manager6/ceph/Pool.js b/www/manager6/ceph/Pool.js
index 26384e32..80d57f11 100644
--- a/www/manager6/ceph/Pool.js
+++ b/www/manager6/ceph/Pool.js
@@ -457,6 +457,8 @@ Ext.define(
                     nodename: nodename,
                     pool_name: rec.data.pool_name,
                     isErasure: rec.data.type === 'erasure',
+                    defaultSize: rec.data.size,
+                    defaultMinSize: rec.data.min_size,
                     autoShow: true,
                     listeners: {
                         destroy: () => rstore.load(),
-- 
2.47.3





^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-01-29 14:53 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-01-29 14:42 [PATCH manager] ui: ceph: use record sizes in Ceph pool edit dialog Kefu Chai
2026-01-29 14:52 ` [PATCH manager v2] " Kefu Chai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal