Flush in fsimpl/gofer.regularFileFD.OnClose() if there are no dirty pages.

This is closer to indistinguishable from VFS1 behavior.

PiperOrigin-RevId: 328256068
This commit is contained in:
Jamie Liu
2020-08-24 20:06:16 -07:00
committed by gVisor bot
parent ee041b60bf
commit 4ad858a586
+9 -3
View File
@@ -56,10 +56,16 @@ func (fd *regularFileFD) OnClose(ctx context.Context) error {
if !fd.vfsfd.IsWritable() {
return nil
}
// Skip flushing if writes may be buffered by the client, since (as with
// the VFS1 client) we don't flush buffered writes on close anyway.
// Skip flushing if there are client-buffered writes, since (as with the
// VFS1 client) we don't flush buffered writes on close anyway.
d := fd.dentry()
if d.fs.opts.interop == InteropModeExclusive {
if d.fs.opts.interop != InteropModeExclusive {
return nil
}
d.dataMu.RLock()
haveDirtyPages := !d.dirty.IsEmpty()
d.dataMu.RUnlock()
if haveDirtyPages {
return nil
}
d.handleMu.RLock()