2015-08-31 27 views

risposta

5

Quando si richiama il syscall syncfs (2), il kernel chiama un sync_filesystem() sul superblocco del file system a cui appartiene fd. Se il file system in questione implementa l'operazione di superblocco .sync_fs, viene chiamato. FUSE no e quindi sync_filesystem() per FUSE chiama semplicemente __sync_blockdev() su/dev/fuse, che sincronizza tutte le pagine dirty (e quindi tutti i file unsynced) per quella mount di fusibile.

+0

Grazie. Potresti chiarire un po 'di più la mia domanda: un client FUSE può sapere in qualche modo quando viene chiamato sync (2) o syncfs (2)? –

+0

Ci scusiamo per il ritardo. Da quello che ho capito, quando uno dei due precedenti due syscalls viene chiamato dall'applicazione, il file fuse_flush() viene chiamato nel kernel, che viene passato al client FUSE. – itisravi