--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6/drivers/md/dm-writecache.c 2018-03-08 14:23:31.059999000 +0100
@@ -0,0 +1,2417 @@
+#include <linux/device-mapper.h>
missing copyright statement, or for those new-fashioned SPDX statement.
+#define WRITEBACK_FUA true
no business having this around.
+#ifndef bio_set_dev
+#define bio_set_dev(bio, dev) ((bio)->bi_bdev = (dev))
+#endif
+#ifndef timer_setup
+#define timer_setup(t, c, f) setup_timer(t, c, (unsigned long)(t))
+#endif
no business in mainline.
+/*
+ * On X86, non-temporal stores are more efficient than cache flushing.
+ * On ARM64, cache flushing is more efficient.
+ */
+#if defined(CONFIG_X86_64)
+#define NT_STORE(dest, src) \
+do { \
+ typeof(src) val = (src); \
+ memcpy_flushcache(&(dest), &val, sizeof(src)); \
+} while (0)
+#define COMMIT_FLUSHED() wmb()
+#else
+#define NT_STORE(dest, src) WRITE_ONCE(dest, src)
+#define FLUSH_RANGE dax_flush
+#define COMMIT_FLUSHED() do { } while (0)
+#endif
Please use proper APIs for this, this has no business in a driver.
And that's it for now. This is clearly not submission ready, and I
should got back to my backlog of other things.