summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDarrick J. Wong <darrick.wong@oracle.com>2018-07-11 22:24:40 -0700
committerDarrick J. Wong <darrick.wong@oracle.com>2018-07-11 22:24:40 -0700
commitc2efdfc100af42cc04525ef0db74b176da59e1a4 (patch)
tree18dd5e3e42762b00d66c2c86b91ad08c91063b96 /include
parent1e4b044d22517cae7047c99038abb444423243ca (diff)
parent806a1477b10a153cd01ee7ccba8ca2492df3e0b2 (diff)
downloadlinux-c2efdfc100af42cc04525ef0db74b176da59e1a4.tar.bz2
Merge branch 'iomap-4.19-merge' into xfs-4.19-merge
Diffstat (limited to 'include')
-rw-r--r--include/linux/iomap.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/include/linux/iomap.h b/include/linux/iomap.h
index a044a824da85..5eb9ca8d7ce5 100644
--- a/include/linux/iomap.h
+++ b/include/linux/iomap.h
@@ -9,6 +9,7 @@ struct fiemap_extent_info;
struct inode;
struct iov_iter;
struct kiocb;
+struct page;
struct vm_area_struct;
struct vm_fault;
@@ -29,6 +30,7 @@ struct vm_fault;
*/
#define IOMAP_F_NEW 0x01 /* blocks have been newly allocated */
#define IOMAP_F_DIRTY 0x02 /* uncommitted metadata */
+#define IOMAP_F_BUFFER_HEAD 0x04 /* file system requires buffer heads */
/*
* Flags that only need to be reported for IOMAP_REPORT requests:
@@ -55,6 +57,16 @@ struct iomap {
u16 flags; /* flags for mapping */
struct block_device *bdev; /* block device for I/O */
struct dax_device *dax_dev; /* dax_dev for dax operations */
+ void *inline_data;
+ void *private; /* filesystem private */
+
+ /*
+ * Called when finished processing a page in the mapping returned in
+ * this iomap. At least for now this is only supported in the buffered
+ * write path.
+ */
+ void (*page_done)(struct inode *inode, loff_t pos, unsigned copied,
+ struct page *page, struct iomap *iomap);
};
/*
@@ -88,6 +100,10 @@ struct iomap_ops {
ssize_t iomap_file_buffered_write(struct kiocb *iocb, struct iov_iter *from,
const struct iomap_ops *ops);
+int iomap_readpage(struct page *page, const struct iomap_ops *ops);
+int iomap_readpages(struct address_space *mapping, struct list_head *pages,
+ unsigned nr_pages, const struct iomap_ops *ops);
+int iomap_set_page_dirty(struct page *page);
int iomap_file_dirty(struct inode *inode, loff_t pos, loff_t len,
const struct iomap_ops *ops);
int iomap_zero_range(struct inode *inode, loff_t pos, loff_t len,