Store blocks hierarchically
authorGiorgos Verigakis <verigak@gmail.com>
Thu, 28 Jul 2011 15:16:22 +0000 (18:16 +0300)
committerGiorgos Verigakis <verigak@gmail.com>
Thu, 28 Jul 2011 15:16:22 +0000 (18:16 +0300)
Use a 3 dir deep hierarchy for storing blocks instead of the current flat one.

pithos/lib/hashfiler/blocker.py

index 6010009..3654306 100644 (file)
@@ -75,11 +75,17 @@ class Blocker(object):
         self.emptyhash = emptyhash
 
     def get_rear_block(self, blkhash, create=0):
-        name = join(self.blockpath, hexlify(blkhash))
+        filename = hexlify(blkhash)
+        dir = join(self.blockpath, filename[0:2], filename[2:4], filename[4:6])
+        if not exists(dir):
+            makedirs(dir)
+        name = join(dir, filename)
         return ContextFile(name, create)
 
     def check_rear_block(self, blkhash):
-        name = join(self.blockpath, hexlify(blkhash))
+        filename = hexlify(blkhash)
+        dir = join(self.blockpath, filename[0:2], filename[2:4], filename[4:6])
+        name = join(dir, filename)
         return exists(name)
 
     def block_hash(self, data):