From 5440bb0e6d7a2dcc13662eb53cbe15f65875bc5f Mon Sep 17 00:00:00 2001 From: Jeromy Date: Tue, 24 Mar 2015 11:41:41 -0700 Subject: [PATCH] fix WriteAt race condition --- fuse/ipns/ipns_unix.go | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/fuse/ipns/ipns_unix.go b/fuse/ipns/ipns_unix.go index 0ce96ec87..d96f2b187 100644 --- a/fuse/ipns/ipns_unix.go +++ b/fuse/ipns/ipns_unix.go @@ -296,22 +296,13 @@ func (fi *File) Read(ctx context.Context, req *fuse.ReadRequest, resp *fuse.Read } func (fi *File) Write(ctx context.Context, req *fuse.WriteRequest, resp *fuse.WriteResponse) error { - errs := make(chan error, 1) - go func() { - wrote, err := fi.fi.WriteAt(req.Data, req.Offset) - if err != nil { - errs <- err - } - resp.Size = wrote - errs <- nil - }() - - select { - case err := <-errs: + // TODO: at some point, ensure that WriteAt here respects the context + wrote, err := fi.fi.WriteAt(req.Data, req.Offset) + if err != nil { return err - case <-ctx.Done(): - return ctx.Err() } + resp.Size = wrote + return nil } func (fi *File) Flush(ctx context.Context, req *fuse.FlushRequest) error {