Scroll to navigation

sync_file_range(2) System Calls Manual sync_file_range(2)

NAVN

sync_file_range - synkroniser et filsegment med disken

BIBLIOTEK

C-standardbibliotek (libc-lc)

SYNOPSIS

#define _GNU_SOURCE         /* Se feature_test_macros(7) */
#define _FILE_OFFSET_BITS 64
#include <fcntl.h>
int sync_file_range(int fd, off_t forskydning, off_t nbytes,
                    unsigned int flag);

BESKRIVELSE

sync_file_range() gør det muligt at kontrollere detaljeret under synkronisering af den åbne fil refereret til af fildeskriptoren fd med disken.

forskydning er den startende byte for filintervallet, der skal synkroniseres. nbytes angiver længden af intervallet, der skal synkroniseres, i byte; hvis nbytes er nul, så bliver alle byte fra forskydning helt til slutningen af filen synkroniseret. Synkronisering er i enehder af systemsidestørrelsen: forskydning afrundes ned til en sidegrænse; (forskydning+nbytes-1) afrundes op til en sidegrænse.

Bit-maske-argumentet flag kan inkludere enhver af de følgende værdier:

Vent ved write-out (skriv-ud) på alle sider i det angivne interval, der allerede er blevet sendt til enhedsdriveren for write-out før udførelse af en skrivning.
Igangsæt »write-out« (skriv-ud) ud for alle beskidte sider i det angivne interval, der ikke i øjeblikket er indsendt »write-out«. Bemærk at selv dette kan blokere, hvis du forsøger at skrive mere end forespørgslens kø-størrelse).
Vent ved write-out for alle sider i intervallet før udførelse af en skrivning.

Angivelse af flag som 0 er tilladt, som en no-op.

Advarsel

Dette systemkald er ekstremt farligt bør ikke bruges i flytbare programmer. Ingen af disse operationer skriver filens metadata ud. Derfor, med mindre at programmet strengt udfører overskrivninger af allerede igangsatte diskblokke, er der ingen garantier for at dataene vil være tilgængelige efter et nedbrud. Der er ingen brugerflade til at ivse om en skrivning bare er en overskrivning. På filsystemer, der bruger copy-on-write-semantik (f.eks. btrfs) er en overskrivning af eksisterende allokerede blokke umulig. Når der skrives i et præallokeret rum, så kræver mange filsystemer også kald til blokallokeringen, som dette systemkald ikke synkroniserer ud til disken. Dette systemkald tømmer ikke mellemlageret for diskskrivningen og tilbyder derfor ingen dataintegritet på systemer med flygtige mellemlagre for diskskrivninger.

Nogle detaljer

SYNC_FILE_RANGE_WAIT_BEFORE og SYNC_FILE_RANGE_WAIT_AFTER vil registrere eventuelle I/O-fejl eller ENOSPC-betingelser og vil returnere disse til kalderen.

Nyttige kombinationer af flag-delene er:

Sikrer at alle sider i det angivne interval, der var beskidte da sync_file_range() blev kaldt, er placeret under write-out. Dette er en start skrivning for dataintegritet-operation.
Start write-out for alle beskidte sider i det angivne interval, der ikke er til stede under write-out. Dette er en asynkron tøm til disk-operation. Er ikke egnet for dataintegritetsoperationer.
Vent på fuldførelse af write-out for alle sider det angivne interval. Dette kan bruges efter en tidligere SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE-operation for at vente på fuldførelse af den operation og indhente dens resultat.
Dette er en skriv for dataintegritet-operation, der vil sikre at alle sider i det angivne interval, der var beskidte da sync_file_range() blev kaldt sendes til disken.

RETURVÆRDI

Ved succes returnerer sync_file_range() 0; ved fejl returneres -1 og errno angives for at indikere fejlen.

FEJL

fd er ikke en gyldig filbeskrivelse.
flag angiver en ugyldig del; eller forskydning eller nbytes er ugyldig.
I/O-fejl.
Ikke nok hukommelse.
Ikke nok displads.
fd refererer til noget udover en regulær fil, en blokenhed, eller en mappe.

VERSIONER

sync_file_range2()

Nogle arkitekturer (f.eks., PowerPC, ARM) kræver at 64-bit argumenterne er justeret i et egnet registerpar. På sådanne arkitekturer vil kaldsignaturen for sync_file_range() vist i SYNOPSIS tvinge et register til at blive spildt som mellemrum mellem argumenterne fd og offset. (Se syscall(2) for detaljer). Disse arkitekturer definerer derfor et andet systemkald, der sorterer argumenterne på en egnet måde:


int sync_file_range2(int fd, unsigned int flag,
                     off_t forskydning, off_t nbytes);

Opførelsen for dette systemkald er ellers præcis den samme som sync_file_range().

STANDARDER

Linux.

HISTORIK

Linux 2.6.17.

sync_file_range2()

Et systemkald med denne signatur kom første gang på ARM-arkitekturen i Linux 2.6.20, med navnet arm_sync_file_range(). Blev omdøbt i Linux 2.6.22, da det analoge systemkald blev tilføjet for PowerPC. På arkitekturer hvor glibc-understøttelse tilbydes omslutter glibc gennemsigtigt sync_file_range2() under navnet sync_file_range().

NOTER

_FILE_OFFSET_BITS bør defineres som 64 i kode, der anvender adressen for sync_file_range, hvis koden er tænkt som værende flytbar for traditionelle 32-bit x86- og ARM-platforme hvor off_t's bredde er 32 bit som standard.

SE OGSÅ

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

OVERSÆTTELSE

Oversættere af denne manual til dansk Joe Hansen <joedalton2@yahoo.dk>

Denne oversættelse er gratis dokumentation; læs GNU General Public License version 3 eller nyere for ophavsretbetingelser. Der er INGEN ANSVAR.

Hvis du støder på fejl i oversættelsen af ​​denne vejledning, skal du sende en besked til debian-l10n-danish@lists.debian.org.

8. februar 2026 Linux man-pages (ej udgivet)