Man page - sync_file_range(2)

Packages contains this manual

Available languages:

en fr ja ru

Manual

sync_file_range

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
Avertissement
Quelques détails
VALEUR RENVOYÉE
ERREURS
VERSIONS
sync_file_range2()
STANDARDS
HISTORIQUE
sync_file_range2()
NOTES
VOIR AUSSI
TRADUCTION

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 .