From 29c6e22024be15085d8b266a8e814abcbcc1e666 Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Sun, 29 Jan 2017 11:29:42 +0000 Subject: [PATCH] mount: Make fsync be a no-op rather than returning an error - fixes #1045 --- cmd/mount/file.go | 10 ++++++++++ cmd/mount/write_test.go | 16 ++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/cmd/mount/file.go b/cmd/mount/file.go index fb2f59f71..5958d9190 100644 --- a/cmd/mount/file.go +++ b/cmd/mount/file.go @@ -144,3 +144,13 @@ func (f *File) Open(ctx context.Context, req *fuse.OpenRequest, resp *fuse.OpenR */ return nil, errors.New("can't figure out how to open") } + +// Check interface satisfied +var _ fusefs.NodeFsyncer = (*File)(nil) + +// Fsync the file +// +// Note that we don't do anything except return OK +func (f *File) Fsync(ctx context.Context, req *fuse.FsyncRequest) error { + return nil +} diff --git a/cmd/mount/write_test.go b/cmd/mount/write_test.go index 7c3d5c388..ee838c53f 100644 --- a/cmd/mount/write_test.go +++ b/cmd/mount/write_test.go @@ -8,6 +8,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) // Test writing a file with no write()'s to it @@ -101,3 +102,18 @@ func TestWriteFileDoubleClose(t *testing.T) { run.rm(t, "testdoubleclose") } + +// Test Fsync +// +// NB the code for this is in file.go rather than write.go +func TestWriteFileFsync(t *testing.T) { + filepath := run.path("to be synced") + fd, err := os.Create(filepath) + require.NoError(t, err) + _, err = fd.Write([]byte("hello")) + require.NoError(t, err) + err = fd.Sync() + require.NoError(t, err) + err = fd.Close() + require.NoError(t, err) +}