[Groonga-commit] groonga/groonga at 5afe3f8 [master] Add grn_io_flush()

Back to archive index

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 



More information about the Groonga-commit mailing list
Back to archive index