1
0
mirror of https://github.com/GOSTSec/sgminer synced 2025-01-22 20:44:19 +00:00

Go back to cloning available work under staged lock.

This commit is contained in:
Con Kolivas 2012-12-24 10:26:56 +11:00
parent bb64799c84
commit df7370d066

View File

@ -2999,14 +2999,14 @@ static struct work *make_clone(struct work *work)
static void stage_work(struct work *work); static void stage_work(struct work *work);
/* Called with stgd_lock held */ static bool clone_available(void)
static bool __clone_available(void)
{ {
struct work *work, *tmp; struct work *work, *tmp;
bool cloned = false; bool cloned = false;
mutex_lock(stgd_lock);
if (!staged_rollable) if (!staged_rollable)
goto out; goto out_unlock;
HASH_ITER(hh, staged_work, work, tmp) { HASH_ITER(hh, staged_work, work, tmp) {
if (can_roll(work) && should_roll(work)) { if (can_roll(work) && should_roll(work)) {
@ -3022,7 +3022,9 @@ static bool __clone_available(void)
} }
} }
out: out_unlock:
mutex_unlock(stgd_lock);
return cloned; return cloned;
} }
@ -6864,7 +6866,7 @@ retry:
continue; continue;
} }
if (__clone_available()) { if (clone_available()) {
applog(LOG_DEBUG, "Cloned getwork work"); applog(LOG_DEBUG, "Cloned getwork work");
free_work(work); free_work(work);
continue; continue;