首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >哪些文件系统支持通过Linux的splice进行拼接(2)?

哪些文件系统支持通过Linux的splice进行拼接(2)?
EN

Stack Overflow用户
提问于 2010-09-04 02:42:39
回答 2查看 2.4K关注 0票数 18

man page for the splice system call表示,如果出现以下情况,splice可能会失败,并将errno设置为EINVAL

目标文件系统不支持拼接;两个描述符都不引用管道;也不支持为不可查找的设备指定偏移量

哪些文件系统支持拼接?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-08 21:20:34

我最初的回答是部分错误的,这是一个主要的重写。

Linux 2.6.30.10及更低版本

在Linux2.6.30.10及更早的版本中,当源或目标文件系统不支持拼接时,splice会返回EINVAL。以下是支持拼接的文件系统

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

详细信息如下。对拼接的支持在“文件到管道”情况下的函数和“管道到文件”情况下的函数中确定。通过检查相关的struct file_operations是否分别包含.splice_read.splice_write__来完成。为了生成上面的文件系统列表,我为.splice_read.splice_write创建了fs/*/file.c

Linux 2.6.31及更高版本

从Linux2.6.31开始,所有的文件系统在读写模式中都支持拼接。

详细信息如下。当文件系统的struct file_operations__中没有.splice_read.splice_write时,将使用一个后备函数:分别为default_file_splice_readdefault_file_splice_write__。有关实现,请参阅和。注意:由于文档中列出的其他原因,仍可能会返回EINVAL

票数 15
EN

Stack Overflow用户

发布于 2010-09-04 03:08:57

根据this的说法,EXT3做到了。看起来您可能对任何FUSE文件系统都不感兴趣。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3638657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档