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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top