Pass IO size to batch_write() address space operation
Subsystems (3)
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 1/1 Pass IO size to batch_write() address space operation
Hi,
Here is the patch to pass size of the remaining IO to batch_write() interface. I would like to use it ext3/ext4 to allocate in chunks. Currently its passing only the size of the current buffer (in the vector entry).
Comments ? Flames ? Looks reasonable ?
Thanks,
Badari
Pass remaining size of this IO to batch_write(). This way filesystems could choose to allocate for the entire IO, instead of current buffer size.
I would like to use this for setting ext3 reservation window or allocating entire extent (ext4).
Signed-off-by Badari Pulavarty <[email protected]>
--- include/linux/fs.h | 2 ++ mm/filemap.c | 1 + 2 files changed, 3 insertions(+)
include/linux/fs.h +2 -0
@@ -356,6 +356,7 @@ struct writeback_control;* struct write_descriptor - set of write arguments * @pos: offset from the start of the file to write to * @count: number of bytes to write +* @iosize: remaining number of bytes in the IO * @buf: pointer to data to be written * @lru_pvec: multipage container to batch adding pages to LRU list * @cached_page: allocated but not used on previous call
@@ -366,6 +367,7 @@ struct writeback_control;struct write_descriptor {loff_t pos;size_t count; +size_t iosize;char __user *buf;struct page *cached_page;struct pagevec *lru_pvec;
mm/filemap.c +1 -0
@@ -2278,6 +2278,7 @@ generic_file_buffered_write(struct kiocb do { /* do not walk over current segment */ desc.buf = cur_iov->iov_base + iov_base; + desc.iosize = count; desc.count = min(count, cur_iov->iov_len - iov_base); if (desc.count > 0) status = (*batch_write)(file, &desc, &copied);