2.4.2. El procesamiento interno de los modos de escritura VDO

Esta sección proporciona detalles sobre el funcionamiento de los modos de escritura sync y async VDO.

Si el módulo kvdo funciona en modo síncrono:

  1. Escribe temporalmente los datos de la solicitud en el bloque asignado y luego acusa recibo de la solicitud.
  2. Una vez completado el acuse de recibo, se intenta desduplicar el bloque calculando una firma MurmurHash-3 de los datos del bloque, que se envía al índice VDO.
  3. Si el índice VDO contiene una entrada para un bloque con la misma firma, kvdo lee el bloque indicado y hace una comparación byte a byte de los dos bloques para verificar que son idénticos.
  4. Si efectivamente son idénticos, entonces kvdo actualiza su mapa de bloques para que el bloque lógico apunte al bloque físico correspondiente y libera el bloque físico asignado.
  5. Si el índice VDO no contiene una entrada para la firma del bloque que se está escribiendo, o el bloque indicado no contiene realmente los mismos datos, kvdo actualiza su mapa de bloques para hacer permanente el bloque físico temporal.

Si kvdo funciona en modo asíncrono:

  1. En lugar de escribir los datos, acusará inmediatamente recibo de la solicitud.
  2. A continuación, intentará desduplicar el bloque de la misma manera que se ha descrito anteriormente.
  3. Si el bloque resulta ser un duplicado, kvdo actualiza su mapa de bloques y libera el bloque asignado. En caso contrario, escribe los datos de la solicitud en el bloque asignado y actualiza el mapa de bloques para que el bloque físico sea permanente.