Skip to content

Promover ublk a transporte de produto após o MVP NBD #145

Description

@emersonbusson

Contexto

O MVP Linux/WSL2 usa NBD como transporte validado. O suporte experimental a ublk não deve entrar na primeira release estável até alcançar o mesmo nível de segurança, lifecycle e evidência live.

Objetivo

Promover ublk de capacidade experimental/laboratorial para transporte formal de produto, sem substituir NBD antes da conclusão de todos os gates.

Trabalho necessário

  • criar/revisar o fluxo SSDV3 completo: PRD → SPEC → AUDIT-2.5 → IMPL;
  • definir propriedade de FDs, ring, worker, backend CUDA/VRAM e dispositivo de controle;
  • implementar lifecycle completo create → configure → start → I/O → drain → stop → delete;
  • garantir swapoff-first antes de encerrar ring, worker, backend ou dispositivo;
  • tornar create/start/stop/delete idempotentes e seguros após repetição;
  • implementar recuperação após crash do daemon, abort de FETCH/COMMIT e desconexão do worker;
  • impedir dispositivos /dev/ublkb*//dev/ublkc* órfãos e ghost swap;
  • validar concorrência, queue depth > 1, I/O multipágina e limites de buffer;
  • validar integridade antes/depois com BINARY_MATCH do daemon;
  • adicionar watchdog externo, telemetria e timeout limitado;
  • documentar instalação, requisitos de kernel, rollback e recuperação;
  • comparar desempenho e estabilidade com NBD sem promover ublk apenas por microbenchmark.

Matriz mínima de testes

  • unitários de uAPI/layout, encoding, ranges e estados ilegais;
  • integração com backend RAM sem GPU;
  • integração isolada com CUDA/VRAM;
  • leitura/escrita concorrente e multipágina;
  • mkswap → swapon → carga limitada → swapoff;
  • stop normal, stop repetido, crash do daemon e abort durante I/O;
  • pressão até limite com watchdog, sem executar pressão ublk não supervisionada no WSL2 diário;
  • verificação terminal: nenhum ublk ativo, nenhum swap gerenciado, daemon morto, VRAM liberada e zero ghost.

Critérios de aceite

  • cobertura ≥80% em cada slice de lógica de negócio listado na SPEC;
  • todas as linhas da matriz possuem testes nomeados;
  • campanha live isolada registra before → action → after;
  • checksums coincidem em todas as rodadas;
  • swapoff e drain terminam dentro do timeout definido;
  • crash/recovery não deixa dispositivo, processo, FD, ring ou swap residual;
  • NBD continua sendo fallback estável até comparação formal aprovada;
  • documentação e gap register atualizados somente após evidência real.

Fora de escopo

  • bloquear ou atrasar o MVP Linux/WSL2 com NBD;
  • executar pressão ublk não supervisionada no host WSL2 diário;
  • declarar suporte apenas porque unit tests ou QEMU smoke passaram.

Rollback trigger

Reverter a promoção se ocorrer ghost swap, hang acima do timeout da SPEC, corrupção/checksum divergente, dispositivo ublk residual, daemon encerrado com swap ativo, falha de liberação de VRAM ou regressão superior ao limite de desempenho definido na SPEC.

Metadata

Metadata

Assignees

Labels

area:coreCrates Rust / daemontype:featNova funcionalidade

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions