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:

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

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

SYNC_FILE_RANGE_WAIT_AFTER
    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:

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

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

SYNC_FILE_RANGE_WAIT_BEFORE (eller SYNC_FILE_RANGE_WAIT_AFTER)
    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.

SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE | SYNC_FILE_RANGE_WAIT_AFTER
    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

EBADF
    fd er ikke en gyldig filbeskrivelse.

EINVAL
    flag angiver en ugyldig del; eller forskydning eller nbytes er ugyldig.

EIO I/O-fejl.

ENOMEM
    Ikke nok hukommelse.

ENOSPC
    Ikke nok displads.

ESPIPE
    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 (https://www.gnu.org/licenses/gpl-3.0.html) 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.