fix WriteAt race condition
Jeromy committed
Mar 24, 2015 at 11:41 UTC
5440bb0e6d7a2dcc13662eb53cbe15f65875bc5f
1 file changed
+5
-14
fuse/ipns/ipns_unix.go
+5
-14
@@ -296,22 +296,13 @@ func (fi *File) Read(ctx context.Context, req *fuse.ReadRequest, resp *fuse.Read
296
}
297
298
func (fi *File) Write(ctx context.Context, req *fuse.WriteRequest, resp *fuse.WriteResponse) error {
299
- errs := make(chan error, 1)
300
- go func() {
301
- wrote, err := fi.fi.WriteAt(req.Data, req.Offset)
302
- if err != nil {
303
- errs <- err
304
- }
305
- resp.Size = wrote
306
- errs <- nil
307
- }()
308
-
309
- select {
310
- case err := <-errs:
299
+ // TODO: at some point, ensure that WriteAt here respects the context
300
+ wrote, err := fi.fi.WriteAt(req.Data, req.Offset)
301
+ if err != nil {
302
return err
312
- case <-ctx.Done():
313
- return ctx.Err()
303
}
304
+ resp.Size = wrote
305
+ return nil
306
}
307
308
func (fi *File) Flush(ctx context.Context, req *fuse.FlushRequest) error {