哪些文件系统通过Linux的剪接(2)支持剪接?
-
30-09-2019 - |
题
这 男人页面 splice
系统电话 这么说 splice
可能失败并设置 errno
到 EINVAL
如果:
目标文件系统不支持剪接;两个描述符都没有提到管道。或给予非可持续设备的偏移
哪些文件系统支持剪接?
解决方案
我最初的答案部分不正确,这是一个重大的重写。
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_read
和 default_file_splice_write
, , 分别。看 do_splice_to()
和 do_splice_from()
用于实施。笔记: EINVAL
由于文档中列出的其他原因,仍可以退还。
其他提示
陪同 这, ,ext3做。似乎您对任何保险丝文件系统都可能不幸。
不隶属于 StackOverflow