X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/b714ab7401074991afe2fdc239c89107b3af6ca1..75b4699bdfe75c714cc4163e0f726f4987541fa1:/sdk/go/arvados/fs_base.go diff --git a/sdk/go/arvados/fs_base.go b/sdk/go/arvados/fs_base.go index f5916f9571..d06aba3695 100644 --- a/sdk/go/arvados/fs_base.go +++ b/sdk/go/arvados/fs_base.go @@ -58,6 +58,9 @@ type FileSystem interface { // while locking multiple inodes. locker() sync.Locker + // throttle for limiting concurrent background writers + throttle() *throttle + // create a new node with nil parent. newNode(name string, perm os.FileMode, modTime time.Time) (node inode, err error) @@ -95,8 +98,10 @@ type FileSystem interface { // for all writes to finish before returning. If shortBlocks // is true, flush everything; otherwise, if there's less than // a full block of buffered data at the end of a stream, leave - // it buffered in memory in case more data can be appended. - Flush(shortBlocks bool) error + // it buffered in memory in case more data can be appended. If + // path is "", flush all dirs/streams; otherwise, flush only + // the specified dir/stream. + Flush(path string, shortBlocks bool) error } type inode interface { @@ -298,12 +303,17 @@ type fileSystem struct { root inode fsBackend mutex sync.Mutex + thr *throttle } func (fs *fileSystem) rootnode() inode { return fs.root } +func (fs *fileSystem) throttle() *throttle { + return fs.thr +} + func (fs *fileSystem) locker() sync.Locker { return &fs.mutex } @@ -570,7 +580,7 @@ func (fs *fileSystem) Sync() error { return ErrInvalidOperation } -func (fs *fileSystem) Flush(bool) error { +func (fs *fileSystem) Flush(string, bool) error { log.Printf("TODO: flush fileSystem") return ErrInvalidOperation }