Esempio n. 1
0
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;
}
Esempio n. 2
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;
}
Esempio n. 3
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;
}