From 3d0b0a68cebe28402efe4008c4a7cb809be41e09 Mon Sep 17 00:00:00 2001
From: Kirill Smelkov <kirr@nexedi.com>
Date: Tue, 27 Nov 2018 21:00:10 +0300
Subject: [PATCH] .

---
 wcfs/wcfs.go | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/wcfs/wcfs.go b/wcfs/wcfs.go
index 4e4ebfd..ce8f8fb 100644
--- a/wcfs/wcfs.go
+++ b/wcfs/wcfs.go
@@ -522,6 +522,9 @@ type BigFile struct {
 	// zbf.Size(). It is constant during liftime of current transaction.
 	zbfSize int64
 
+	// change history of this file.
+	δFtail *ΔTailI64 // [](rev, []#blk)
+
 	// TODO -> δFtail
 	// lastChange	zodb.Tid // last change to whole bigfile as of .zconn.At view
 }
@@ -839,6 +842,9 @@ func bigopen(ctx context.Context, zconn *ZConn, oid zodb.Oid) (_ *BigFile, err e
 		zconn:   zconn,
 		zbf:     zbf,
 		zbfSize: zbfSize,
+
+		// XXX this is needed only for head/
+		δFtail:  NewΔTailI64(),	// XXX indicate we have coverage starting from zconn.at?
 	}, nil
 }
 
@@ -933,6 +939,7 @@ func (bfdata *BigFileData) Read(_ nodefs.File, dest []byte, off int64, fctx *fus
 // len(dest) == blksize.
 func (bfdata *BigFileData) readBlk(ctx context.Context, blk int64, dest []byte) error {
 	// XXX errctx?
+	// XXX locking
 
 	// check if someone else is already loading this block
 	bfdata.loadMu.Lock()
@@ -968,11 +975,12 @@ func (bfdata *BigFileData) readBlk(ctx context.Context, blk int64, dest []byte)
 	close(loading.ready)
 
 	// XXX before loading.ready?
-/*
-	blkrevmax2 := max(δFtail.by(blk)) || min(rev for rev in δFtail)
-
-	revmax = min(blkrevmax1, blkrevmax2)
+	blkrevmax2, _ := bfdata.bigfile.δFtail.LastRevOf(blk, zbf.PJar().At())
+	//revmax := min(blkrevmax1, blkrevmax2)
+	revmax := blkrevmax2
+	_ = revmax
 
+/*
 	// XXX remmapping
 	// XXX -> own func?
 	// XXX locking
-- 
2.30.9