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:
- Escribe temporalmente los datos de la solicitud en el bloque asignado y luego acusa recibo de la solicitud.
- 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.
-
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. -
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. -
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:
- En lugar de escribir los datos, acusará inmediatamente recibo de la solicitud.
- A continuación, intentará desduplicar el bloque de la misma manera que se ha descrito anteriormente.
-
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.