fix_label_cache #161

Merged
narenas merged 2 commits from fix_label_cache into main 2026-05-13 09:15:47 +02:00
Collaborator

Summary

  • DiskLib ogCreatePartitions: añadido name="CACHE" en la entrada sfdisk
    para particiones de caché en discos GPT, alineando el comportamiento con
    ogCreateCache (CacheLib) que siempre ha incluido ese campo.

Problema

Desde la versión 1.10.5, ogCreatePartitions es quien crea la partición de
caché (antes lo hacía ogCreateCache via initCache). ogCreateCache siempre
incluía name="CACHE" en su línea sfdisk para GPT, lo que permite a
ogFindCache() localizar la partición vía blkid -t PARTLABEL=CACHE incluso
antes de que esté formateada. ogCreatePartitions no lo hacía.

En discos GPT completamente nuevos (sin caché previa), el flujo fallaba así:

  1. ogCreatePartitions crea la caché correctamente al final del disco (sfdisk ✓)
  2. initCache es llamado para formatearla
  3. ogFindCache() → None (sin PARTLABEL, sin filesystem, sin tipo MSDOS 0xCA)
  4. ogGetCacheSize() → 0 → initCache concluye que debe recrear la partición
  5. ogCreateCache la calcula en la posición justo después de la partición anterior
  6. Esa posición ya está ocupada por otra partición → sfdisk falla:
    Failed to add #N partition: Numerical result out of range

En discos con una caché ya existente de ejecuciones anteriores el bug no se
manifestaba porque el PARTLABEL=CACHE ya estaba establecido.

Solución

# DiskLib.py — ogCreatePartitions
name_field = ', name="CACHE"' if 'GPT' == PTTYPE else ''
sfdisk_input += f'... type={CACHE_ID}{name_field}\n'

Tras sfdisk + partprobe, blkid -t PARTLABEL=CACHE localiza la partición
inmediatamente, ogFindCache() devuelve el slot correcto y initCache solo
necesita formatearla y montarla.

## Summary - **DiskLib `ogCreatePartitions`**: añadido `name="CACHE"` en la entrada sfdisk para particiones de caché en discos GPT, alineando el comportamiento con `ogCreateCache` (CacheLib) que siempre ha incluido ese campo. ## Problema Desde la versión 1.10.5, `ogCreatePartitions` es quien crea la partición de caché (antes lo hacía `ogCreateCache` via `initCache`). `ogCreateCache` siempre incluía `name="CACHE"` en su línea sfdisk para GPT, lo que permite a `ogFindCache()` localizar la partición vía `blkid -t PARTLABEL=CACHE` incluso antes de que esté formateada. `ogCreatePartitions` no lo hacía. En discos GPT **completamente nuevos** (sin caché previa), el flujo fallaba así: 1. `ogCreatePartitions` crea la caché correctamente al final del disco (sfdisk ✓) 2. `initCache` es llamado para formatearla 3. `ogFindCache()` → `None` (sin `PARTLABEL`, sin filesystem, sin tipo MSDOS `0xCA`) 4. `ogGetCacheSize()` → `0` → `initCache` concluye que debe **recrear** la partición 5. `ogCreateCache` la calcula en la posición justo después de la partición anterior 6. Esa posición ya está ocupada por otra partición → sfdisk falla: `Failed to add #N partition: Numerical result out of range` En discos con una caché ya existente de ejecuciones anteriores el bug no se manifestaba porque el `PARTLABEL=CACHE` ya estaba establecido. ## Solución ```python # DiskLib.py — ogCreatePartitions name_field = ', name="CACHE"' if 'GPT' == PTTYPE else '' sfdisk_input += f'... type={CACHE_ID}{name_field}\n' ``` Tras sfdisk + partprobe, blkid -t PARTLABEL=CACHE localiza la partición inmediatamente, ogFindCache() devuelve el slot correcto y initCache solo necesita formatearla y montarla.
narenas added 2 commits 2026-05-13 09:15:37 +02:00
18beabcbb4 fix(DiskLib): añadir name="CACHE" en entrada sfdisk para caché GPT
ogCreateCache siempre ha incluido name=CACHE en su línea sfdisk para GPT,
permitiendo que ogFindCache() localice la partición via blkid PARTLABEL
antes de que tenga filesystem. ogCreatePartitions no lo hacía, por lo que
en discos GPT con caché recién creada (sin formatear aún) ogFindCache()
devolvía None, ogGetCacheSize() devolvía 0 e initCache intentaba recrear
la partición en una posición diferente, fallando con "Numerical result out
of range" al solaparse con otras particiones ya existentes.

El problema solo se manifestaba en discos GPT frescos (sin caché previa):
si la caché ya existía de ejecuciones anteriores conservaba el PARTLABEL
establecido por ogCreateCache y el nuevo flujo funcionaba correctamente.

Refs: flujo ogCreatePartitions → initCache introducido en 1.10.5
narenas merged commit 4c1ed20430 into main 2026-05-13 09:15:47 +02:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: opengnsys/ogclone-engine#161
There is no content yet.