男人页面 splice 系统电话 这么说 splice 可能失败并设置 errnoEINVAL 如果:

目标文件系统不支持剪接;两个描述符都没有提到管道。或给予非可持续设备的偏移

哪些文件系统支持剪接?

有帮助吗?

解决方案

我最初的答案部分不正确,这是一个重大的重写。

Linux 2.6.30.10及以下

在Linux 2.6.30.10及以上, splice 返回 EINVAL 当源或目标文件系统不支持剪接时。这里有 支持剪接的文件系统:

  • 在读取模式中: adfs, affs, afs, bfs, btrfs, coda, ecryptfs, exofs, ext2, ext3, ext4, fat, fuse, hpfs, jffs2, jfs, minix, nfs, nilfs2, ntfs, ocfs2, omfs, qnx4, reiserfs, smbfs ,sysv,ubifs,udf,ufs。
  • 在写模式中: :exofs,ext2,ext3,ext4,jfs,ocfs2,reiserfs,ubifs。

详细信息如下。支持在确定的剪接的支持 do_splice_to() 在“文件到管道”的情况下的功能 do_splice_from() 在“归档管道”情况下功能。这是通过检查相关的 struct file_operations 包含 .splice_read 或者 .splice_write, , 分别。为了产生上述文件系统列表,我已经grepped fs/*/file.c 为了 .splice_read.splice_write.

Linux 2.6.31及以上

从Linux 2.6.31开始 所有文件系统都支持在读写和写模式中拼接.

详细信息如下。当文件系统没有 .splice_read 或者 .splice_write 在它的 struct file_operations, ,使用后备功能: default_file_splice_readdefault_file_splice_write, , 分别。看 do_splice_to()do_splice_from() 用于实施。笔记: EINVAL 由于文档中列出的其他原因,仍可以退还。

其他提示

陪同 , ,ext3做。似乎您对任何保险丝文件系统都可能不幸。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top