Provided by: manpages-fr-dev_4.15.0-9_all bug

NOM

       sync_file_range - Synchroniser un segment de fichier avec le disque

SYNOPSIS

       #define _GNU_SOURCE         /* Consultez feature_test_macros(7) */
       #include <fcntl.h>

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

DESCRIPTION

       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ées 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.

   Avertissement
       Cet appel système est extrêmement dangereux et  ne  devrait  pas  être  utilisé  dans  des
       programmes  portables.  Aucune  de  ces  opérations  n'entraîne  l'écriture  physique  des
       métadonnées du fichier. Par conséquent, à moins que l'application  n'effectue  strictement
       que  des  écrasements  de  blocs  disque déjà instanciés, il n'y a aucune garantie que les
       données soient disponibles après un plantage.Il n'y a  pas  d'interface  utilisateur  pour
       savoir  si  une  écriture consiste uniquement en un écrasement. Sur un système de fichiers
       avec une sémantique de copie sur écriture (copy-on-write), tel que btrfs, un écrasement de
       blocs  existants  est  impossible.  Pour  écrire  sur  un  espace déjà alloué, beaucoup de
       systèmes de fichiers nécessitent aussi des appels à l'allocateur de blocs, qui dans le cas
       de  cet appel, ne seront pas synchronisés sur le disque. Cet appel système ne vide pas les
       caches d'écriture du disque, ainsi aucune garantie  d'intégrité  n'est  possible  sur  des
       systèmes dont les caches de disque en écriture sont volatiles.

   Quelques détails
       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 assez de mémoire.

       ENOSPC Plus de place disque disponible.

       ESPIPE fd refers to something other than a regular file, a block device, or a directory.

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.

NOTES

   sync_file_range2()
       Certaines architectures (par exemple  PowerPC  et  ARM)  nécessitent  que  les  paramètres
       64 bits  soient  alignés  dans  une paire de registres adéquate. Sur ces architectures, la
       signature d'appel de sync_file_range() indiquée dans le SYNOPSIS imposerait le  gaspillage
       d'un  registre  remplissage  entre les paramètres fd et offset (consultez syscall(2)  pour
       plus de détails). Pour cette  raison,  ces  architectures  définissent  un  appel  système
       différent qui réordonne correctement les paramètres :

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

       À  part  cela,  le  comportement de cet appel système est strictement identique à celui de
       sync_file_range().

       Un appel système avec cette signature est  d'abord  apparu  sur  l'architecture  ARM  dans
       Linux 2.6.20,  avec  comme  nom arm_sync_file_range(). Il a été renommé dans Linux 2.6.22,
       quand un appel système analogue a été ajouté pour PowerPC. Sur  des  architectures  où  la
       glibc  est  prise en charge, elle remplace de manière transparente sync_file_range2() sous
       le nom sync_file_range().

VOIR AUSSI

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

COLOPHON

       Cette page fait partie de la publication 5.13 du projet man-pages Linux.  Une  description
       du  projet et des instructions pour signaler des anomalies et la dernière version de cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

       La traduction française de cette  page  de  manuel  a  été  créée  par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,  Stéphan  Rafin  <stephan.rafin@laposte.net>, Thierry
       Vignaud <tvignaud@mandriva.com>, François Micaux, Alain  Portal  <aportal@univ-montp2.fr>,
       Jean-Philippe    Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-
       luc.coulon@wanadoo.fr>,   Julien    Cristau    <jcristau@debian.org>,    Thomas    Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,  Denis
       Barbier <barbier@debian.org> et David Prévot <david@tilapin.org>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General
       Public  License  version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   concernant   les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.