Signed-off-by: Jens Axboe <axboe@fb.com>
int refs;
sk_lock(sk_out);
int refs;
sk_lock(sk_out);
+ assert(sk_out->refs != 0);
refs = --sk_out->refs;
sk_unlock(sk_out);
if (!refs) {
sk_out_free(sk_out);
refs = --sk_out->refs;
sk_unlock(sk_out);
if (!refs) {
sk_out_free(sk_out);
+ pthread_setspecific(sk_out_key, NULL);
struct sk_out *sk_out;
sk_out = pthread_getspecific(sk_out_key);
struct sk_out *sk_out;
sk_out = pthread_getspecific(sk_out_key);
- if (!__sk_out_drop(sk_out))
- pthread_setspecific(sk_out_key, NULL);
}
static void __fio_init_net_cmd(struct fio_net_cmd *cmd, uint16_t opcode,
}
static void __fio_init_net_cmd(struct fio_net_cmd *cmd, uint16_t opcode,
+ sk_out_assign(sk_out);
+
fio_time_init();
set_genesis_time();
fio_time_init();
set_genesis_time();
ret = fio_backend(sk_out);
free_threads_shm();
ret = fio_backend(sk_out);
free_threads_shm();
struct cmd_reply *rep;
uint64_t tag;
void *data;
struct cmd_reply *rep;
uint64_t tag;
void *data;
dprint(FD_NET, "server: request verify state\n");
rep = smalloc(sizeof(*rep));
if (!rep) {
log_err("fio: smalloc pool too small\n");
dprint(FD_NET, "server: request verify state\n");
rep = smalloc(sizeof(*rep));
if (!rep) {
log_err("fio: smalloc pool too small\n");
}
__fio_mutex_init(&rep->lock, FIO_MUTEX_LOCKED);
}
__fio_mutex_init(&rep->lock, FIO_MUTEX_LOCKED);
*/
if (fio_mutex_down_timeout(&rep->lock, 10000)) {
log_err("fio: timed out waiting for reply\n");
*/
if (fio_mutex_down_timeout(&rep->lock, 10000)) {
log_err("fio: timed out waiting for reply\n");
goto fail;
}
if (rep->error) {
log_err("fio: failure on receiving state file %s: %s\n",
out.path, strerror(rep->error));
goto fail;
}
if (rep->error) {
log_err("fio: failure on receiving state file %s: %s\n",
out.path, strerror(rep->error));
fail:
*datap = NULL;
sfree(rep);
fio_net_queue_quit();
fail:
*datap = NULL;
sfree(rep);
fio_net_queue_quit();
* the header, and the thread_io_list checksum
*/
s = rep->data + sizeof(struct verify_state_hdr);
* the header, and the thread_io_list checksum
*/
s = rep->data + sizeof(struct verify_state_hdr);
- if (verify_state_hdr(rep->data, s, version))
+ if (verify_state_hdr(rep->data, s, version)) {
+ ret = EILSEQ;
/*
* Don't need the header from now, copy just the thread_io_list
*/
/*
* Don't need the header from now, copy just the thread_io_list
*/
rep->size -= sizeof(struct verify_state_hdr);
data = malloc(rep->size);
memcpy(data, s, rep->size);
rep->size -= sizeof(struct verify_state_hdr);
data = malloc(rep->size);
memcpy(data, s, rep->size);
sfree(rep->data);
__fio_mutex_remove(&rep->lock);
sfree(rep);
sfree(rep->data);
__fio_mutex_remove(&rep->lock);
sfree(rep);
}
static int fio_init_server_ip(void)
}
static int fio_init_server_ip(void)