prealloc.2 (2010 09)

p
prealloc(2) prealloc(2)
NAME
prealloc - preallocate fast disk storage
SYNOPSIS
#include <unistd.h>
int prealloc(int fildes, off_t size);
DESCRIPTION
prealloc() is used to preallocate space on a disk for faster storage operations.
fildes is a file descriptor obtained from a
creat(), open(), dup(),or fcntl() system call for an
ordinary file of zero length. It must be opened writable, because it will be written to by
prealloc().
size is the size in bytes to be preallocated for the file specified by fildes . At least size bytes will be allo-
cated. Space is allocated in an implementation-dependent fashion for fast sequential reads and writes.
The EOF in an extended file is left at the end of the preallocated area. The current file pointer is left at
zero. The file is zero-filled.
Using
prealloc() on a file does not give the file an attribute that is inherited when copying or restor-
ing the file using a program such as
cp or tar (see cp(1) and tar (1)). It simply ensures that disk space
has been preallocated for size bytes in a manner suited for sequential access. The file can be extended
beyond these limits by
write() operations past the original end of file. However, this space will not
necessarily be allocated using any special strategy.
RETURN VALUE
Upon successful completion,
prealloc() returns 0; otherwise, it returns 1 and sets errno to indi-
cate the error.
ERRORS
prealloc() fails and no disk space is allocated if any of the following conditions are encountered:
[EBADF] fildes is not a valid open file descriptor opened for writing.
[EDQUOT] User’s disk quota block limit has been reached for this file system.
[EFBIG] size exceeds the maximum file size or the processs file size limit. See ulimit (2).
[ENOSPC] Not enough space is left on the device to allocate the requested amount; no space
was allocated.
[ENOTEMPTY] fildes not associated with an ordinary file of zero length.
EXAMPLES
Assuming a process has opened a file for writing, the following call to
prealloc() preallocates at least
50 000 bytes on disk for the file represented by file descriptor outfd :
prealloc (outfd, 50000);
WARNINGS
Allocation of the file space is highly dependent on current disk usage. A successful return does not tell
you how fragmented the file actually might be if the disk is nearing its capacity.
AUTHOR
prealloc() was developed by HP.
SEE ALSO
prealloc(1), creat(2), dup(2), fcntl(2), open(2), prealloc64(2), read(2), ulimit(2), write(2).
HP-UX 11i Version 3: September 2010 1 Hewlett-Packard Company 1

Summary of content (2 pages)