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);
sync_file_range() permet d’avoir un contrôle fin de la synchronisation
d’un 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 est nul, toute la zone entre offset et la fin du fichier est
synchronisée. La synchronisation se fait par multiples de la taille de
page : offset est arrondi par défaut à la frontière d’une page, et
(offset+nbytes-1) est arrondi par excès.
L’argument flags contient une ou plusieurs des valeurs suivantes :
SYNC_FILE_RANGE_WAIT_BEFORE
Attendre l’écriture de toutes les pages de la zone indiquée qui
ont déjà été envoyée au pilote de périphérique pour écriture,
avant d’effectuer cette écriture.
SYNC_FILE_RANGE_WRITE
Commencer l’écriture physique de toutes les pages modifiées de
la plage indiquée pour lesquelles l’écriture 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.
Indiquer 0 comme flags est possible, dans ce cas l’appel système n’a
pas d’effet.
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étectent les
erreurs d’entrées-sorties ou la condition ENOSPC, et les signalent à
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 l’écriture 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, sinon il renvoie -1 et
remplit errno avec le code d’erreur.
ERREURS
EBADF fd n’est pas un descripteur de fichier valable.
EINVAL flags contient un bit invalide, ou offset ou nbytes est
invalide.
EIO Erreur d’entrée-sortie.
ENOMEM Plus de mémoire disponible.
ENOSPC Plus de place disque disponible.
ESPIPE fd correspond à autre chose qu’un fichier ordinaire, un
périphérique en mode bloc, un répertoire, ou un lien symbolique.
VERSIONS
sync_file_range() est apparu dans Linux 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 portable.
VOIR AUSSI
fdatasync(2), fsync(2), msync(2), sync(2), feature_test_macros(7)
COLOPHON
Cette page fait partie de la publication 3.23 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent être trouvées à l’adresse
http://www.kernel.org/doc/man-pages/.
TRADUCTION
Cette page de manuel a été traduite et est maintenue par Julien Cristau
<julien.cristau@ens-lyon.org> et l’équipe francophone de traduction de
Debian.
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande « man -L C <section> <page_de_man> ».