2.4.2. O processamento interno dos modos de escrita VDO

Esta seção fornece detalhes sobre como funcionam os modos de escrita sync e async VDO.

Se o módulo kvdo estiver operando em modo síncrono:

  1. Ele escreve temporariamente os dados no pedido para o bloco alocado e depois reconhece o pedido.
  2. Uma vez concluído o reconhecimento, é feita uma tentativa de deduplicar o bloco através do cálculo de uma assinatura MurmurHash-3 dos dados do bloco, que é enviada para o índice VDO.
  3. Se o índice VDO contém uma entrada para um bloco com a mesma assinatura, kvdo lê o bloco indicado e faz uma comparação byte por byte dos dois blocos para verificar se são idênticos.
  4. Se forem de fato idênticos, então kvdo atualiza seu mapa de blocos para que o bloco lógico aponte para o bloco físico correspondente e libere o bloco físico alocado.
  5. Se o índice VDO não contém uma entrada para a assinatura do bloco que está sendo escrito, ou se o bloco indicado não contém realmente os mesmos dados, kvdo atualiza seu mapa de blocos para tornar o bloco físico temporário permanente.

Se kvdo estiver operando em modo assíncrono:

  1. Em vez de escrever os dados, ele reconhecerá imediatamente o pedido.
  2. Tentará então deduplicar o bloco da mesma forma descrita acima.
  3. Se o bloco se tornar um duplicado, kvdo atualiza seu mapa de blocos e libera o bloco alocado. Caso contrário, ele escreve os dados no pedido para o bloco alocado e atualiza o mapa de blocos para tornar o bloco físico permanente.