X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/2e2bb873da25e0f7a25a9a9532911bfb5ad69668..ba56503f90d099a215fb7375f5cb1cc1ac667e2c:/sdk/go/arvados/fs_deferred.go diff --git a/sdk/go/arvados/fs_deferred.go b/sdk/go/arvados/fs_deferred.go index 1f888a4e8d..bb6c7a2626 100644 --- a/sdk/go/arvados/fs_deferred.go +++ b/sdk/go/arvados/fs_deferred.go @@ -87,15 +87,16 @@ func (dn *deferrednode) Child(name string, replace func(inode) (inode, error)) ( return dn.realinode().Child(name, replace) } -// Sync is currently unimplemented, except when it's a no-op because -// the real inode hasn't been created. +// Sync is a no-op if the real inode hasn't even been created yet. func (dn *deferrednode) Sync() error { dn.mtx.Lock() defer dn.mtx.Unlock() - if dn.created { - return ErrInvalidArgument - } else { + if !dn.created { return nil + } else if syncer, ok := dn.wrapped.(syncer); ok { + return syncer.Sync() + } else { + return ErrInvalidOperation } } @@ -111,3 +112,4 @@ func (dn *deferrednode) RLock() { dn.realinode().RLock( func (dn *deferrednode) RUnlock() { dn.realinode().RUnlock() } func (dn *deferrednode) FS() FileSystem { return dn.currentinode().FS() } func (dn *deferrednode) Parent() inode { return dn.currentinode().Parent() } +func (dn *deferrednode) MemorySize() int64 { return dn.currentinode().MemorySize() }