Commit d134ee44 authored by Kirill Smelkov's avatar Kirill Smelkov

X FUSE lookup deadlock should be hopefully fixed

parent 9ff5ed32
...@@ -1043,7 +1043,7 @@ func (f *BigFile) invalidateBlk(ctx context.Context, blk int64) (err error) { ...@@ -1043,7 +1043,7 @@ func (f *BigFile) invalidateBlk(ctx context.Context, blk int64) (err error) {
func() { func() {
// store retrieved data back to OS cache for file @<rev>/file[blk] // store retrieved data back to OS cache for file @<rev>/file[blk]
// //
// FIXME there is deadlock here: // XXX there is deadlock here:
// //
// T1: Lookup "head" // T1: Lookup "head"
// -> nodefs.rawBridge.lookupLock.Lock // -> nodefs.rawBridge.lookupLock.Lock
...@@ -1056,6 +1056,8 @@ func (f *BigFile) invalidateBlk(ctx context.Context, blk int64) (err error) { ...@@ -1056,6 +1056,8 @@ func (f *BigFile) invalidateBlk(ctx context.Context, blk int64) (err error) {
// //
// see https://github.com/hanwen/go-fuse/commit/d0fca860 // see https://github.com/hanwen/go-fuse/commit/d0fca860
// for when rawBridge.lookupLock was introduced. // for when rawBridge.lookupLock was introduced.
//
// -> should be fixed: https://review.gerrithub.io/c/hanwen/go-fuse/+/487809
blkrev, _ := f.LastBlkRev(ctx, blk, f.head.zconn.At()) blkrev, _ := f.LastBlkRev(ctx, blk, f.head.zconn.At())
frev, funlock, err := groot.lockRevFile(blkrev, f.zfile.POid()) frev, funlock, err := groot.lockRevFile(blkrev, f.zfile.POid())
if err != nil { if err != nil {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment