dwww Home | Manual pages | Find package

sync_file_range(2)            System Calls Manual           sync_file_range(2)

NOM
       sync_file_range - Synchroniser un segment de fichier avec le disque

BIBLIOTHÈQUE
       Bibliothèque C standard (libc, -lc)

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 uti-
       lisé 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 »  asyn-
              chrone.  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  at-
              tendre 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 rem-
       plit 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  inva-
              lide.

       EIO    Erreur d'entrée-sortie.

       ENOMEM Plus assez de mémoire.

       ENOSPC Plus de place disque disponible.

       ESPIPE fd correspond à autre chose qu'un fichier ordinaire, un périphé-
              rique bloc ou un répertoire.

VERSIONS
       sync_file_range() est apparu dans Linux 2.6.17.

STANDARDS
       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  rem-
       plissage  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 iden-
       tique à celui de sync_file_range().

       Un appel système avec cette signature est d'abord apparu  sur  l'archi-
       tecture 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)

TRADUCTION
       La  traduction française de cette page de manuel a été créée par Chris-
       tophe Blaess <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <ste-
       phan.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.cou-
       lon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>,  Thomas  Huriaux
       <thomas.huriaux@gmail.com>,  Nicolas François <nicolas.francois@centra-
       liens.net>, Florentin Duneau <fduneau@gmail.com>, Simon  Paillard  <si-
       mon.paillard@resel.enst-bretagne.fr>,    Denis   Barbier   <barbier@de-
       bian.org>,  David  Prévot  <david@tilapin.org>  et  Jean-Pierre  Giraud
       <jean-pierregiraud@neuf.fr>

       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⟩.

Pages du manuel de Linux 6.03   4 décembre 2022             sync_file_range(2)

Generated by dwww version 1.15 on Sat Jun 29 00:26:37 CEST 2024.