diff --git a/mars_trans_logger.c b/mars_trans_logger.c index 0682c7e0..49a6f0d6 100644 --- a/mars_trans_logger.c +++ b/mars_trans_logger.c @@ -42,6 +42,9 @@ ///////////////////////// global tuning //////////////////////// +int trans_logger_completion_semantics = 1; +EXPORT_SYMBOL_GPL(trans_logger_completion_semantics); + int trans_logger_do_crc = #ifdef CONFIG_MARS_DEBUG true; @@ -1351,9 +1354,9 @@ void _complete(struct trans_logger_brick *brick, struct trans_logger_mref_aspect CHECK_PTR(orig_mref, err); if (orig_mref_a->is_completed || - (pre_io && - (brick->completion_semantics >= 2 || - (brick->completion_semantics >= 1 && !orig_mref->ref_skip_sync)))) { + (pre_io && + (trans_logger_completion_semantics >= 2 || + (trans_logger_completion_semantics >= 1 && !orig_mref->ref_skip_sync)))) { goto done; } diff --git a/mars_trans_logger.h b/mars_trans_logger.h index 38380183..869e07e6 100644 --- a/mars_trans_logger.h +++ b/mars_trans_logger.h @@ -18,6 +18,11 @@ ///////////////////////// global tuning //////////////////////// +/* 0 = early completion of all writes + * 1 = early completion of non-sync + * 2 = late completion + */ +extern int trans_logger_completion_semantics; extern int trans_logger_do_crc; extern int trans_logger_mem_usage; // in KB extern int trans_logger_max_depth; @@ -141,7 +146,6 @@ struct trans_logger_brick { int max_mref_size;// shorten mrefs to this maxlen int align_size; // alignment between requests int chunk_size; // must be at least 8K (better 64k) - int completion_semantics; // 0 = early completion of all writes, 1 = early completion of non-sync, 2 = late completion bool replay_mode; // mode of operation bool continuous_replay_mode; // mode of operation bool log_reads; // additionally log pre-images diff --git a/sy_old/mars_light.c b/sy_old/mars_light.c index d6a2ec75..7380ee65 100644 --- a/sy_old/mars_light.c +++ b/sy_old/mars_light.c @@ -138,8 +138,6 @@ EXPORT_SYMBOL_GPL(mars_mem_percent); #define CONF_TRANS_PRIO MARS_PRIO_HIGH #define CONF_TRANS_LOG_READS false //#define CONF_TRANS_LOG_READS true -//#define CONF_TRANS_COMPLETION_SEMANTICS 2 -#define CONF_TRANS_COMPLETION_SEMANTICS 0 #define CONF_ALL_BATCHLEN 1 #define CONF_ALL_PRIO MARS_PRIO_NORMAL @@ -196,7 +194,7 @@ int _set_trans_params(struct mars_brick *_brick, void *private) trans_brick->shadow_mem_limit = CONF_TRANS_SHADOW_LIMIT; trans_brick->log_reads = CONF_TRANS_LOG_READS; - trans_brick->completion_semantics = CONF_TRANS_COMPLETION_SEMANTICS; + #ifdef TRANS_FAKE trans_brick->debug_shortcut = true; #endif diff --git a/sy_old/mars_proc.c b/sy_old/mars_proc.c index 62cddec3..e25b6c41 100644 --- a/sy_old/mars_proc.c +++ b/sy_old/mars_proc.c @@ -198,6 +198,7 @@ ctl_table mars_table[] = { .mode = 0400, .proc_handler = &lamport_sysctl_handler, }, + INT_ENTRY("logger_completion_semantics", trans_logger_completion_semantics, 0600), INT_ENTRY("logger_do_crc", trans_logger_do_crc, 0600), INT_ENTRY("syslog_min_class", brick_say_syslog_min, 0600), INT_ENTRY("syslog_max_class", brick_say_syslog_max, 0600),