fdatasync

FSYNC(2)                   Manuel du programmeur Linux                  FSYNC(2)



NOM
       fsync, fdatasync - Synchroniser un fichier en mémoire avec le disque

SYNOPSIS
       #include <unistd.h>

       int fsync(int fd);

       int fdatasync(int fd);

   Exigences de macros de test de fonctionnalités pour la glibc (consulter
   feature_test_macros(7)) :

       fsync():
           Glibc 2.16 et supérieure :
               Aucune macro de fonction de test à définir
           Glibc inférieure ou égale à 2.15 :
               _BSD_SOURCE || _XOPEN_SOURCE
                   || /* depuis glibc 2.8 : */ _POSIX_C_SOURCE >= 200112L
       fdatasync():
           _POSIX_C_SOURCE >= 199309L || _XOPEN_SOURCE >= 500

DESCRIPTION
       fsync() transfère (« flush ») toutes les données modifiées (c'est-à-dire
       les pages modifiées du cache mémoire) du fichier correspondant au
       descripteur fd sur le disque (ou autre périphérique de stockage
       permanent) afin que toutes les informations modifiées puissent être
       récupérées même après un plantage ou un redémarrage du système. Cela
       nécessite d'écrire ou de purger le cache du disque, s'il en existe un.
       L'appel bloque jusqu'à ce que le périphérique indique que le transfert
       est terminé.

       Outre les données du fichier, fsync() transfère aussi les méta-données
       associées au fichier (voir inode(7)).

       Un appel à fsync() n'assure pas obligatoirement que les informations
       concernant le répertoire aient atteint le disque. Pour cela, un appel
       explicite de fsync() sur le descripteur de fichier du répertoire est
       nécessaire.

       fdatasync() est similaire à fsync(), mais ne transfère pas les méta‐
       données, sauf si ces informations sont nécessaires à une récupération
       ultérieure de données. Par exemple, les modifications de st_atime ou
       st_mtime (respectivement, heure du dernier accès et de la dernière
       modification ; consultez inode(7)) ne sont pas transférées, car elles ne
       sont pas nécessaires à une lecture de données ultérieure. En revanche,
       une modification de la taille du fichier (st_size), par exemple effectuée
       par ftruncate(2), nécessite un transfert des méta‐données.

       Le but de fdatasync() est de réduire l'activité du disque pour les
       applications qui n'ont pas besoin d'une parfaite synchronisation des
       méta‐données avec le disque.

VALEUR RENVOYÉE
       Ces appels système renvoient 0 en cas de succès, ou -1 en cas d'échec,
       auquel cas errno contient le code d'erreur.

ERREURS
       EBADF  Le descripteur de fichier fd n’est pas acceptable.

       EIO    Une erreur s'est produite pendant la synchronisation. Cette erreur
              peut provenir de l'écriture de données sur un autre descripteur de
              fichier dans le même fichier. Depuis Linux 4.13, les erreurs
              survenues pendant l'écriture sont signalées à tous les
              descripteurs de fichier qui pourraient avoir écrit des données à
              l'origine de l'erreur. Certains systèmes de fichiers (comme NFS)
              gardent le suivi du descripteur de fichier d'où proviennent les
              données et donnent un retour plus précis. D'autres systèmes de
              fichiers (comme la plupart des locaux) signaleront l'erreur à tous
              les descripteurs de fichier ouverts sur le fichier quand l'erreur
              a été enregistrée.

       ENOSPC L'espace disque a été épuisé pendant la synchronisation.

       EROFS, EINVAL
              fd est associé à un type de fichier spécial (comme un tube, un
              FIFO ou un socket) qui ne prend pas en charge la synchronisation.

       ENOSPC, EDQUOT
              fd est associé à un fichier sur un système de fichiers NFS ou
              autre qui n'alloue pas d'espace au moment de l'appel système
              write(2) et des écritures passées ont échoué à cause d'un espace
              de stockage insuffisant.

CONFORMITÉ
       POSIX.1-2001, POSIX.1-2008, 4.3BSD.

       Sur les systèmes POSIX sur lesquels fdatasync() est disponible, la
       constante symbolique _POSIX_SYNCHRONIZED_IO est définie dans <unistd.h>
       comme étant une valeur supérieure à 0. (Consultez aussi sysconf(3).)

NOTES
       Sur certains systèmes UNIX (mais pas Linux), fd doit être un descripteur
       de fichier accessible en écriture.

       Sous Linux 2.2 et précédents, fdatasync() est équivalent à fsync(), et
       n'apporte donc aucun avantage en performance.

       Les implémentations de la fonction fsync() dans les vieux noyaux et les
       systèmes de fichiers les moins utilisés ne savent pas comment vider les
       caches du disque. Dans ces situations, les caches du disque ont besoin
       d'être désactivés avec hdparm(8) ou sdparm(8) afin de garantir la sûreté
       des opérations.

VOIR AUSSI
       sync(1), bdflush(2), open(2), posix_fadvise(2), pwritev(2), sync(2),
       sync_file_range(2), fflush(3), fileno(3), hdparm(8), mount(8)

COLOPHON
       Cette page fait partie de la publication 5.08 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>, David Prévot <david@tilapin.org> et Jean-Philippe
       MENGUAL <jpmengual@debian.org>

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



Linux                              9 juin 2020                          FSYNC(2)