Skip to content

Commit

Permalink
file.Flush()
Browse files Browse the repository at this point in the history
  • Loading branch information
AskAlexSharov committed Apr 26, 2024
1 parent bcd7fd4 commit bafb71e
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions storage/file.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ func (fs fileClientImpl) OpenTorrent(info *metainfo.Info, infoHash metainfo.Hash
return TorrentImpl{
Piece: t.Piece,
Close: t.Close,
Flush: t.Flush,
}, nil
}

Expand Down Expand Up @@ -122,6 +123,29 @@ func (fs *fileTorrentImpl) Close() error {
return nil
}

func fsync(filePath string) (err error) {
_ = os.MkdirAll(filepath.Dir(filePath), 0o777)
var f *os.File
f, err = os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE, 0o666)
if err != nil {
return err
}
defer f.Close()
if err = f.Sync(); err != nil {
return err
}
return f.Close()
}

func (fts *fileTorrentImpl) Flush() error {
for _, f := range fts.files {
if err := fsync(f.path); err != nil {
return err
}
}
return nil
}

// A helper to create zero-length files which won't appear for file-orientated storage since no
// writes will ever occur to them (no torrent data is associated with a zero-length file). The
// caller should make sure the file name provided is safe/sanitized.
Expand Down

0 comments on commit bafb71e

Please sign in to comment.