Какие файловые системы поддерживают SLICING через Splice Linux (2)?
-
30-09-2019 - |
Вопрос
То Страница человека для splice
Системный звонок Говорит, что splice
может потерпеть неудачу и установить errno
к EINVAL
если:
Целевая файловая система не поддерживает сращивание; Ни один из дескрипторов не относится к трубе; или смещение, приведенное для неисправного устройства
Какие файловые системы поддерживают сращивание?
Решение
Мой первоначальный ответ был частично неверным, это главный перезапись.
Linux 2.6.30.10 и ниже
В Linux 2.6.30.10 и старше, splice
возвращается EINVAL
Когда источник или целевая файловая система не поддерживает сращивание. Вот файловые системы, которые поддерживают сращивание:
- в режиме чтения: ADFS, AFS, 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
, соответственно. Для того, чтобы произвести вышеупомянутые списки файловых систем, я связался 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 делает. Похоже, вам удачи с любой файловой системой предохранителей.