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); } }
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); } }
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); } }