Ejemplo n.º 1
0
Archivo: db.c Proyecto: yqingp/testness
struct env *env_open(const char *home, uint32_t flags) {
    LOG;
	struct env *e;

	e = xcalloc(1, sizeof(*e));
	e->flags = flags;

	/* tree */
	e->inner_node_fanout = 16;
	e->inner_default_node_size = 4 << 20;		/* 4MB */
	e->leaf_default_node_size = 4 << 20;		/* 4MB */
	e->leaf_default_basement_size = 128 << 10;	/* 128KB */

	/* cache */
	e->cache_limits_bytes = 1024 << 20;
	e->cache_high_watermark = 80;		/* 80% */
	e->cache_flush_period_ms = 100;		/* 0.1s */
	e->cache_checkpoint_period_ms = 600000;	/* 60s */

	/* IO */
	e->use_directio = 1;
	e->redo_path = "./dbbench";
	e->enable_redo_log = 1;
	if (!home)
		home = ".";

	e->dir = xcalloc(1, strlen(home) + 1);
	xmemcpy(e->dir, (void*)home, strlen(home));
	ness_check_dir(e->dir);

	/* compress */
	e->compress_method = NESS_SNAPPY_METHOD;

	/* callback */
	e->bt_compare_func = bt_compare_func_builtin;

	/* internal */
	e->cache = cache_new(e);
    /* e->cache->cf_first->hdr->blocksize */
	nassert(e->cache);

	e->txnmgr = txnmgr_new();
	nassert(e->txnmgr);

	e->status = status_new();
	nassert(e->status);

	return e;
}
Ejemplo n.º 2
0
struct logw *logw_open(struct options *opts, uint64_t logsn) {
	int flag;
	mode_t mode;
	struct logw *lgw;
	char name[FILE_NAME_MAXLEN];

	mode = S_IRWXU | S_IRWXG | S_IRWXO;
	flag = O_CREAT | O_WRONLY | O_BINARY;

	ness_check_dir(opts->redo_path);
	memset(name, 0, FILE_NAME_MAXLEN);
	snprintf(name, FILE_NAME_MAXLEN, "%s/ness.redo.%" PRIu64,
	         opts->redo_path, logsn);
	lgw = xcalloc(1, sizeof(*lgw));
	lgw->base_size = (1 << 20);
	lgw->base = xcalloc(lgw->base_size, sizeof(char*));
	lgw->fd = ness_os_open(name, flag, mode);
	nassert(lgw->fd > -1);

	return lgw;
}