sistemas sistema sirve qué que para mac los filesystem ejemplos caracteristicas archivos c linux filesystems splice zero-copy

sirve - ¿Qué sistemas de archivos admiten el empalme a través del empalme de Linux(2)?



sistema de archivos windows (2)

De acuerdo con this , EXT3 lo hace. Parece que puede estar fuera de suerte con cualquier sistema de archivos FUSE.

La página del manual para la llamada al sistema de splice dice que el splice puede fallar y establecer errno en EINVAL si:

El sistema de archivos de destino no admite el empalme; ninguno de los descriptores se refiere a una tubería; o compensación dada por dispositivo no buscable

¿Qué sistemas de archivos admiten el empalme?


Mi respuesta original fue parcialmente incorrecta, esta es una reescritura importante.

Linux 2.6.30.10 y por debajo

En Linux 2.6.30.10 y versiones anteriores, el splice devuelve EINVAL cuando el sistema de archivos de origen o destino no admite el empalme. Aquí están los sistemas de archivos que admiten el empalme :

  • en modo de lectura : adfs, affs, afs, bfs, btrfs, coda, ecryptfs, exofs, ext2, ext3, ext4, fat, fuse, hpfs, jffs2, jfs, mins, nfs, nilfs2, ntfs, ocfs2, omfs, qfn2 reiserfs, smbfs, sysv, ubifs, udf, ufs.
  • en modo de escritura : exofs, ext2, ext3, ext4, jfs, ocfs2, reiserfs, ubifs.

Los detalles siguen. El soporte para el empalme se determina en la función do_splice_to() en el caso "archivo a canalización" y en la función do_splice_from() en el caso "canalización a archivo". Se realiza verificando si la struct file_operations relevante de las struct file_operations contiene .splice_read o .splice_write , respectivamente. Para producir las listas anteriores de sistemas de archivos, he grepped fs/*/file.c para .splice_read y .splice_write .

Linux 2.6.31 y superior

A partir de Linux 2.6.31, todos los sistemas de archivos admiten el empalme tanto en modo de lectura como de escritura .

Los detalles siguen. Cuando un sistema de archivos no tiene .splice_read o .splice_write en su struct file_operations , se utiliza una función de struct file_operations : default_file_splice_read y default_file_splice_write , respectivamente. Consulte do_splice_to() y do_splice_from() para las implementaciones. Nota: EINVAL aún puede ser devuelto por otras razones enumeradas en la documentación.