static int notify_complete(struct dnet_net_state *state, struct dnet_cmd *cmd, void *priv) { struct dnet_io_notification *io; char str[64]; struct tm tm; struct timeval tv; FILE *stream = priv; if (is_trans_destroyed(state, cmd)) return 0; if (cmd->size != sizeof(struct dnet_io_notification)) return 0; gettimeofday(&tv, NULL); localtime_r((time_t *)&tv.tv_sec, &tm); strftime(str, sizeof(str), "%F %R:%S", &tm); fprintf(stream, "%s.%06lu : ", str, (unsigned long)tv.tv_usec); io = (struct dnet_io_notification *)(cmd + 1); dnet_convert_io_notification(io); fprintf(stream, "%s: client: %s, size: %llu, offset: %llu, flags: %x\n", dnet_dump_id_str(io->io.id), dnet_server_convert_dnet_addr(&io->addr.addr), (unsigned long long)io->io.size, (unsigned long long)io->io.offset, io->io.flags); fflush(stream); return 0; }
static int stat_complete(struct dnet_net_state *state, struct dnet_cmd *cmd, void *priv) { float la[3]; struct dnet_stat *st; char str[64]; struct tm tm; struct timeval tv; FILE *stream = priv; if (is_trans_destroyed(state, cmd)) return 0; if (cmd->size != sizeof(struct dnet_stat)) return cmd->status; if (!stat_mem && !stat_la && !stat_fs) return 0; gettimeofday(&tv, NULL); localtime_r((time_t *)&tv.tv_sec, &tm); strftime(str, sizeof(str), "%F %R:%S", &tm); fprintf(stream, "%s.%06lu :", str, (unsigned long)tv.tv_usec); st = (struct dnet_stat *)(cmd + 1); dnet_convert_stat(st); la[0] = (float)st->la[0] / 100.0; la[1] = (float)st->la[1] / 100.0; la[2] = (float)st->la[2] / 100.0; fprintf(stream, "%s: %s: ", dnet_dump_id(&cmd->id), dnet_state_dump_addr(state)); if (stat_la) fprintf(stream, "la: %3.2f %3.2f %3.2f ", la[0], la[1], la[2]); if (stat_mem) fprintf(stream, "mem: total: %8llu kB, free: %8llu kB, cache: %8llu kB, buffers: %8llu, active: %8llu, inactive: %8llu ", (unsigned long long)st->vm_total, (unsigned long long)st->vm_free, (unsigned long long)st->vm_cached, (unsigned long long)st->vm_buffers, (unsigned long long)st->vm_active, (unsigned long long)st->vm_inactive); if (stat_fs) fprintf(stream, "fs: total: %8llu mB, avail: %8llu/%8llu mB ", (unsigned long long)(st->frsize * st->blocks / 1024 / 1024), (unsigned long long)(st->bavail * st->bsize / 1024 / 1024), (unsigned long long)(st->bfree * st->bsize / 1024 / 1024)); fprintf(stream, "\n"); fflush(stream); return 0; }
static int dnet_bulk_check_complete(struct dnet_net_state *state, struct dnet_cmd *cmd, void *priv) { struct dnet_bulk_check_priv *p = priv; int err = 0, i; if (is_trans_destroyed(state, cmd)) { dnet_wakeup(p->w, p->w->cond++); dnet_wait_put(p->w); dnet_check_temp_db_put(p->db); if (atomic_dec_and_test(&p->refcnt)) { free(p->groups); free(p); } return 0; } /* Empty reply that prevents timeout */ if (cmd->size == 0) { return 0; } if (!(cmd->size % sizeof(struct dnet_bulk_id))) { struct dnet_bulk_id *ids = (struct dnet_bulk_id *)(cmd + 1); int num = cmd->size / sizeof(struct dnet_bulk_id); dnet_log(state->n, DNET_LOG_DEBUG, "BULK: received %d entries\n", num); //dnet_db_ptr_get(&state->n->temp_meta); //ret = kcdbbegintran(state->n->temp_meta.db, 0); //if (!ret) { // err = -kcdbecode(state->n->temp_meta.db); // dnet_log_raw(state->n, DNET_LOG_ERROR, "BULK: DB: failed to start temp_meta transaction, err: %d: %s.\n", // err, kcecodename(-err)); // return err; //} for (i = 0; i < num && !state->n->need_exit; ++i) { err = dnet_bulk_check_complete_single(state, &ids[i], cmd->id.group_id, p); } //kcdbendtran(state->n->temp_meta.db, 1); //dnet_db_ptr_put(state->n, &state->n->temp_meta); if (err) { dnet_log(state->n, DNET_LOG_ERROR, "BULK: couldn't update meta CHECK_STATUS\n"); } } else { dnet_log(state->n, DNET_LOG_ERROR, "BULK: received corrupted data, size = %llu, sizeof(dnet_bulk_id) = %zu\n", (unsigned long long)cmd->size, sizeof(struct dnet_bulk_id)); } p->w->status = cmd->status; return err; }