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.