Merge tag 'drm-intel-next-fixes-2016-12-22' of git://anongit.freedesktop.org/git...
[linux-2.6-block.git] / include / linux / iomap.h
index f185156de74d8270bf931cda18c46f7dd918f294..a4c94b86401e160e870919f88d1957b91a659a85 100644 (file)
@@ -50,6 +50,7 @@ struct iomap {
 #define IOMAP_ZERO             (1 << 1) /* zeroing operation, may skip holes */
 #define IOMAP_REPORT           (1 << 2) /* report extent status, e.g. FIEMAP */
 #define IOMAP_FAULT            (1 << 3) /* mapping for page fault */
+#define IOMAP_DIRECT           (1 << 4) /* direct I/O */
 
 struct iomap_ops {
        /*
@@ -83,4 +84,14 @@ int iomap_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf,
 int iomap_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
                loff_t start, loff_t len, struct iomap_ops *ops);
 
+/*
+ * Flags for direct I/O ->end_io:
+ */
+#define IOMAP_DIO_UNWRITTEN    (1 << 0)        /* covers unwritten extent(s) */
+#define IOMAP_DIO_COW          (1 << 1)        /* covers COW extent(s) */
+typedef int (iomap_dio_end_io_t)(struct kiocb *iocb, ssize_t ret,
+               unsigned flags);
+ssize_t iomap_dio_rw(struct kiocb *iocb, struct iov_iter *iter,
+               struct iomap_ops *ops, iomap_dio_end_io_t end_io);
+
 #endif /* LINUX_IOMAP_H */