Question

La page de manuel pour appel système splice dit que splice peut échouer et ensemble errno à EINVAL si:

  

système de fichiers cible ne prend pas en charge épissage; aucun des descripteurs se réfère à un tuyau; ou décalage donné pour le dispositif non-seekable

Quels sont les systèmes de fichiers pris en charge épissage?

Était-ce utile?

La solution

Ma réponse initiale a été en partie incorrecte, c'est une réécriture majeure.

Linux 2.6.30.10 et ci-dessous

Linux 2.6.30.10 et plus, retourne splice EINVAL lorsque la source ou le système de fichiers cible ne épissage support. Voici les systèmes de fichiers qui font l'épissage de support :

  • en mode lecture : ADFS, affs, afs, BFS, btrfs, coda, ecryptfs, EXOFS, ext2, ext3, ext4, graisse, fusible, HPFS, JFFS2, JFS, Minix, nfs, nilfs2, ntfs, ocfs2, omfs, QNX4, ReiserFS, smbfs, sysv, UBIFS, udf, ufs.
  • en mode écriture :. EXOFS, ext2, ext3, ext4, JFS, ocfs2, ReiserFS, UBIFS

Détails suivi. Prise en charge de l'épissage à déterminer dans le do_splice_to() fonction dans le cas « fichier à pipe » et dans le la fonction de do_splice_from() dans le cas « pipe de fichier ». Il se fait en vérifiant si le struct file_operations concerné contient .splice_read ou .splice_write, respectivement. Afin de produire les listes ci-dessus des systèmes de fichiers, j'ai fs/*/file.c pour .splice_read et rassemblés de .splice_write .

Linux 2.6.31 et au-dessus

A partir de Linux 2.6.31, tous les systèmes de fichiers supportent épissage aussi bien dans les modes de lecture et d'écriture .

Détails suivi. Lorsqu'un système de fichiers n'a pas .splice_read ou .splice_write dans son struct file_operations, une fonction de secours est utilisée: default_file_splice_read et default_file_splice_write, respectivement. Voir do_splice_to() et do_splice_from() pour les implémentations. Note:. EINVAL peut encore être renvoyé pour d'autres raisons énumérées dans la documentation

Autres conseils

accordding cette , EXT3 fait. Il semble que vous pourriez être hors de la chance avec tout système de fichiers FUSE.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top