afs: Honour wsize
Honour the wsize setting in struct netfs_io_request.
Signed-off-by: David Howells <dhowells@redhat.com>
diff --git a/fs/afs/write.c b/fs/afs/write.c
index 885dd02..03b4170 100644
--- a/fs/afs/write.c
+++ b/fs/afs/write.c
@@ -203,12 +203,21 @@ void afs_create_write_requests(struct netfs_io_request *wreq)
struct netfs_dirty_region *region;
list_for_each_entry(region, &wreq->regions, flush_link) {
- subreq = netfs_create_write_request(wreq, NETFS_UPLOAD_TO_SERVER,
- region->from,
- region->to - region->from,
- afs_upload_to_server_worker);
- if (subreq)
- netfs_queue_write_request(subreq);
+ unsigned long long from = region->from;
+ unsigned long long to = region->to;
+
+ while (from < to) {
+ unsigned long long len = region->to - region->from;
+
+ if (wreq->wsize && len > wreq->wsize)
+ len = wreq->wsize;
+ subreq = netfs_create_write_request(wreq, NETFS_UPLOAD_TO_SERVER,
+ from, len,
+ afs_upload_to_server_worker);
+ if (subreq)
+ netfs_queue_write_request(subreq);
+ from += len;
+ }
}
}