rename manualtest/leveldb to manualtest/dbstress
diff --git a/manualtest/leveldb/key.go b/manualtest/dbstress/key.go
similarity index 100%
rename from manualtest/leveldb/key.go
rename to manualtest/dbstress/key.go
diff --git a/manualtest/leveldb/main.go b/manualtest/dbstress/main.go
similarity index 95%
rename from manualtest/leveldb/main.go
rename to manualtest/dbstress/main.go
index de94e3b..564beb5 100644
--- a/manualtest/leveldb/main.go
+++ b/manualtest/dbstress/main.go
@@ -5,12 +5,6 @@
 	"encoding/binary"
 	"flag"
 	"fmt"
-	"github.com/syndtr/goleveldb/leveldb"
-	"github.com/syndtr/goleveldb/leveldb/errors"
-	"github.com/syndtr/goleveldb/leveldb/opt"
-	"github.com/syndtr/goleveldb/leveldb/storage"
-	"github.com/syndtr/goleveldb/leveldb/table"
-	"github.com/syndtr/goleveldb/leveldb/util"
 	"log"
 	mrand "math/rand"
 	"net/http"
@@ -24,6 +18,13 @@
 	"sync"
 	"sync/atomic"
 	"time"
+
+	"github.com/syndtr/goleveldb/leveldb"
+	"github.com/syndtr/goleveldb/leveldb/errors"
+	"github.com/syndtr/goleveldb/leveldb/opt"
+	"github.com/syndtr/goleveldb/leveldb/storage"
+	"github.com/syndtr/goleveldb/leveldb/table"
+	"github.com/syndtr/goleveldb/leveldb/util"
 )
 
 var (
@@ -33,6 +34,7 @@
 	numKeys                = arrayInt{100000, 1332, 531, 1234, 9553, 1024, 35743}
 	httpProf               = "127.0.0.1:5454"
 	enableBlockCache       = false
+	noCompression          = false
 
 	wg         = new(sync.WaitGroup)
 	done, fail uint32
@@ -74,8 +76,10 @@
 	flag.IntVar(&openFilesCacheCapacity, "openfilescachecap", openFilesCacheCapacity, "open files cache capacity")
 	flag.IntVar(&dataLen, "datalen", dataLen, "data length")
 	flag.Var(&numKeys, "numkeys", "num keys")
-	flag.StringVar(&httpProf, "httpprof", httpProf, "http prof listen addr")
+	flag.StringVar(&httpProf, "httpprof", httpProf, "http pprof listen addr")
 	flag.BoolVar(&enableBlockCache, "enableblockcache", enableBlockCache, "enable block cache")
+	flag.BoolVar(&noCompression, "nocompression", noCompression, "disable block compression")
+
 }
 
 func randomData(dst []byte, ns, prefix byte, i uint32) []byte {
@@ -312,7 +316,9 @@
 func main() {
 	flag.Parse()
 
+	log.Printf("Test DB stored at %q", dbPath)
 	if httpProf != "" {
+		log.Printf("HTTP pprof listening at %q", httpProf)
 		runtime.SetBlockProfileRate(1)
 		go func() {
 			if err := http.ListenAndServe(httpProf, nil); err != nil {
@@ -338,6 +344,7 @@
 		if err != nil && errors.IsCorrupted(err) {
 			cerr := err.(*errors.ErrCorrupted)
 			if cerr.File != nil && cerr.File.Type == storage.TypeTable {
+				log.Print("FATAL: corruption detected, scanning...")
 				if !scanTable(stor.GetFile(cerr.File.Num, cerr.File.Type), false) {
 					log.Printf("FATAL: unable to find corrupted key/value pair in table %v", cerr.File)
 				}
@@ -354,6 +361,9 @@
 		DisableBlockCache:      !enableBlockCache,
 		ErrorIfExist:           true,
 	}
+	if noCompression {
+		o.Compression = opt.NoCompression
+	}
 
 	db, err := leveldb.Open(stor, o)
 	if err != nil {
@@ -447,11 +457,13 @@
 					}
 					writeReq <- b
 					if err := <-writeAck; err != nil {
+						writeAckAck <- struct{}{}
 						fatalf(err, "[%02d] WRITER #%d db.Write: %v", ns, wi, err)
 					}
 
 					snap, err := db.GetSnapshot()
 					if err != nil {
+						writeAckAck <- struct{}{}
 						fatalf(err, "[%02d] WRITER #%d db.GetSnapshot: %v", ns, wi, err)
 					}
 
@@ -508,7 +520,7 @@
 							}
 							iter.Release()
 							if err := iter.Error(); err != nil {
-								fatalf(nil, "[%02d] READER #%d.%d K%d iter.Error: %v", ns, snapwi, ri, numKey, err)
+								fatalf(err, "[%02d] READER #%d.%d K%d iter.Error: %v", ns, snapwi, ri, numKey, err)
 							}
 							if n != numKey {
 								fatalf(nil, "[%02d] READER #%d.%d missing keys: want=%d got=%d", ns, snapwi, ri, numKey, n)
@@ -566,7 +578,7 @@
 					}
 					iter.Release()
 					if err := iter.Error(); err != nil {
-						fatalf(nil, "[%02d] SCANNER #%d.%d iter.Error: %v", ns, i, n, err)
+						fatalf(err, "[%02d] SCANNER #%d.%d iter.Error: %v", ns, i, n, err)
 					}
 
 					if n > 0 {
@@ -577,9 +589,11 @@
 						t := time.Now()
 						writeReq <- delB
 						if err := <-writeAck; err != nil {
+							writeAckAck <- struct{}{}
 							fatalf(err, "[%02d] SCANNER #%d db.Write: %v", ns, i, err)
+						} else {
+							writeAckAck <- struct{}{}
 						}
-						writeAckAck <- struct{}{}
 						log.Printf("[%02d] SCANNER #%d Deleted=%d Time=%v", ns, i, delB.Len(), time.Now().Sub(t))
 					}