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