diff --git a/t/neo/storage/fs1/py/gen-testdata b/t/neo/storage/fs1/py/gen-testdata
index caf4c0050b4a2f23b29ee7fd4d97ac9a318ae9ac..05553c79d0e31f2ca6ee3812474156fbefa90e24 100755
--- a/t/neo/storage/fs1/py/gen-testdata
+++ b/t/neo/storage/fs1/py/gen-testdata
@@ -31,18 +31,13 @@ def xtime():
 time.time = xtime
 
 
-def _precommit(user, description, extension):
+def commit(user, description, extension):
     txn = transaction.get()
     txn.user = user
     txn.description = description
     txn.extension = extension
-
-def commit(user, description, extension):
-    _precommit(user, description, extension)
-    txn = transaction.get()
     txn.commit()
 
-
 class Object(Persistent):
     # .value
     def __init__(self, value):
@@ -83,9 +78,9 @@ def main():
 
         # undo a transaction one step before a latest one a couple of times
         for j in range(2):
-            ul = db.undoLog(1+j, 2+j)[0]
-            _precommit(u"root%i.%i" % (i, j), u"undo %i.%i" % (i, j), {"x-generator": "zodb/py2 (undo %s)" % ul["id"]})
+            ul = db.undoLog(1, 2)[0]
             db.undo(ul["id"])
+            commit(u"root%i.%i" % (i, j), u"undo %i.%i" % (i, j), {"x-generator": "zodb/py2 (undo %s)" % ul["id"]})
 
     conn.close()
     db.close()
diff --git a/t/neo/storage/fs1/testdata/1.fs b/t/neo/storage/fs1/testdata/1.fs
index 8775841b25869dcd99602887d91efb48ab732b71..10d890747585b158ecad6696666c8f67fa42fb9b 100644
Binary files a/t/neo/storage/fs1/testdata/1.fs and b/t/neo/storage/fs1/testdata/1.fs differ
diff --git a/t/neo/storage/fs1/testdata/1.fs.index b/t/neo/storage/fs1/testdata/1.fs.index
index 55a923c9d512dbf1d21ca023b88f1077df8f618f..0da5beab9843afcf49c0af5e2eef8919eef2b71b 100644
Binary files a/t/neo/storage/fs1/testdata/1.fs.index and b/t/neo/storage/fs1/testdata/1.fs.index differ
diff --git a/t/neo/storage/fs1/testdata_expect_test.go b/t/neo/storage/fs1/testdata_expect_test.go
index ab41d26efd068ec77cc4f1be388c6ab9cc5748d8..eaddac3f48639fcbe92aafd8df81ad53e09d8b00 100644
--- a/t/neo/storage/fs1/testdata_expect_test.go
+++ b/t/neo/storage/fs1/testdata_expect_test.go
@@ -1,16 +1,16 @@
 // DO NOT EDIT - AUTOGENERATED (by py/gen-testdata)
 package fs1
 
-const _1fs_indexTopPos = 8917
+const _1fs_indexTopPos = 9771
 var _1fs_indexEntryv = [...]indexEntry{
-	{       0,     5029},
-	{       1,     7211},
-	{       2,     8099},
-	{       3,     8691},
-	{       4,     8543},
-	{       5,     7359},
-	{       6,     8839},
-	{       7,     7507},
+	{       0,     5473},
+	{       1,     7705},
+	{       2,     8629},
+	{       3,     9567},
+	{       4,     9091},
+	{       5,     7859},
+	{       6,     9713},
+	{       7,     8013},
 }
 
 var _1fs_dbEntryv = [...]dbEntry{
@@ -43,8 +43,8 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	1,
 			Tid:	0x0285cbac2eeeef00,
-			PrevDataRecPos:	367,
-			TxnPos:	444,
+			PrevDataRecPos:	371,
+			TxnPos:	450,
 		},
 	},
 	TxnHeader{
@@ -52,14 +52,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	0,
 			Tid:	0x0285cbac33a06d4c,
-			PrevDataRecPos:	230,
-			TxnPos:	589,
+			PrevDataRecPos:	234,
+			TxnPos:	601,
 		},
 		DataHeader{
 			Oid:	2,
 			Tid:	0x0285cbac33a06d4c,
 			PrevDataRecPos:	0,
-			TxnPos:	589,
+			TxnPos:	601,
 		},
 	},
 	TxnHeader{
@@ -67,14 +67,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	0,
 			Tid:	0x0285cbac3851eb99,
-			PrevDataRecPos:	657,
-			TxnPos:	892,
+			PrevDataRecPos:	673,
+			TxnPos:	910,
 		},
 		DataHeader{
 			Oid:	3,
 			Tid:	0x0285cbac3851eb99,
 			PrevDataRecPos:	0,
-			TxnPos:	892,
+			TxnPos:	910,
 		},
 	},
 	TxnHeader{
@@ -82,14 +82,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	0,
 			Tid:	0x0285cbac3d0369e6,
-			PrevDataRecPos:	960,
-			TxnPos:	1215,
+			PrevDataRecPos:	982,
+			TxnPos:	1239,
 		},
 		DataHeader{
 			Oid:	4,
 			Tid:	0x0285cbac3d0369e6,
 			PrevDataRecPos:	0,
-			TxnPos:	1215,
+			TxnPos:	1239,
 		},
 	},
 	TxnHeader{
@@ -97,8 +97,8 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	2,
 			Tid:	0x0285cbac41b4e833,
-			PrevDataRecPos:	815,
-			TxnPos:	1558,
+			PrevDataRecPos:	831,
+			TxnPos:	1588,
 		},
 	},
 	TxnHeader{
@@ -106,8 +106,8 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	1,
 			Tid:	0x0285cbac46666680,
-			PrevDataRecPos:	512,
-			TxnPos:	1703,
+			PrevDataRecPos:	522,
+			TxnPos:	1739,
 		},
 	},
 	TxnHeader{
@@ -115,8 +115,8 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	2,
 			Tid:	0x0285cbac4b17e4cc,
-			PrevDataRecPos:	1626,
-			TxnPos:	1848,
+			PrevDataRecPos:	1660,
+			TxnPos:	1890,
 		},
 	},
 	TxnHeader{
@@ -124,8 +124,8 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	4,
 			Tid:	0x0285cbac4fc96319,
-			PrevDataRecPos:	1481,
-			TxnPos:	1993,
+			PrevDataRecPos:	1509,
+			TxnPos:	2041,
 		},
 	},
 	TxnHeader{
@@ -133,14 +133,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	0,
 			Tid:	0x0285cbac547ae166,
-			PrevDataRecPos:	1283,
-			TxnPos:	2138,
+			PrevDataRecPos:	1311,
+			TxnPos:	2192,
 		},
 		DataHeader{
 			Oid:	5,
 			Tid:	0x0285cbac547ae166,
 			PrevDataRecPos:	0,
-			TxnPos:	2138,
+			TxnPos:	2192,
 		},
 	},
 	TxnHeader{
@@ -148,14 +148,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	0,
 			Tid:	0x0285cbac592c5fb3,
-			PrevDataRecPos:	2206,
-			TxnPos:	2501,
+			PrevDataRecPos:	2264,
+			TxnPos:	2561,
 		},
 		DataHeader{
 			Oid:	6,
 			Tid:	0x0285cbac592c5fb3,
 			PrevDataRecPos:	0,
-			TxnPos:	2501,
+			TxnPos:	2561,
 		},
 	},
 	TxnHeader{
@@ -163,8 +163,8 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	4,
 			Tid:	0x0285cbac5dddde00,
-			PrevDataRecPos:	2061,
-			TxnPos:	2887,
+			PrevDataRecPos:	2113,
+			TxnPos:	2953,
 		},
 	},
 	TxnHeader{
@@ -172,8 +172,8 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	3,
 			Tid:	0x0285cbac628f5c4c,
-			PrevDataRecPos:	1138,
-			TxnPos:	3035,
+			PrevDataRecPos:	1160,
+			TxnPos:	3107,
 		},
 	},
 	TxnHeader{
@@ -181,8 +181,8 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	1,
 			Tid:	0x0285cbac6740da99,
-			PrevDataRecPos:	1771,
-			TxnPos:	3183,
+			PrevDataRecPos:	1811,
+			TxnPos:	3261,
 		},
 	},
 	TxnHeader{
@@ -190,8 +190,8 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	5,
 			Tid:	0x0285cbac6bf258e6,
-			PrevDataRecPos:	2424,
-			TxnPos:	3331,
+			PrevDataRecPos:	2482,
+			TxnPos:	3415,
 		},
 	},
 	TxnHeader{
@@ -199,8 +199,8 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	3,
 			Tid:	0x0285cbac70a3d733,
-			PrevDataRecPos:	3105,
-			TxnPos:	3479,
+			PrevDataRecPos:	3181,
+			TxnPos:	3569,
 		},
 	},
 	TxnHeader{
@@ -208,8 +208,8 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	6,
 			Tid:	0x0285cbac75555580,
-			PrevDataRecPos:	2809,
-			TxnPos:	3627,
+			PrevDataRecPos:	2873,
+			TxnPos:	3723,
 		},
 	},
 	TxnHeader{
@@ -217,8 +217,8 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	6,
 			Tid:	0x0285cbac7a06d3cc,
-			PrevDataRecPos:	3697,
-			TxnPos:	3775,
+			PrevDataRecPos:	3797,
+			TxnPos:	3877,
 		},
 	},
 	TxnHeader{
@@ -226,8 +226,8 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	1,
 			Tid:	0x0285cbac7eb85219,
-			PrevDataRecPos:	3253,
-			TxnPos:	3923,
+			PrevDataRecPos:	3335,
+			TxnPos:	4031,
 		},
 	},
 	TxnHeader{
@@ -235,8 +235,8 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	6,
 			Tid:	0x0285cbac8369d066,
-			PrevDataRecPos:	3845,
-			TxnPos:	4071,
+			PrevDataRecPos:	3951,
+			TxnPos:	4185,
 		},
 	},
 	TxnHeader{
@@ -244,8 +244,8 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	2,
 			Tid:	0x0285cbac881b4eb3,
-			PrevDataRecPos:	1916,
-			TxnPos:	4219,
+			PrevDataRecPos:	1962,
+			TxnPos:	4339,
 		},
 	},
 	TxnHeader{
@@ -253,8 +253,8 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	1,
 			Tid:	0x0285cbac8ccccd00,
-			PrevDataRecPos:	3993,
-			TxnPos:	4367,
+			PrevDataRecPos:	4105,
+			TxnPos:	4493,
 		},
 	},
 	TxnHeader{
@@ -262,8 +262,8 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	6,
 			Tid:	0x0285cbac917e4b4c,
-			PrevDataRecPos:	4141,
-			TxnPos:	4515,
+			PrevDataRecPos:	4259,
+			TxnPos:	4647,
 		},
 	},
 	TxnHeader{
@@ -271,8 +271,8 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	5,
 			Tid:	0x0285cbac962fc999,
-			PrevDataRecPos:	3401,
-			TxnPos:	4663,
+			PrevDataRecPos:	3489,
+			TxnPos:	4801,
 		},
 	},
 	TxnHeader{
@@ -280,23 +280,17 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	4,
 			Tid:	0x0285cbac9ae147e6,
-			PrevDataRecPos:	2957,
-			TxnPos:	4811,
+			PrevDataRecPos:	3027,
+			TxnPos:	4955,
 		},
 	},
 	TxnHeader{
 		Tid:	0x0285cbac9f92c633,
 		DataHeader{
-			Oid:	0,
-			Tid:	0x0285cbac9f92c633,
-			PrevDataRecPos:	2571,
-			TxnPos:	4959,
-		},
-		DataHeader{
-			Oid:	7,
+			Oid:	5,
 			Tid:	0x0285cbac9f92c633,
-			PrevDataRecPos:	0,
-			TxnPos:	4959,
+			PrevDataRecPos:	4875,
+			TxnPos:	5109,
 		},
 	},
 	TxnHeader{
@@ -304,44 +298,50 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	4,
 			Tid:	0x0285cbaca4444480,
-			PrevDataRecPos:	4881,
-			TxnPos:	5365,
+			PrevDataRecPos:	5029,
+			TxnPos:	5255,
 		},
 	},
 	TxnHeader{
 		Tid:	0x0285cbaca8f5c2cc,
 		DataHeader{
-			Oid:	5,
+			Oid:	0,
 			Tid:	0x0285cbaca8f5c2cc,
-			PrevDataRecPos:	4733,
-			TxnPos:	5513,
+			PrevDataRecPos:	2635,
+			TxnPos:	5401,
+		},
+		DataHeader{
+			Oid:	7,
+			Tid:	0x0285cbaca8f5c2cc,
+			PrevDataRecPos:	0,
+			TxnPos:	5401,
 		},
 	},
 	TxnHeader{
 		Tid:	0x0285cbacada74119,
 		DataHeader{
-			Oid:	6,
+			Oid:	4,
 			Tid:	0x0285cbacada74119,
-			PrevDataRecPos:	4585,
-			TxnPos:	5661,
+			PrevDataRecPos:	5343,
+			TxnPos:	5810,
 		},
 	},
 	TxnHeader{
 		Tid:	0x0285cbacb258bf66,
 		DataHeader{
-			Oid:	6,
+			Oid:	5,
 			Tid:	0x0285cbacb258bf66,
-			PrevDataRecPos:	5731,
-			TxnPos:	5809,
+			PrevDataRecPos:	5197,
+			TxnPos:	5961,
 		},
 	},
 	TxnHeader{
 		Tid:	0x0285cbacb70a3db3,
 		DataHeader{
-			Oid:	4,
+			Oid:	6,
 			Tid:	0x0285cbacb70a3db3,
-			PrevDataRecPos:	5435,
-			TxnPos:	5957,
+			PrevDataRecPos:	4721,
+			TxnPos:	6112,
 		},
 	},
 	TxnHeader{
@@ -349,62 +349,62 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	6,
 			Tid:	0x0285cbacbbbbbc00,
-			PrevDataRecPos:	5879,
-			TxnPos:	6105,
+			PrevDataRecPos:	6184,
+			TxnPos:	6263,
 		},
 	},
 	TxnHeader{
 		Tid:	0x0285cbacc06d3a4c,
 		DataHeader{
-			Oid:	3,
+			Oid:	4,
 			Tid:	0x0285cbacc06d3a4c,
-			PrevDataRecPos:	3549,
-			TxnPos:	6253,
+			PrevDataRecPos:	5882,
+			TxnPos:	6414,
 		},
 	},
 	TxnHeader{
 		Tid:	0x0285cbacc51eb899,
 		DataHeader{
-			Oid:	1,
+			Oid:	6,
 			Tid:	0x0285cbacc51eb899,
-			PrevDataRecPos:	4437,
-			TxnPos:	6401,
+			PrevDataRecPos:	6335,
+			TxnPos:	6565,
 		},
 	},
 	TxnHeader{
 		Tid:	0x0285cbacc9d036e6,
 		DataHeader{
-			Oid:	4,
+			Oid:	3,
 			Tid:	0x0285cbacc9d036e6,
-			PrevDataRecPos:	6027,
-			TxnPos:	6549,
+			PrevDataRecPos:	3643,
+			TxnPos:	6716,
 		},
 	},
 	TxnHeader{
 		Tid:	0x0285cbacce81b533,
 		DataHeader{
-			Oid:	7,
+			Oid:	1,
 			Tid:	0x0285cbacce81b533,
-			PrevDataRecPos:	5287,
-			TxnPos:	6697,
+			PrevDataRecPos:	4567,
+			TxnPos:	6867,
 		},
 	},
 	TxnHeader{
 		Tid:	0x0285cbacd3333380,
 		DataHeader{
-			Oid:	1,
+			Oid:	4,
 			Tid:	0x0285cbacd3333380,
-			PrevDataRecPos:	6471,
-			TxnPos:	6845,
+			PrevDataRecPos:	6486,
+			TxnPos:	7018,
 		},
 	},
 	TxnHeader{
 		Tid:	0x0285cbacd7e4b1cc,
 		DataHeader{
-			Oid:	2,
+			Oid:	7,
 			Tid:	0x0285cbacd7e4b1cc,
-			PrevDataRecPos:	4289,
-			TxnPos:	6993,
+			PrevDataRecPos:	5731,
+			TxnPos:	7169,
 		},
 	},
 	TxnHeader{
@@ -412,89 +412,89 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	1,
 			Tid:	0x0285cbacdc963019,
-			PrevDataRecPos:	6915,
-			TxnPos:	7141,
+			PrevDataRecPos:	6939,
+			TxnPos:	7323,
 		},
 	},
 	TxnHeader{
 		Tid:	0x0285cbace147ae66,
 		DataHeader{
-			Oid:	5,
+			Oid:	2,
 			Tid:	0x0285cbace147ae66,
-			PrevDataRecPos:	5583,
-			TxnPos:	7289,
+			PrevDataRecPos:	4413,
+			TxnPos:	7477,
 		},
 	},
 	TxnHeader{
 		Tid:	0x0285cbace5f92cb3,
 		DataHeader{
-			Oid:	7,
+			Oid:	1,
 			Tid:	0x0285cbace5f92cb3,
-			PrevDataRecPos:	6767,
-			TxnPos:	7437,
+			PrevDataRecPos:	7397,
+			TxnPos:	7631,
 		},
 	},
 	TxnHeader{
 		Tid:	0x0285cbaceaaaab00,
 		DataHeader{
-			Oid:	4,
+			Oid:	5,
 			Tid:	0x0285cbaceaaaab00,
-			PrevDataRecPos:	6619,
-			TxnPos:	7585,
+			PrevDataRecPos:	6033,
+			TxnPos:	7785,
 		},
 	},
 	TxnHeader{
 		Tid:	0x0285cbacef5c294c,
 		DataHeader{
-			Oid:	6,
+			Oid:	7,
 			Tid:	0x0285cbacef5c294c,
-			PrevDataRecPos:	6175,
-			TxnPos:	7733,
+			PrevDataRecPos:	7243,
+			TxnPos:	7939,
 		},
 	},
 	TxnHeader{
 		Tid:	0x0285cbacf40da799,
 		DataHeader{
-			Oid:	3,
+			Oid:	4,
 			Tid:	0x0285cbacf40da799,
-			PrevDataRecPos:	6323,
-			TxnPos:	7881,
+			PrevDataRecPos:	7090,
+			TxnPos:	8093,
 		},
 	},
 	TxnHeader{
 		Tid:	0x0285cbacf8bf25e6,
 		DataHeader{
-			Oid:	2,
+			Oid:	6,
 			Tid:	0x0285cbacf8bf25e6,
-			PrevDataRecPos:	7063,
-			TxnPos:	8029,
+			PrevDataRecPos:	6637,
+			TxnPos:	8247,
 		},
 	},
 	TxnHeader{
 		Tid:	0x0285cbacfd70a433,
 		DataHeader{
-			Oid:	6,
+			Oid:	3,
 			Tid:	0x0285cbacfd70a433,
-			PrevDataRecPos:	7803,
-			TxnPos:	8177,
+			PrevDataRecPos:	6788,
+			TxnPos:	8401,
 		},
 	},
 	TxnHeader{
 		Tid:	0x0285cbad02222280,
 		DataHeader{
-			Oid:	3,
+			Oid:	2,
 			Tid:	0x0285cbad02222280,
-			PrevDataRecPos:	7951,
-			TxnPos:	8325,
+			PrevDataRecPos:	7551,
+			TxnPos:	8555,
 		},
 	},
 	TxnHeader{
 		Tid:	0x0285cbad06d3a0cc,
 		DataHeader{
-			Oid:	4,
+			Oid:	6,
 			Tid:	0x0285cbad06d3a0cc,
-			PrevDataRecPos:	7655,
-			TxnPos:	8473,
+			PrevDataRecPos:	8321,
+			TxnPos:	8709,
 		},
 	},
 	TxnHeader{
@@ -502,17 +502,53 @@ var _1fs_dbEntryv = [...]dbEntry{
 		DataHeader{
 			Oid:	3,
 			Tid:	0x0285cbad0b851f19,
-			PrevDataRecPos:	8395,
-			TxnPos:	8621,
+			PrevDataRecPos:	8475,
+			TxnPos:	8863,
 		},
 	},
 	TxnHeader{
 		Tid:	0x0285cbad10369d66,
 		DataHeader{
-			Oid:	6,
+			Oid:	4,
 			Tid:	0x0285cbad10369d66,
-			PrevDataRecPos:	8247,
-			TxnPos:	8769,
+			PrevDataRecPos:	8167,
+			TxnPos:	9017,
+		},
+	},
+	TxnHeader{
+		Tid:	0x0285cbad14e81bb3,
+		DataHeader{
+			Oid:	3,
+			Tid:	0x0285cbad14e81bb3,
+			PrevDataRecPos:	8937,
+			TxnPos:	9171,
+		},
+	},
+	TxnHeader{
+		Tid:	0x0285cbad19999a00,
+		DataHeader{
+			Oid:	6,
+			Tid:	0x0285cbad19999a00,
+			PrevDataRecPos:	8783,
+			TxnPos:	9325,
+		},
+	},
+	TxnHeader{
+		Tid:	0x0285cbad1e4b184c,
+		DataHeader{
+			Oid:	3,
+			Tid:	0x0285cbad1e4b184c,
+			PrevDataRecPos:	9245,
+			TxnPos:	9479,
+		},
+	},
+	TxnHeader{
+		Tid:	0x0285cbad22fc9699,
+		DataHeader{
+			Oid:	6,
+			Tid:	0x0285cbad22fc9699,
+			PrevDataRecPos:	9399,
+			TxnPos:	9625,
 		},
 	},
 }