posix_fallocate
original Source: http://pubs.opengroup.org/onlinepubs/009695399/functions/posix_fallocate.html
posix_fallocate
NAME
NAME
posix_fallocate - file space control (ADVANCED REALTIME)
SYNOPSIS
DESCRIPTION
The posix_fallocate() function shall ensure that any required storage for regular file data starting at offset and continuing for len bytes is allocated on the file system storage media. If posix_fallocate() returns successfully, subsequent writes to the specified file data shall not fail due to the lack of free space on the file system storage media.
posix_fallocate() 함수는 일반 파일이 요구하는 연속된 공간(off-len)이 스토리지 partition에 연속적으로 할당되어 있는 것을 보장 한다. 만일 posix_fallocate()가 success를 리턴하면, 반드시 요구되는 공간이 있다는 것을 의미한다. 해당 파일에 대한 연속적인 쓰기는 파일시스템 스토리지에 free space가 없는 이유로 실패할 수 없다.
만일 4KB 연속적인 공간을 해당 fd를 포함하고 있는 파일시스템의 블록 디바이스에 할당할 경우, posix_fallocate(fd,0,4096) 과 같이 사용할 수 있다.
If the offset+ len is beyond the current file size, then posix_fallocate() shall adjust the file size to offset+ len. Otherwise, the file size shall not be changed.
만일 offset+ len 가 현재 파일 크기보다 크면, posix_fallocate() 는 파일 크기를 offset+ len 로 조정해야 한다. 아닐경우, 파일 크기는 변할 수 없다.
It is implementation-defined whether a previous posix_fadvise() call influences allocation strategy.
Space allocated via posix_fallocate() shall be freed by a successful call to creat() or open() that truncates the size of the file. Space allocated via posix_fallocate() may be freed by a successful call to ftruncate() that reduces the file size to a size smaller than offset+len.
posix_fallocate() 에 의해 할당된 공간은 파일의 크기를 절단하는 create나 open에 해제 될 수 있다. posix_fallocate() 에 의해 할당된 공간은 파일 크기를 offset+len 보다 작은 파일 크기로 줄일 수 있는 ftruncate() 에 의해 해제될 수 있다.
RETURN VALUE
success: return zero
else return errors below:
[EBADF] The fd argument is not a valid file descriptor.
[EBADF] The fd argument references a file that was opened without write permission.
[EFBIG] The value of offset+ len is greater than the maximum file size.
[EINTR] A signal was caught during execution.
[EINVAL] The len argument was zero or the offset argument was less than zero.
[EIO] An I/O error occurred while reading from or writing to a file system.
[ENODEV] The fd argument does not refer to a regular file.
[ENOSPC] There is insufficient free space remaining on the file system storage media.
[ESPIPE] The fd argument is associated with a pipe or FIFO.
'Linux Kernel' 카테고리의 다른 글
JEMALLOC: A Scalable Concurrent malloc(3) Implementation for FreeBSD (0) | 2016.08.18 |
---|---|
malloc 소개 (0) | 2016.08.18 |
System Memory (0) | 2016.08.13 |
Radix Tree (0) | 2016.08.12 |
Linear VS Physical Address (0) | 2016.08.10 |