Commit 7c8e7c98 authored by Kirill Smelkov's avatar Kirill Smelkov

.

parent 96451811
......@@ -482,6 +482,8 @@ type BigFileDir struct {
// visited BTree nodes of all BigFiles
// -> which file + ordering for toposort on δbtree
//
// (used only for head/, not revX/)
indexMu sync.Mutex
indexLooked *δbtree.PathSet // XXX naming
}
......@@ -921,7 +923,7 @@ func (root *Root) mkrevfile(rev zodb.Tid, fid zodb.Oid) (_ *BigFile, err error)
if err != nil {
return nil, err
}
defer f.Close()
defer f.Close() // XXX -> return to caller to release when inode no longer needed
xfrev = fsconn.LookupNode(root.Inode(), frevpath)
// must be !nil as open succeeded XXX better recheck
......@@ -1064,10 +1066,10 @@ func (root *Root) lookup(name string, fctx *fuse.Context) (_ *Head, err error) {
}
bfdir := &BigFileDir{
Node: newDefaultNode(),
head: revDir,
fileTab: make(map[zodb.Oid]*BigFile),
// indexLooked = nil for @revX/
Node: newDefaultNode(),
head: revDir,
fileTab: make(map[zodb.Oid]*BigFile),
indexLooked: nil, // δbtree index not needed/used for @revX/
}
revDir.bfdir = bfdir
......@@ -1141,9 +1143,12 @@ func (head *Head) bigopen(ctx context.Context, oid zodb.Oid) (_ *BigFile, err er
loading: make(map[int64]*blkLoadState),
}
head.bfdir.indexMu.Lock() // XXX locking ok?
head.bfdir.indexLooked.Add(f, treePath)
head.bfdir.indexMu.Unlock()
// only head/ needs δbtree index.
if head.rev == 0 {
head.bfdir.indexMu.Lock() // XXX locking ok?
head.bfdir.indexLooked.Add(f, treePath)
head.bfdir.indexMu.Unlock()
}
return f, nil
}
......@@ -1292,10 +1297,13 @@ func (f *BigFile) readBlk(ctx context.Context, blk int64, dest []byte) error {
loading.err = err
close(loading.ready)
bfdir := f.head.bfdir
bfdir.indexMu.Lock() // XXX locking correct?
bfdir.indexLooked.Add(f, treepath) // XXX needed only for head/
bfdir.indexMu.Unlock()
// only head/ has δbtree index.
if f.head.rev == 0 {
bfdir := f.head.bfdir
bfdir.indexMu.Lock() // XXX locking correct?
bfdir.indexLooked.Add(f, treepath)
bfdir.indexMu.Unlock()
}
// XXX before loading.ready?
blkrevmax, _ := f.δFtail.LastRevOf(blk, zbf.PJar().At())
......
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