I looked over it and while some of the small files seem very tiny they are reasonably split. What rather annoys me is the page.c/read.c/write.c split. All these really belong mostly together, except maybe the super highlevel write code that then either calls into the buffer_head vs iomap_page based code. By keeping them together we can eliminate most of iomap_internal.h and once the writeback code moves also keep iomap_page private to that bigger read.c file. A few other minor notes: - I think iomap_sector() should move to linux/iomap.h as an inline helper. - iomap_actor_t / iomap_apply should probaby just move to linux/iomap.h as well, which would avoid needing the awkward subdir include in dax.c - some of the copyrights for the small files seem totally wrong. e.g. all the swapfile code was written by you, so it should not have my or rh copyright notices on it