Commit 63899c6f authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Darrick J. Wong

iomap: add a page_done callback

This will be used by gfs2 to attach data to transactions for the journaled
data mode.  But the concept is generic enough that we might be able to
use it for other purposes like encryption/integrity post-processing in the
future.

Based on a patch from Andreas Gruenbacher.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
parent 19e0c58f
...@@ -201,6 +201,9 @@ iomap_write_end(struct inode *inode, loff_t pos, unsigned len, ...@@ -201,6 +201,9 @@ iomap_write_end(struct inode *inode, loff_t pos, unsigned len,
copied, page, NULL); copied, page, NULL);
} }
if (iomap->page_done)
iomap->page_done(inode, pos, copied, page, iomap);
if (ret < len) if (ret < len)
iomap_write_failed(inode, pos, len); iomap_write_failed(inode, pos, len);
return ret; return ret;
......
...@@ -9,6 +9,7 @@ struct fiemap_extent_info; ...@@ -9,6 +9,7 @@ struct fiemap_extent_info;
struct inode; struct inode;
struct iov_iter; struct iov_iter;
struct kiocb; struct kiocb;
struct page;
struct vm_area_struct; struct vm_area_struct;
struct vm_fault; struct vm_fault;
...@@ -56,6 +57,14 @@ struct iomap { ...@@ -56,6 +57,14 @@ struct iomap {
struct block_device *bdev; /* block device for I/O */ struct block_device *bdev; /* block device for I/O */
struct dax_device *dax_dev; /* dax_dev for dax operations */ struct dax_device *dax_dev; /* dax_dev for dax operations */
void *inline_data; void *inline_data;
/*
* 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);
}; };
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment