Commit 102b571e authored by Kirill Smelkov's avatar Kirill Smelkov

.

parent e177e16e
......@@ -572,17 +572,15 @@ type BigFile struct {
//
// both watches in already "established" state (i.e. initial watch
// request was completed and answered with "ok"), and watches in
// progress of being established. XXX text
//
// XXX locking -> watchMu?
// XXX -> watches ?
// progress of being established are kept here.
watchMu sync.Mutex // XXX use
watchTab map[*Watch]struct{}
}
// blkLoadState represents a ZBlk load state/result.
//
// when !ready the loading is in progress.
// when ready the loading has been completed.
// when ready the loading has been completed.
type blkLoadState struct {
ready chan struct{}
......@@ -1164,8 +1162,8 @@ func (f *BigFile) readBlk(ctx context.Context, blk int64, dest []byte) (err erro
}
// we have the data - it can be used after watchers are updated
// XXX should we use ctx here? (see pinWatchers comments)
f.pinWatchers(ctx, blk, treepath, zblk, blkrevMax)
// XXX should we use ctx here? (see readPinWatchers comments)
f.readPinWatchers(ctx, blk, treepath, zblk, blkrevMax)
// data can be used now
close(loading.ready)
......@@ -1322,8 +1320,9 @@ func (w *Watch) _pin(ctx context.Context, blk int64, rev zodb.Tid) (err error) {
return nil
}
*/
// pinWatchers complements readBlk: it sends `pin blk` for watchers of the file
// readPinWatchers complements readBlk: it sends `pin blk` for watchers of the file
// after a block was loaded from ZODB and before block data is returned to kernel.
//
// See "7.2) for all registered client@at watchers ..."
......@@ -1333,7 +1332,7 @@ func (w *Watch) _pin(ctx context.Context, blk int64, rev zodb.Tid) (err error) {
// XXX do we really need to use/propagate caller context here? ideally update
// watchers should be synchronous, and in practice we just use 30s timeout.
// Should a READ interrupt cause watch update failure?
func (f *BigFile) pinWatchers(ctx context.Context, blk int64, treepath []btree.LONode, zblk zBlk, blkrevMax zodb.Tid) {
func (f *BigFile) readPinWatchers(ctx context.Context, blk int64, treepath []btree.LONode, zblk zBlk, blkrevMax zodb.Tid) {
// only head/ is being watched for
if f.head.rev != 0 {
return
......
......@@ -207,7 +207,7 @@ class tDB:
# still wait for request completion even after fatal signal )
t._closed = chan()
t._wcfuseabort = open("/sys/fs/fuse/connections/%d/abort" % os.stat(testmntpt).st_dev, "w")
go(t._abort_ontimeout, 7*time.second) # NOTE must be >> with_timeout
go(t._abort_ontimeout, 10*time.second) # NOTE must be >> with_timeout
# ZBigFile(s) scheduled for commit
t._changed = {} # ZBigFile -> {} blk -> data
......
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