Kouhei Sutou
null+****@clear*****
Fri Jun 12 16:07:21 JST 2015
Kouhei Sutou 2015-06-12 16:07:21 +0900 (Fri, 12 Jun 2015) New Revision: 5afe3f8feafb4a0a8d407779b6d147091cde3945 https://github.com/groonga/groonga/commit/5afe3f8feafb4a0a8d407779b6d147091cde3945 Message: Add grn_io_flush() It flushes memory mapped data to disk. Modified files: lib/grn_io.h lib/io.c Modified: lib/grn_io.h (+2 -0) =================================================================== --- lib/grn_io.h 2015-06-12 15:11:33 +0900 (c0ea670) +++ lib/grn_io.h 2015-06-12 16:07:21 +0900 (6de63bd) @@ -355,6 +355,8 @@ void grn_io_init_from_env(void); uint32_t grn_io_expire(grn_ctx *ctx, grn_io *io, int count_thresh, uint32_t limit); uint32_t grn_expire(grn_ctx *ctx, int count_thresh, uint32_t limit); +grn_rc grn_io_flush(grn_ctx *ctx, grn_io *io); + /* encode/decode */ #define GRN_B_ENC(v,p) do {\ Modified: lib/io.c (+27 -0) =================================================================== --- lib/io.c 2015-06-12 15:11:33 +0900 (e4528df) +++ lib/io.c 2015-06-12 16:07:21 +0900 (a8a94ec) @@ -1300,6 +1300,33 @@ grn_io_is_locked(grn_io *io) return io ? *io->lock : 0; } +grn_rc +grn_io_flush(grn_ctx *ctx, grn_io *io) +{ + grn_rc rc = GRN_SUCCESS; + struct _grn_io_header *header; + uint32_t i; + uint32_t max_mapped_segment; + uint32_t segment_size; + + header = io->header; + max_mapped_segment = io->max_map_seg; + segment_size = header->segment_size; + + for (i = 0; i < max_mapped_segment; i++) { + grn_io_mapinfo *info = &(io->maps[i]); + if (!info) { + continue; + } + if (!grn_msync(ctx, info->map, segment_size)) { + rc = ctx->rc; + break; + } + } + + return rc; +} + /** mmap abstraction **/ static size_t mmap_size = 0; -------------- next part -------------- HTML����������������������������... Descargar