Module Nn_commit_monitor


module Nn_commit_monitor: sig .. end
This monitor ensures that only certain commits can be done in parallel. The model is as follows: The criterion whether two commits c1 and c2 can run in parallel: The updates done by inode_upd_time are ignored here - this is only used for updating the mtime of directories if a file is added or deleted. (Or better: The DB will implicitly serialize these updates.)

module I64Set: Set.S  with type elt = int64
module BRowSet: Set.S  with type elt = int * int64

type update_characteristics = {
   upd_ds : bool; (*whether datastores are updated*)
   upd_inodes : I64Set.t; (*the modified inodes*)
   upd_blocks : BRowSet.t; (*the modified block rows*)
}
type commit_monitor 
The process-local part of the monitor
type commit_monitor_shm 
The shm part of the monitor
val create_commit_monitor_heap : Netmcore.res_id -> commit_monitor_shm Netmcore_ref.sref
val create_commit_monitor : Netmcore.res_id ->
commit_monitor_shm Netmcore_ref.sref ->
Unixqueue.event_system -> commit_monitor
val monitor_e : commit_monitor ->
update_characteristics ->
(int -> 'a Uq_engines.engine) -> 'a Uq_engines.engine
monitor_e cm uc f: Tries to get a slot for doing a commit described by uc. When the commit can be done, f commit_id is called, and the result is returned.
val get_update_characteristics : Nn_db.modification Queue.t -> update_characteristics
Extract uc from a queue of DB updates