提交 5440bb0e 作者: Jeromy

fix WriteAt race condition

上级 13c489ec
...@@ -296,22 +296,13 @@ func (fi *File) Read(ctx context.Context, req *fuse.ReadRequest, resp *fuse.Read ...@@ -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 { func (fi *File) Write(ctx context.Context, req *fuse.WriteRequest, resp *fuse.WriteResponse) error {
errs := make(chan error, 1) // TODO: at some point, ensure that WriteAt here respects the context
go func() { wrote, err := fi.fi.WriteAt(req.Data, req.Offset)
wrote, err := fi.fi.WriteAt(req.Data, req.Offset) if err != nil {
if err != nil {
errs <- err
}
resp.Size = wrote
errs <- nil
}()
select {
case err := <-errs:
return err return err
case <-ctx.Done():
return ctx.Err()
} }
resp.Size = wrote
return nil
} }
func (fi *File) Flush(ctx context.Context, req *fuse.FlushRequest) error { func (fi *File) Flush(ctx context.Context, req *fuse.FlushRequest) error {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论