Как создать файлы, которые имеют общий экстент?

В справочной странице руководства программиста Linux fallocate(2) указано:

Если в режиме указан флаг FALLOC_FL_UNSHARE, экстенты данных общего файла будут закрыты для файла, чтобы гарантировать, что последующая запись не завершится ошибкой из-за нехватки места. Как правило, это делается путем выполнения операции копирования при записи для всех общих данных в файле. Этот флаг может поддерживаться не всеми файловыми системами.

Это здорово, но… Как создать экстенты данных общих файлов?


person Alexander Klauer    schedule 17.11.2019    source источник
comment
Также см. fallocate (2) man-страницу и fallocate vs posix_fallocate при переполнении стека.   -  person jww    schedule 18.11.2019


Ответы (1)


Общие экстенты данных создаются, когда базовая файловая система поддерживает reflinks (пример: XFS и BTRFS) и вы выполняете cp с флагом --reflink или используете ioctl_ficlonerange(2) системный вызов.

Глядя на код ядра, я вижу, что FALLOC_FL_UNSHARE_RANGE обрабатывается только в случае XFS, так что, возможно, этот флаг для fallocate работает только на XFS на данный момент.

person itisravi    schedule 18.11.2019