Voltar à lista
Linux x86_64Arquivos & E/S#277

sync_file_range

Sincroniza com o disco apenas um intervalo específico de um arquivo, em vez do arquivo inteiro.

Descrição

Dá controle mais fino que `fsync`/`fdatasync` sobre quando e quais partes de um arquivo grande são persistidas, útil para bancos de dados e outras aplicações sensíveis a I/O.

man 2Desde o kernel 2.6.17

Atenção

Não sincroniza metadados — não substitui `fsync` quando a integridade do metadado do arquivo também importa (ex.: seu tamanho após um crash).

Assinatura

int sync_file_range(
    int fd,
    off64_t offset,
    off64_t nbytes,
    unsigned int flags
);

Parâmetros

ParâmetroTipoDescrição
fdintDescritor de arquivo.
offsetoff64_tInício do intervalo.
nbytesoff64_tTamanho do intervalo (0 = até o fim do arquivo).
flagsunsigned intSYNC_FILE_RANGE_WAIT_BEFORE, WRITE, WAIT_AFTER.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1fdint
rsiargumento 2offsetoff64_t
rdxargumento 3nbytesoff64_t
r10argumento 4flagsunsigned int

Valor de retorno

0 em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EBADF(9)
Descritor de arquivo inválido.
EIO(5)
Erro de E/S físico.
ENOSPC(28)
Sem espaço livre no dispositivo.
ENOMEM(12)
Memória insuficiente para completar a operação.

Relacionadas