diff --git a/fs/Makefile b/fs/Makefile
index 8e61bdf9f330c7432d84e8e7fcfe960b50663c89..d60089fd689bc08dabc06e3b41a921e895acb6a6 100644
--- a/fs/Makefile
+++ b/fs/Makefile
@@ -52,7 +52,6 @@ obj-$(CONFIG_COREDUMP)		+= coredump.o
 obj-$(CONFIG_SYSCTL)		+= drop_caches.o
 
 obj-$(CONFIG_FHANDLE)		+= fhandle.o
-obj-$(CONFIG_FS_IOMAP)		+= iomap.o
 obj-y				+= iomap/
 
 obj-y				+= quota/
diff --git a/fs/iomap/Makefile b/fs/iomap/Makefile
index 19fd672cd4866b7fc725e089097a0e4c84e503da..2d165388d9524fe101f31913742b8f52a598de3f 100644
--- a/fs/iomap/Makefile
+++ b/fs/iomap/Makefile
@@ -6,6 +6,7 @@
 obj-$(CONFIG_FS_IOMAP)		+= iomap.o
 
 iomap-y				+= \
+					apply.o \
 					buffered-io.o \
 					direct-io.o \
 					fiemap.o \
diff --git a/fs/iomap.c b/fs/iomap/apply.c
similarity index 85%
rename from fs/iomap.c
rename to fs/iomap/apply.c
index 88a3144351a9f10ae5e083e078c23676e98d0cf1..9f956cf23867eb7a018784ec221ce41c264c6229 100644
--- a/fs/iomap.c
+++ b/fs/iomap/apply.c
@@ -7,23 +7,8 @@
 #include <linux/compiler.h>
 #include <linux/fs.h>
 #include <linux/iomap.h>
-#include <linux/uaccess.h>
-#include <linux/gfp.h>
-#include <linux/migrate.h>
-#include <linux/mm.h>
-#include <linux/mm_inline.h>
-#include <linux/swap.h>
-#include <linux/pagemap.h>
-#include <linux/pagevec.h>
-#include <linux/file.h>
-#include <linux/uio.h>
-#include <linux/backing-dev.h>
-#include <linux/buffer_head.h>
-#include <linux/task_io_accounting_ops.h>
-#include <linux/dax.h>
-#include <linux/sched/signal.h>
 
-#include "internal.h"
+#include "../internal.h"
 
 /*
  * Execute a iomap write on a segment of the mapping that spans a