SYNC_FILE_RANGE

Section : Manuel du programmeur Linux (2)
Mise à jour de la version anglaise : 27 mai 2008
Index Menu principal  

NOM

sync_file_range - Synchroniser un segment de fichier avec le disque  

SYNOPSIS

#define _GNU_SOURCE
#include <fcntl.h>

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

DESCRIPTION

sync_file_range() permet un contrôle précis lors de la synchronisation du fichier ouvert référencé par le descripteur de fichier fd, sur le disque.

offset est le premier octet de la zone du fichier à synchroniser. nbytes indique la taille, en octets, de la zone à synchroniser ; si nbytes vaut zéro, toute la zone entre offset et la fin du fichier est synchronisée. La synchronisation se fait en multiples de la taille de la page système : offset est arrondi par défaut sur une frontière de page, (offset+nbytes-1) est arrondi par excès.

L'argument masque de bits flags peut contenir une ou plusieurs des valeurs suivantes :

SYNC_FILE_RANGE_WAIT_BEFORE
Avant de réaliser d'autres écritures, attendre l'écriture physique de toutes les pages de la zone indiquée dont l'écriture a déjà été demandée au pilote du périphérique.
SYNC_FILE_RANGE_WRITE
Commencer l'écriture physique de toutes les pages modifiées de la plage indiquée pour lesquelles elle n'a pas encore été demandée. Veuillez noter que cela peut bloquer si vous tentez d'écrire plus que la taille de la file demandée.
SYNC_FILE_RANGE_WAIT_AFTER
Attendre l'écriture physique de toutes les pages de la plage après toute demande d'écriture.

Il est permis de définir flags à 0, auquel cas, cela est considéré comme une non-opération.  

Quelques détails

Aucune de ces opérations n'entraîne l'écriture physique des métadonnées du fichier. Par conséquent, à moins que l'application effectue strictement des écrasements de blocs disque déjà instantiés, il n'y a aucune garantie que les données soient disponibles après un plantage.

SYNC_FILE_RANGE_WAIT_BEFORE et SYNC_FILE_RANGE_WAIT_AFTER détecteront toute erreur d'entrées-sorties ou erreur ENOSPC et les renverront à l'appelant.

Des combinaisons utiles pour flags sont :

SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE
S'assurer de l'écriture physique de toutes les pages de la plage spécifiée qui étaient modifiées lorsque sync_file_range() a été appelé. C'est l'opération « démarrer l'écriture pour l'intégrité des données ».
SYNC_FILE_RANGE_WRITE
Commencer l'écriture physique de toutes les pages modifiées de la plage indiquée pour lesquelles elle n'a pas encore été demandée. C'est une opération « vidage vers le disque » asynchrone. Elle n'est pas convenable pour les opérations d'intégrité de données.
SYNC_FILE_RANGE_WAIT_BEFORE (ou SYNC_FILE_RANGE_WAIT_AFTER)
Attendre la fin de l'écriture physique de toutes les pages de la plage indiquée. Cela peut être utilisé après une opération SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE pour attendre la fin de cette opération et obtenir son résultat.
SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE | SYNC_FILE_RANGE_WAIT_AFTER
C'est une opération « écriture pour intégrité des données » qui s'assure que toutes les pages modifiées dans la plage spécifiée lors de l'appel à sync_file_range() sont bien envoyées sur le disque.
 

VALEUR RENVOYÉE

S'il réussit, sync_file_range() renvoie 0 ; s'il échoue, il renvoie -1 auquel cas errno contient le code d'erreur.  

ERREURS

EBADF
fd n'est pas un descripteur de fichier valide.
EINVAL
flags spécifie un bit invalide ; ou offset ou nbytes n'est pas valide.
EIO
Erreur d'entrées-sorties.
ENOMEM
Mémoire insuffisante.
ENOSPC
Espace disque insuffisant.
ESPIPE
fd fait référence à autre chose qu'un fichier ordinaire, un prériphérique de bloc, un répertoire ou un lien symbolique.
 

VERSIONS

sync_file_range() est apparu dans le noyau Linux dans sa version 2.6.17.  

CONFORMITÉ

Cet appel système est spécifique à Linux et ne devrait pas être utilisé dans des applications conçues pour être portables.  

VOIR AUSSI

fdatasync(2), fsync(2), msync(2), sync(2), feature_test_macros(7)  

TRADUCTION

Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 11 août 2006 et révisée le 17 juillet 2008.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 sync_file_range ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.

 

Index

NOM
SYNOPSIS
DESCRIPTION
Quelques détails
VALEUR RENVOYÉE
ERREURS
VERSIONS
CONFORMITÉ
VOIR AUSSI
TRADUCTION

Dernière mise à jour : 17 juillet 2008