Quale supporto file system splicing tramite giunzione di Linux (2)?
-
30-09-2019 - |
Domanda
Il href="http://linux.die.net/man/2/splice" pagina man per la chiamata di sistema splice
dice che splice
potrebbe non riuscire e set errno
a EINVAL
se:
sistema di file di destinazione non supporta splicing; nessuno dei descrittori si riferisce ad un tubo; o compensare espressa dispositivo non seekable
Quali sistemi di file supportano splicing?
Soluzione
La mia risposta originale è stato parzialmente corretto, questo è un importante riscrittura.
Linux 2.6.30.10 e seguente
In Linux 2.6.30.10 e più anziani, i rendimenti splice
EINVAL
quando il file system di origine o di destinazione non lo fa splicing supporto. Qui ci sono le filesystem che supportano splicing :
- in modalità di lettura : ADFS AFFS, AFS, BFS, btrfs, Coda, ecryptfs, EXOFS, ext2, ext3, ext4, grassi, fusibili, HPFS jffs2, JFS, Minix, NFS, nilfs2, ntfs, OCFS2, omfs, qnx4, ReiserFS, smbfs, sysv, ubifs, UDF, UFS.
- in modalità di scrittura :. EXOFS, ext2, ext3, ext4, jfs, OCFS2, ReiserFS, ubifs
Dettagli follow. Il supporto per splicing nel determinato nel do_splice_to()
funzione nel caso "file pipe" e nel funzione do_splice_from()
nel caso "pipe al file". E 'fatto controllando se il struct file_operations
rilevante contiene .splice_read
o .splice_write
, rispettivamente. Al fine di produrre gli elenchi di cui sopra di filesystem, ho fs/*/file.c
grepped per .splice_read
e .splice_write
.
Linux 2.6.31 e superiori
A partire da Linux 2.6.31, tutti i filesystem supportano splicing sia in modalità di lettura e scrittura .
Dettagli follow. Quando un file system non ha .splice_read
o .splice_write
nella sua struct file_operations
, una funzione di sicurezza è utilizzato: default_file_splice_read
e default_file_splice_write
, rispettivamente. Vedere do_splice_to()
e do_splice_from()
per le implementazioni. Nota:. EINVAL
possono ancora essere restituito per altri motivi elencati nella documentazione
Altri suggerimenti
accordding a questo , EXT3 fa. Sembra che si può essere fuori di fortuna con qualsiasi file system FUSE.