diff --git a/main.c b/main.c index 7f1165ac..e31718b8 100644 --- a/main.c +++ b/main.c @@ -3088,7 +3088,7 @@ out: return ret; } -static bool submit_work_sync(struct thr_info *thr, struct work *work_in) +static bool submit_work_sync(struct thr_info *thr, const struct work *work_in) { struct workio_cmd *wc; @@ -3099,9 +3099,10 @@ static bool submit_work_sync(struct thr_info *thr, struct work *work_in) return false; } - wc->u.work = work_in; + wc->u.work = make_work(); wc->cmd = WC_SUBMIT_WORK; wc->thr = thr; + memcpy(wc->u.work, work_in, sizeof(*work_in)); if (opt_debug) applog(LOG_DEBUG, "Pushing submit work to work thread"); @@ -3120,7 +3121,7 @@ err_out: struct swa { struct thr_info *thr; - struct work *work_in; + const struct work *work_in; }; static void *swasync_thread(void *userdata) @@ -3145,8 +3146,7 @@ static bool submit_work_async(struct thr_info *thr, const struct work *work_in) } swa->thr = thr; - swa->work_in = make_work(); - memcpy(swa->work_in, work_in, sizeof(struct work)); + swa->work_in = work_in; if (unlikely(pthread_create(&sw_thread, NULL, swasync_thread, (void *)swa))) { applog(LOG_ERR, "Failed to create swasync_thread");