diff --git a/Makefile.am b/Makefile.am
index 539e27b..739b052 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -47,6 +47,9 @@
 test_mark_write_dirty_v2_SOURCES = test/mark_write_dirty_v2.c \
 				   $(TEST_MBOX_SRCS) $(TEST_MOCK_SRCS)
 
+test_write_flush_v2_SOURCES = test/write_flush_v2.c \
+			      $(TEST_MBOX_SRCS) $(TEST_MOCK_SRCS)
+
 check_PROGRAMS = test/sanity \
 		 test/copy_flash \
 		 test/erase_flash \
@@ -57,6 +60,7 @@
 		 test/create_read_window_v2 \
 		 test/create_write_window_v2 \
 		 test/close_window_v2 \
-		 test/mark_write_dirty_v2
+		 test/mark_write_dirty_v2 \
+		 test/write_flush_v2
 
 TESTS = $(check_PROGRAMS)
diff --git a/test/write_flush_v2.c b/test/write_flush_v2.c
new file mode 100644
index 0000000..63cc666
--- /dev/null
+++ b/test/write_flush_v2.c
@@ -0,0 +1,161 @@
+/*
+ * MBox Daemon Test File
+ *
+ * Copyright 2017 IBM
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <assert.h>
+#include <sys/mman.h>
+
+#include "mbox.h"
+#include "mboxd_msg.h"
+
+#include "test/mbox.h"
+#include "test/system.h"
+
+static const uint8_t get_info[] = {
+	0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const uint8_t create_write_window[] = {
+	0x06, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const uint8_t mark_write_dirty_middle[] = {
+	0x07, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const uint8_t write_flush[] = {
+	0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const uint8_t response[] = {
+	0x08, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x01
+};
+
+static const uint8_t mark_write_dirty_left[] = {
+	0x07, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const uint8_t mark_write_dirty_right[] = {
+	0x07, 0x05, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+static const uint8_t mark_write_dirty_all[] = {
+	0x07, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+const uint8_t start_data[] = { 0xaa, 0x55, 0xaa };
+const uint8_t flush_middle_data[] = { 0xaa, 0x00, 0xaa };
+const uint8_t flush_ends_data[] = { 0x55, 0x00, 0x55 };
+const uint8_t flush_all_data[] = { 0x01, 0x02, 0x03 };
+
+#define MEM_SIZE	sizeof(start_data)
+#define ERASE_SIZE	1
+#define N_WINDOWS	1
+#define WINDOW_SIZE	sizeof(start_data)
+
+int main(void)
+{
+	struct mbox_context *ctx;
+	uint8_t *map;
+	int rc;
+
+	system_set_reserved_size(MEM_SIZE);
+	system_set_mtd_sizes(MEM_SIZE, ERASE_SIZE);
+
+	ctx = mbox_create_test_context(N_WINDOWS, WINDOW_SIZE);
+	rc = mbox_set_mtd_data(ctx, start_data, sizeof(start_data));
+	assert(rc == 0);
+
+	rc = mbox_command_dispatch(ctx, get_info, sizeof(get_info));
+	assert(rc == 1);
+
+	rc = mbox_command_dispatch(ctx, create_write_window,
+			sizeof(create_write_window));
+	assert(rc == 1);
+
+	/* { clean, dirty, clean } */
+
+	((uint8_t *)ctx->mem)[1] = 0x00;
+
+	rc = mbox_command_dispatch(ctx, mark_write_dirty_middle,
+			sizeof(mark_write_dirty_middle));
+	assert(rc == 1);
+
+	rc = mbox_command_dispatch(ctx, write_flush, sizeof(write_flush));
+	assert(rc == 1);
+
+	rc = mbox_cmp(ctx, response, sizeof(response));
+	assert(rc == 0);
+
+	map = mmap(NULL, MEM_SIZE, PROT_READ, MAP_PRIVATE,
+			ctx->fds[MTD_FD].fd, 0);
+	assert(map != MAP_FAILED);
+
+	rc = memcmp(flush_middle_data, map, sizeof(flush_middle_data));
+	assert(rc == 0);
+
+	/* { dirty, clean, dirty } */
+
+	((uint8_t *)ctx->mem)[0] = 0x55;
+
+	rc = mbox_command_dispatch(ctx, mark_write_dirty_left,
+			sizeof(mark_write_dirty_left));
+	assert(rc == 1);
+
+	((uint8_t *)ctx->mem)[2] = 0x55;
+
+	rc = mbox_command_dispatch(ctx, mark_write_dirty_right,
+			sizeof(mark_write_dirty_right));
+	assert(rc == 1);
+
+	rc = mbox_command_dispatch(ctx, write_flush, sizeof(write_flush));
+	assert(rc == 1);
+
+	rc = mbox_cmp(ctx, response, sizeof(response));
+	assert(rc == 0);
+
+	rc = memcmp(flush_ends_data, map, sizeof(flush_ends_data));
+	assert(rc == 0);
+
+	/* { dirty, dirty, dirty } */
+
+	memcpy(ctx->mem, flush_all_data, sizeof(flush_all_data));
+
+	rc = mbox_command_dispatch(ctx, mark_write_dirty_all,
+			sizeof(mark_write_dirty_all));
+	assert(rc == 1);
+
+	rc = mbox_command_dispatch(ctx, write_flush, sizeof(write_flush));
+	assert(rc == 1);
+
+	rc = mbox_cmp(ctx, response, sizeof(response));
+	assert(rc == 0);
+
+	rc = memcmp(flush_all_data, map, sizeof(flush_all_data));
+	assert(rc == 0);
+
+	return rc;
+};
