Browse Source

Set quota to 1 when enabling a failover-only pool, and disable failover-only when setting quota

Luke Dashjr 11 years ago
parent
commit
9cbf7dc567
2 changed files with 13 additions and 6 deletions
  1. 2 3
      api.c
  2. 11 3
      miner.c

+ 2 - 3
api.c

@@ -2341,7 +2341,7 @@ static void switchpool(struct io_data *io_data, __maybe_unused SOCKETTYPE c, cha
 	}
 	}
 
 
 	pool = pools[id];
 	pool = pools[id];
-	pool->failover_only = false;
+	manual_enable_pool(pool);
 	cg_runlock(&control_lock);
 	cg_runlock(&control_lock);
 	switch_pools(pool);
 	switch_pools(pool);
 
 
@@ -2459,8 +2459,7 @@ static void enablepool(struct io_data *io_data, __maybe_unused SOCKETTYPE c, cha
 		return;
 		return;
 	}
 	}
 
 
-	pool->failover_only = false;
-	enable_pool(pool);
+	manual_enable_pool(pool);
 
 
 	message(io_data, MSG_ENAPOOL, id, NULL, isjson);
 	message(io_data, MSG_ENAPOOL, id, NULL, isjson);
 }
 }

+ 11 - 3
miner.c

@@ -4606,6 +4606,13 @@ void enable_pool(struct pool * const pool)
 	}
 	}
 }
 }
 
 
+void manual_enable_pool(struct pool * const pool)
+{
+	pool->failover_only = false;
+	BFGINIT(pool->quota, 1);
+	enable_pool(pool);
+}
+
 void disable_pool(struct pool * const pool, const enum pool_enable enable_status)
 void disable_pool(struct pool * const pool, const enum pool_enable enable_status)
 {
 {
 	if (pool->enabled == POOL_DISABLED)
 	if (pool->enabled == POOL_DISABLED)
@@ -7592,7 +7599,7 @@ retry:
 			goto retry;
 			goto retry;
 		}
 		}
 		pool = pools[selected];
 		pool = pools[selected];
-		pool->failover_only = false;
+		manual_enable_pool(pool);
 		switch_pools(pool);
 		switch_pools(pool);
 		goto updated;
 		goto updated;
 	} else if (!strncasecmp(&input, "d", 1)) {
 	} else if (!strncasecmp(&input, "d", 1)) {
@@ -7615,8 +7622,7 @@ retry:
 			goto retry;
 			goto retry;
 		}
 		}
 		pool = pools[selected];
 		pool = pools[selected];
-		pool->failover_only = false;
-		enable_pool(pool);
+		manual_enable_pool(pool);
 		goto updated;
 		goto updated;
 	} else if (!strncasecmp(&input, "c", 1)) {
 	} else if (!strncasecmp(&input, "c", 1)) {
 		for (i = 0; i <= TOP_STRATEGY; i++)
 		for (i = 0; i <= TOP_STRATEGY; i++)
@@ -7662,6 +7668,8 @@ retry:
 			wlogprint("Invalid negative quota\n");
 			wlogprint("Invalid negative quota\n");
 			goto retry;
 			goto retry;
 		}
 		}
+		if (selected > 0)
+			pool->failover_only = false;
 		pool->quota = selected;
 		pool->quota = selected;
 		adjust_quota_gcd();
 		adjust_quota_gcd();
 		goto updated;
 		goto updated;