Welche Dateisysteme Unterstützung Spleißen über Linux splice (2)?
-
30-09-2019 - |
Frage
Die Mann-Seite für den splice
Systemaufruf sagt, dass splice
fehlschlagen und Satz errno
zu EINVAL
wenn:
Ziel-Dateisystem nicht unterstützt Spleißen; weder der Deskriptoren bezieht sich auf eine Leitung; oder Offset gegeben für Nicht-seekable Gerät
Welche Dateisysteme unterstützen Spleißen?
Lösung
Meine ursprüngliche Antwort wurde teilweise falsch, dies ist ein komplett neu geschrieben.
Linux 2.6.30.10 und unter
In Linux 2.6.30.10 und älter, splice
kehrt EINVAL
, wenn die Quelle oder Ziel-Dateisystem-Unterstützung Spleißen nicht. Hier sind die Dateisysteme, die Unterstützung Spleißen tun :
- im Lesemodus : adfs, affs, afs, bfs, Btrfs, Coda, ecryptfs, exofs, ext2, ext3, ext4, Fett, Sicherung, hpfs, jffs2, JFS, Minix, nfs, nilfs2, ntfs, ocfs2, omfs, QNX4, reiserFS, smbfs, sysv, UBIFS, UDF, ufs.
- im Schreibmodus :. Exofs, ext2, ext3, ext4, JFS, ocfs2, ReiserFS, UBIFS
Details folgen. Unterstützung für das Spleißen in dem bestimmt do_splice_to()
Funktion in dem „Datei in pipe“ Fall und in dem do_splice_from()
Funktion im "pipe to file" Fall. Es wird durch Prüfen, ob der betreffende struct file_operations
enthält .splice_read
oder .splice_write
gemacht ist. Um die oben genannten Listen der Dateisysteme zu produzieren, habe ich grep fs/*/file.c
für .splice_read
und .splice_write
.
Linux 2.6.31 und höher
Beginnend mit Linux 2.6.31, alle Dateisysteme unterstützen Spleißen sowohl im Lese- und Schreibmodus .
Details folgen. Wenn ein Dateisystem nicht .splice_read
oder .splice_write
in seinem struct file_operations
hat, wird eine Ersatz-Funktion verwendet: default_file_splice_read
und default_file_splice_write
ist. Siehe do_splice_to()
und do_splice_from()
für Implementierungen. Hinweis:. EINVAL
kann noch aus anderen Gründen in der Dokumentation aufgeführt zurückgegeben wird
Andere Tipps
accordding auf diese , EXT3 tut. Es scheint, dass Sie Glück heraus mit jedem FUSE-Dateisystem könnten.