2011-08-29 4 views
5

¿"ecryptfs" admite E/S directas? En general, ¿cómo puede un sistema de archivos "apilable", que modifica el búfer proporcionado por la E/S directa de soporte del usuario?Uso de IO directo con ecryptfs y sistemas de archivos apilables similares

+1

La E/S directa no significa nada más que "los datos no provienen y no entran en la memoria caché del búfer". Hasta ahora, no hay ninguna razón por la cual un sistema de archivos particular no debería ser capaz de soportarlo. Por supuesto, en el caso de un sistema de archivos encriptado, significará que cada vez que lea un sector, debe ser descifrado una y otra vez ... – Damon

+0

La preocupación aquí es cómo se implementa una operación de escritura. Si no puede haber copia, debemos encriptar los datos en el búfer de usuario, realizar una operación de escritura y luego descifrar los datos nuevamente ya que no podemos dejar el búfer de usuario modificado. Esto debería ser difícil cuando las E/S asíncronas también se lanzan a la imagen. – ghostkadost

+1

'O_DIRECT' no ofrece una operación asíncrona o promete una gran cantidad de lo contrario. Todo lo que _realmente_ promete es (cita original) "intentar minimizar los efectos de la memoria caché" al no pasar por la memoria caché del búfer. No da ninguna garantía de que no se hagan copias. Evita las copias que puede evitar. Y, la mayoría de las veces, hace lo contrario de lo que las personas piensan (degradan el rendimiento). Obviamente, si cifra un sector, a menos que el controlador de disco tenga cifrado HW, debe hacer una copia, pero no puede evitarlo. Sin embargo, todavía no entrará en la memoria caché del búfer. – Damon

Respuesta

3

ecryptfs no es compatible con la E/S directa.

No hay implementación de la devolución de llamada de direct_IO() en ecryptfs address_space_operations.

+0

Aún así sería bueno saber cómo se puede agregar esto a los sistemas de archivos apilables que modifican los datos. Especialmente cuando IO asíncrono se realiza con Direct I/O. ¿Cómo podemos garantizar la consistencia del buffer de usuario * y * mantener la semántica de la E/S directa? – ghostkadost

0

No he investigado tanto, pero personalmente usaría un decorator pattern para los controladores del sistema de archivos, de modo que ecryptfs se coloque encima de cualquiera de los controladores de dispositivo reales. Luego, cuando se hacen las llamadas, entran en el código de ecryptfs, luego ecryptfs llama a los controladores del dispositivo y hace la escritura.

Cuestiones relacionadas