Provided by: manpages-fr-dev_4.26.0-1_all bug

NOM

       sync_file_range - Synchroniser un segment de fichier avec le disque

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #define _GNU_SOURCE         /* See feature_test_macros(7) */
       #define _FILE_OFFSET_BITS 64
       #include <fcntl.h>

       int sync_file_range(int fd, off_t offset, off_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 correspond à autre chose qu'un fichier ordinaire, un périphérique bloc ou un répertoire.

VERSIONS

   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,
                                off_t offset, off_t nbytes);

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

STANDARDS

       Linux.

HISTORIQUE

       Linux 2.6.17.

   sync_file_range2()
       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().

NOTES

       _FILE_OFFSET_BITS doit être défini à 64 dans le code qui récupère l'adresse  de  sync_file_range,  si  ce
       code  est  destiné à être portable sur les plateformes traditionnelles x86 et ARM 32 bits où la taille de
       off_t est par défaut de 32 bits.

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   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>,    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 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.9.1                     2 mai 2024                                 sync_file_range(2)