Browse Source

Merge commit '57c3b12' into bfgminer

Conflicts:
	miner.c
Luke Dashjr 13 years ago
parent
commit
3467912c6b
1 changed files with 13 additions and 13 deletions
  1. 13 13
      miner.c

+ 13 - 13
miner.c

@@ -3223,7 +3223,7 @@ static inline bool from_existing_block(struct work *work)
 
 static int block_sort(struct block *blocka, struct block *blockb)
 {
-	return blockb->block_no - blocka->block_no;
+	return blocka->block_no - blockb->block_no;
 }
 
 static void test_work_current(struct work *work)
@@ -3245,30 +3245,30 @@ static void test_work_current(struct work *work)
 	 * new block and set the current block details to this one */
 	if (!block_exists(hexstr)) {
 		struct block *s = calloc(sizeof(struct block), 1);
+		int deleted_block = 0;
 
 		if (unlikely(!s))
 			quit (1, "test_work_current OOM");
 		strcpy(s->hash, hexstr);
 		s->block_no = new_blocks++;
 		wr_lock(&blk_lock);
-		/* Only keep the last 6 blocks in memory since work from blocks
-		 * before this is virtually impossible and we want to prevent
-		 * memory usage from continually rising */
-		if (HASH_COUNT(blocks) > 5) {
-			struct block *blocka, *blockb;
-			int count = 0;
+		/* Only keep the last hour's worth of blocks in memory since
+		 * work from blocks before this is virtually impossible and we
+		 * want to prevent memory usage from continually rising */
+		if (HASH_COUNT(blocks) > 6) {
+			struct block *oldblock;
 
 			HASH_SORT(blocks, block_sort);
-			HASH_ITER(hh, blocks, blocka, blockb) {
-				if (count++ < 6)
-					continue;
-				HASH_DEL(blocks, blocka);
-				free(blocka);
-			}
+			oldblock = blocks;
+			deleted_block = oldblock->block_no;
+			HASH_DEL(blocks, oldblock);
+			free(oldblock);
 		}
 		HASH_ADD_STR(blocks, hash, s);
 		wr_unlock(&blk_lock);
 		work->pool->block_id = block_id;
+		if (deleted_block)
+			applog(LOG_DEBUG, "Deleted block %d from database", deleted_block);
 		set_curblock(hexstr, work->data);
 		if (unlikely(new_blocks == 1))
 			goto out_free;