Какие файловые системы поддерживают SLICING через Splice Linux (2)?

StackOverflow https://stackoverflow.com/questions/3638657

Вопрос

То Страница человека для 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 делает. Похоже, вам удачи с любой файловой системой предохранителей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top