Commit ad8ff46a authored by Kirill Smelkov's avatar Kirill Smelkov

.

parent 763a9837
...@@ -2133,17 +2133,17 @@ func (root *Root) lookup(name string, fctx *fuse.Context) (_ *Head, err error) { ...@@ -2133,17 +2133,17 @@ func (root *Root) lookup(name string, fctx *fuse.Context) (_ *Head, err error) {
} }
revDir = &Head{ revDir = &Head{
// XXX how to test forgets: // TODO how to test forgets:
// echo 2 >/proc/sys/vm/drop_caches (root) // echo 2 >/proc/sys/vm/drop_caches (root)
// mount -i -oremount $mntpt (root ?) (shrinks dcache) // mount -i -oremount $mntpt (root ?) (shrinks dcache)
// notify invalidate dentry from inside fs // notify invalidate dentry from inside fs
fsNode: newFSNode(&fsOptions{Sticky: false}), // XXX + Head.OnForget() -> del root.revTab[] fsNode: newFSNode(&fsOptions{Sticky: false}), // TODO + Head.OnForget() -> del root.revTab[]
rev: rev, rev: rev,
zconn: zconnRev, // XXX + Head.OnForget() -> release zconn (= abort zconn.TxnCtx) zconn: zconnRev, // TODO + Head.OnForget() -> release zconn (= abort zconn.TxnCtx)
} }
bfdir := &BigFileDir{ bfdir := &BigFileDir{
fsNode: newFSNode(&fsOptions{Sticky: false}), // XXX + BigFileDir.OnForget() fsNode: newFSNode(&fsOptions{Sticky: false}), // TODO + BigFileDir.OnForget()
head: revDir, head: revDir,
fileTab: make(map[zodb.Oid]*BigFile), fileTab: make(map[zodb.Oid]*BigFile),
δFtail: nil, // δFtail not needed/used for @revX/ δFtail: nil, // δFtail not needed/used for @revX/
...@@ -2209,7 +2209,7 @@ func (head *Head) bigfopen(ctx context.Context, oid zodb.Oid) (_ *BigFile, err e ...@@ -2209,7 +2209,7 @@ func (head *Head) bigfopen(ctx context.Context, oid zodb.Oid) (_ *BigFile, err e
} }
f := &BigFile{ f := &BigFile{
fsNode: newFSNode(&fsOptions{Sticky: false}), // XXX + BigFile.OnForget -> del .head.bfdir.fileTab[] fsNode: newFSNode(&fsOptions{Sticky: false}), // TODO + BigFile.OnForget -> del .head.bfdir.fileTab[]
head: head, head: head,
zfile: zfile, zfile: zfile,
blksize: blksize, blksize: blksize,
...@@ -2319,7 +2319,7 @@ func (zh *_wcfs_Zhead) Open(flags uint32, fctx *fuse.Context) (nodefs.File, fuse ...@@ -2319,7 +2319,7 @@ func (zh *_wcfs_Zhead) Open(flags uint32, fctx *fuse.Context) (nodefs.File, fuse
groot.head.zheadMu.Lock() // TODO +fctx -> cancel groot.head.zheadMu.Lock() // TODO +fctx -> cancel
defer groot.head.zheadMu.Unlock() defer groot.head.zheadMu.Unlock()
// XXX del zheadSockTab[sk] on sk.File.Release (= client drops opened handle) // TODO del zheadSockTab[sk] on sk.File.Release (= client drops opened handle)
gdebug.zheadSockTab[sk] = struct{}{} gdebug.zheadSockTab[sk] = struct{}{}
return sk.File(), fuse.OK return sk.File(), fuse.OK
} }
...@@ -2531,7 +2531,8 @@ func _main() (err error) { ...@@ -2531,7 +2531,8 @@ func _main() (err error) {
} }
// wait for unmount // wait for unmount
// XXX the kernel does not send FORGETs on unmount - release left node resources ourselves? // NOTE the kernel does not send FORGETs on unmount - but we don't need
// to release left node resources ourselves, because it is just memory.
<-serveCtx.Done() <-serveCtx.Done()
log.Infof("stop %q %q", mntpt, zurl) log.Infof("stop %q %q", mntpt, zurl)
return nil return 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