opt: introducing Options.BlockCacheSize
diff --git a/leveldb/opt/options.go b/leveldb/opt/options.go
index dea86ff..0798b87 100644
--- a/leveldb/opt/options.go
+++ b/leveldb/opt/options.go
@@ -136,9 +136,14 @@
 	// BlockCache provides per-block caching for LevelDB. Specify NoCache to
 	// disable block caching.
 	//
-	// By default LevelDB will create LRU-cache with capacity of 8MiB.
+	// By default LevelDB will create LRU-cache with capacity of BlockCacheSize.
 	BlockCache cache.Cache
 
+	// BlockCacheSize defines the capacity of the default 'block cache'.
+	//
+	// The default value is 8MiB.
+	BlockCacheSize int
+
 	// BlockRestartInterval is the number of keys between restart points for
 	// delta encoding of keys.
 	//
@@ -322,6 +327,13 @@
 	return o.BlockCache
 }
 
+func (o *Options) GetBlockCacheSize() int {
+	if o == nil || o.BlockCacheSize <= 0 {
+		return DefaultBlockCacheSize
+	}
+	return o.BlockCacheSize
+}
+
 func (o *Options) GetBlockRestartInterval() int {
 	if o == nil || o.BlockRestartInterval <= 0 {
 		return DefaultBlockRestartInterval
diff --git a/leveldb/options.go b/leveldb/options.go
index 1c63e1a..3928cd1 100644
--- a/leveldb/options.go
+++ b/leveldb/options.go
@@ -35,7 +35,7 @@
 	// Block cache.
 	switch o.GetBlockCache() {
 	case nil:
-		no.BlockCache = cache.NewLRUCache(opt.DefaultBlockCacheSize)
+		no.BlockCache = cache.NewLRUCache(o.GetBlockCacheSize())
 	case opt.NoCache:
 		no.BlockCache = nil
 	}