Example #1
0
void _flush_new_list(struct silopit *silopit, struct skipnode *x, size_t count)
{
	int mul ;
	int rem;
	int i;

	if (count <= SILOPIT_MAX_COUNT * 2) {
		memset(silopit->name, 0, FILE_NAME_SIZE);
		snprintf(silopit->name, FILE_NAME_SIZE, "%d.silopit", silopit->meta->size); 
		x = _write_mmap(silopit, x, count, 1);
	} else {
		mul = count / SILOPIT_MAX_COUNT;
		rem = count % SILOPIT_MAX_COUNT;

		for (i = 0; i < (mul - 1); i++) {
			memset(silopit->name, 0, FILE_NAME_SIZE);
			snprintf(silopit->name, FILE_NAME_SIZE, "%d.silopit", silopit->meta->size); 
			x = _write_mmap(silopit, x, SILOPIT_MAX_COUNT, 1);
		}

		memset(silopit->name, 0, FILE_NAME_SIZE);
		snprintf(silopit->name, FILE_NAME_SIZE, "%d.silopit", silopit->meta->size); 
		x = _write_mmap(silopit, x, SILOPIT_MAX_COUNT + rem, 1);
	}
}
Example #2
0
void _flush_merge_list(struct sst *sst, struct skipnode *x, size_t count, struct meta_node *meta)
{
	int mul;
	int rem;
	int lsn;
	int i;

	/* Less than 2x SST_MAX_COUNT, compact one index file */
	if(count <= SST_MAX_COUNT * 2) {
		if(meta) {
			lsn = meta->lsn;
			sst->mutexer.lsn = lsn;
			pthread_mutex_lock(&sst->mutexer.mutex);
			x = _write_mmap(sst, x, count, 0);
			pthread_mutex_unlock(&sst->mutexer.mutex);
			sst->mutexer.lsn = -1;
		} else {
			x = _write_mmap(sst, x, count, 0);
		}
	} else {
		if(meta) {
			lsn = meta->lsn;
			sst->mutexer.lsn = lsn;
			pthread_mutex_lock(&sst->mutexer.mutex);
			x = _write_mmap(sst, x, SST_MAX_COUNT, 0);
			pthread_mutex_unlock(&sst->mutexer.mutex);
			sst->mutexer.lsn = -1;
		} else {
			x = _write_mmap(sst, x, SST_MAX_COUNT, 0);
		}

		mul = (count - SST_MAX_COUNT*2) / SST_MAX_COUNT;
		rem = count % SST_MAX_COUNT;

		for(i = 0; i < mul; i++) {
			memset(sst->name, 0, FILE_NAME_SIZE);
			snprintf(sst->name, FILE_NAME_SIZE, "%d.sst", sst->meta->size);
			x = _write_mmap(sst, x, SST_MAX_COUNT, 1);
		}

		memset(sst->name, 0, FILE_NAME_SIZE);
		snprintf(sst->name, FILE_NAME_SIZE, "%d.sst", sst->meta->size);
		x = _write_mmap(sst, x, rem + SST_MAX_COUNT, 1);
	}
}
Example #3
0
void _flush_merge_list(struct silopit *silopit, struct skipnode *x, size_t count, struct meta_node *meta)
{
	int mul;
	int rem;
	int lsn;
	int i;

	if (count <= SILOPIT_MAX_COUNT * 2) {
		if (meta) {
			lsn = meta->lsn;
			silopit->mutexer.lsn = lsn;
			pthread_mutex_lock(&silopit->mutexer.mutex);
			x = _write_mmap(silopit, x, count, 0);
			pthread_mutex_unlock(&silopit->mutexer.mutex);
			silopit->mutexer.lsn = -1;
		} else 
			x = _write_mmap(silopit, x, count, 0);
	} else {
		if (meta) {
			lsn = meta->lsn;
			silopit->mutexer.lsn = lsn;
			pthread_mutex_lock(&silopit->mutexer.mutex);
			x = _write_mmap(silopit, x, SILOPIT_MAX_COUNT, 0);
			pthread_mutex_unlock(&silopit->mutexer.mutex);
			silopit->mutexer.lsn = -1;
		} else
			x = _write_mmap(silopit, x, SILOPIT_MAX_COUNT, 0);

		mul = (count - SILOPIT_MAX_COUNT * 2) / SILOPIT_MAX_COUNT;
		rem = count % SILOPIT_MAX_COUNT;

		for (i = 0; i < mul; i++) {
			memset(silopit->name, 0, FILE_NAME_SIZE);
			snprintf(silopit->name, FILE_NAME_SIZE, "%d.silopit", silopit->meta->size); 
			x = _write_mmap(silopit, x, SILOPIT_MAX_COUNT, 1);
		}

		memset(silopit->name, 0, FILE_NAME_SIZE);
		snprintf(silopit->name, FILE_NAME_SIZE, "%d.silopit", silopit->meta->size); 

		x = _write_mmap(silopit, x, rem + SILOPIT_MAX_COUNT, 1);
	}	
}