diff --git a/src/box/engine.c b/src/box/engine.c
index 8dc0df1d01d4e6396a18b2097aaef450910879d2..88ed928613ce3594a03ed7a9aded78152084e36b 100644
--- a/src/box/engine.c
+++ b/src/box/engine.c
@@ -129,11 +129,11 @@ engine_end_recovery(void)
 }
 
 int
-engine_begin_checkpoint(void)
+engine_begin_checkpoint(bool is_scheduled)
 {
 	struct engine *engine;
 	engine_foreach(engine) {
-		if (engine->vtab->begin_checkpoint(engine) < 0)
+		if (engine->vtab->begin_checkpoint(engine, is_scheduled) < 0)
 			return -1;
 	}
 	return 0;
@@ -356,9 +356,10 @@ generic_engine_end_recovery(struct engine *engine)
 }
 
 int
-generic_engine_begin_checkpoint(struct engine *engine)
+generic_engine_begin_checkpoint(struct engine *engine, bool is_scheduled)
 {
 	(void)engine;
+	(void)is_scheduled;
 	return 0;
 }
 
diff --git a/src/box/engine.h b/src/box/engine.h
index 07d7fac9b078ea49c1f3212a3b0af43e2c7d053c..c4da01e139f7b8af73012ea7255a65d39243cfcc 100644
--- a/src/box/engine.h
+++ b/src/box/engine.h
@@ -157,7 +157,7 @@ struct engine_vtab {
 	 * engine (snapshot is a memtx idea of a checkpoint).
 	 * Must not yield.
 	 */
-	int (*begin_checkpoint)(struct engine *);
+	int (*begin_checkpoint)(struct engine *, bool is_scheduled);
 	/**
 	 * Wait for a checkpoint to complete.
 	 */
@@ -354,7 +354,7 @@ void
 engine_complete_join(struct engine_join_ctx *ctx);
 
 int
-engine_begin_checkpoint(void);
+engine_begin_checkpoint(bool is_scheduled);
 
 /**
  * Create a checkpoint.
@@ -396,7 +396,7 @@ int generic_engine_begin_initial_recovery(struct engine *,
 					  const struct vclock *);
 int generic_engine_begin_final_recovery(struct engine *);
 int generic_engine_end_recovery(struct engine *);
-int generic_engine_begin_checkpoint(struct engine *);
+int generic_engine_begin_checkpoint(struct engine *, bool);
 int generic_engine_wait_checkpoint(struct engine *, const struct vclock *);
 void generic_engine_commit_checkpoint(struct engine *, const struct vclock *);
 void generic_engine_abort_checkpoint(struct engine *);
diff --git a/src/box/gc.c b/src/box/gc.c
index cbcdf7d12a6b2df07ca7f2786f1620f68b4f0adc..8e8ffea758bc905a259e52d33d1016f633ffaf40 100644
--- a/src/box/gc.c
+++ b/src/box/gc.c
@@ -377,7 +377,7 @@ gc_add_checkpoint(const struct vclock *vclock)
 }
 
 static int
-gc_do_checkpoint(void)
+gc_do_checkpoint(bool is_scheduled)
 {
 	int rc;
 	struct wal_checkpoint checkpoint;
@@ -389,7 +389,7 @@ gc_do_checkpoint(void)
 	 * Rotate WAL and call engine callbacks to create a checkpoint
 	 * on disk for each registered engine.
 	 */
-	rc = engine_begin_checkpoint();
+	rc = engine_begin_checkpoint(is_scheduled);
 	if (rc != 0)
 		goto out;
 	rc = wal_begin_checkpoint(&checkpoint);
@@ -436,7 +436,7 @@ gc_checkpoint(void)
 				gc.checkpoint_schedule.interval);
 	fiber_wakeup(gc.checkpoint_fiber);
 
-	if (gc_do_checkpoint() != 0)
+	if (gc_do_checkpoint(false) != 0)
 		return -1;
 
 	/*
@@ -506,7 +506,7 @@ gc_checkpoint_fiber_f(va_list ap)
 			 */
 			continue;
 		}
-		if (gc_do_checkpoint() != 0)
+		if (gc_do_checkpoint(true) != 0)
 			diag_log();
 	}
 	return 0;
diff --git a/src/box/memtx_engine.c b/src/box/memtx_engine.c
index 79dd4cfc8e18c27cf62e95f6e19250c5e13efd23..6ce8cacaa9229b0e8b58d42f747df388d676f01f 100644
--- a/src/box/memtx_engine.c
+++ b/src/box/memtx_engine.c
@@ -619,8 +619,9 @@ checkpoint_f(va_list ap)
 }
 
 static int
-memtx_engine_begin_checkpoint(struct engine *engine)
+memtx_engine_begin_checkpoint(struct engine *engine, bool is_scheduled)
 {
+	(void) is_scheduled;
 	struct memtx_engine *memtx = (struct memtx_engine *)engine;
 
 	assert(memtx->checkpoint == NULL);
diff --git a/src/box/vinyl.c b/src/box/vinyl.c
index 950a5508c45e64e3d308fb03416e632a678977f9..8bd47e1d690c1e72e86b56ae1fd240a78fd6ec41 100644
--- a/src/box/vinyl.c
+++ b/src/box/vinyl.c
@@ -2728,8 +2728,9 @@ vinyl_engine_set_snap_io_rate_limit(struct engine *engine, double limit)
 /* {{{ Checkpoint */
 
 static int
-vinyl_engine_begin_checkpoint(struct engine *engine)
+vinyl_engine_begin_checkpoint(struct engine *engine, bool is_scheduled)
 {
+	(void) is_scheduled;
 	struct vy_env *env = vy_env(engine);
 	assert(env->status == VINYL_ONLINE);
 	/*