Linux x86_64Arquivos & E/S#285
fallocate
Reserva (ou libera) espaço em disco para um arquivo sem precisar escrever dados nele.
Descrição
Garante que escritas futuras dentro da região alocada não falharão por falta de espaço, e pode evitar fragmentação ao reservar um bloco contíguo antecipadamente. Também suporta perfurar buracos (FALLOC_FL_PUNCH_HOLE) e outras operações de gerência de espaço.
man 2Desde o kernel 2.6.23
Assinatura
int fallocate(int fd, int mode, off_t offset, off_t len);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| fd | int | Descritor de arquivo. |
| mode | int | 0 para alocação simples, ou flags como FALLOC_FL_KEEP_SIZE, FALLOC_FL_PUNCH_HOLE. |
| offset | off_t | Início da região. |
| len | off_t | Tamanho da região. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | fdint |
| rsi | argumento 2 | modeint |
| rdx | argumento 3 | offsetoff_t |
| r10 | argumento 4 | lenoff_t |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EBADF(9)
- Descritor de arquivo inválido.
- EFBIG(27)
- Arquivo grande demais.
- EINVAL(22)
- Argumento inválido.
- ENODEV(19)
- Dispositivo inexistente.
- ENOSPC(28)
- Sem espaço livre no dispositivo.
- EOPNOTSUPP(95)
- Operação não suportada nesse socket/arquivo (também ENOTSUP).