> Linux Reviews > man >

fallocate


  1. fallocate.2.man


1. fallocate.2.man

Manpage of FALLOCATE

FALLOCATE

Section: Руководство программиста Linux (2)
Updated: 2010-09-10
Index Return to Main Contents
 

ИМЯ

fallocate - управляет пространством файла  

ОБЗОР

#define _GNU_SOURCE             /* Смотрите feature_test_macros(7) */
#include <fcntl.h>

int fallocate(int fd, int mode, off_t offset, off_t len);
 

ОПИСАНИЕ

Это непереносимый системный вызов, существующий только в Linux. В POSIX.1 есть переносимый метод, обеспечивающий выделения пространства под файл (см. posix_fallocate()).

fallocate() позволяет вызывающему напрямую управлять выделенным дисковым пространством файла, на который указывает fd, определённого байтового диапазона, начинающегося с offset и имеющего длину len байт.

В аргументе mode задаётся операция, выполняемая над указанным диапазоном. В настоящее время для mode поддерживается только один флаг:

FALLOC_FL_KEEP_SIZE
Этот флаг указывает выделить и инициализировать нулями дисковое пространство в диапазоне, начинающемся с offset и длиной len. После успешного вызова последующая запись в этот диапазон гарантировано выполнится, а не прервётся из-за нехватки дискового пространства. Предварительное определение обнулённых блоков за концом файла полезно для оптимизации добавления данных. Предварительное определение блоков не изменит размер файла (согласно stat(2)), даже если они меньше чем offset+len.

Если флаг FALLOC_FL_KEEP_SIZE в mode не указан, то поведение по умолчанию почти то же, что и с заданным флагом. Разница в том, что при успешном выполнении размер файла будет изменён, если offset + len больше чем размер файла. Такое поведение по умолчанию очень напоминает поведение библиотечной функции posix_fallocate(3), и служит для оптимальной реализации этой функции.

Так как выделение выполняется кусками размером с блок, fallocate() может выделить больший диапазон, чем было указано.  

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении функции fallocate() возвращается 0. В случае ошибки возвращается -1.  

ОШИБКИ

EBADF
fd не является допустимым файловым дескриптором или не открыт на запись.
EFBIG
Сумма offset+len превышает максимальный размер файла.
EINTR
При выполнении поступил сигнал.
EINVAL
offset меньше 0, или len меньше или равна 0.
EIO
При чтении или записи в файловую систему произошла ошибка ввода-вывода.
ENODEV
fd не указывает на обычный файл или каталог. (Если fd --- канал или FIFO, то возникнет другая ошибка.)
ENOSPC
Недостаточно дискового пространства на устройстве, на котором расположен файл, указанный в fd.
ENOSYS
Файловая система с файлом, на который указывает fd, не поддерживает данную операцию.
EOPNOTSUPP
Аргумент mode не поддерживается файловой системой, на которой расположен файл, указанный в fd.
 

ВЕРСИИ

fallocate() доступен в Linux начиная с ядра 2.6.23. Поддержка в glibc добавлена в версии 2.10.  

СООТВЕТСТВИЕ СТАНДАРТАМ

fallocate() есть только в Linux.  

СМОТРИТЕ ТАКЖЕ

ftruncate(2), posix_fadvise(3), posix_fallocate(3)


 

Index

ИМЯ
ОБЗОР
ОПИСАНИЕ
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
ОШИБКИ
ВЕРСИИ
СООТВЕТСТВИЕ СТАНДАРТАМ
СМОТРИТЕ ТАКЖЕ

This document was created by man2html using the manual pages.
Time: 17:41:16 GMT, October 23, 2013

SVENSKA - ja