Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5c278228 authored by Al Viro's avatar Al Viro Committed by Mike Marshall
Browse files

orangefs: explicitly pass the size to pvfs_bufmap_copy_to_iovec()

parent 54804949
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -89,7 +89,8 @@ static int postcopy_buffers(struct pvfs2_bufmap *bufmap,
		iov_iter_init(&iter, READ, vec, nr_segs, total_size);
		ret = pvfs_bufmap_copy_to_iovec(bufmap,
						&iter,
						buffer_index);
						buffer_index,
						total_size);
		if (ret < 0)
			gossip_err("%s: Failed to copy-out buffers. Please make sure that the pvfs2-client is running (%ld)\n",
				__func__,
+15 −14
Original line number Diff line number Diff line
@@ -542,25 +542,26 @@ int pvfs_bufmap_copy_from_iovec(struct pvfs2_bufmap *bufmap,
 */
int pvfs_bufmap_copy_to_iovec(struct pvfs2_bufmap *bufmap,
				    struct iov_iter *iter,
				    int buffer_index)
				    int buffer_index,
				    size_t size)
{
	struct pvfs_bufmap_desc *from;
	struct page *page;
	struct pvfs_bufmap_desc *from = &bufmap->desc_array[buffer_index];
	int i;
	size_t written;

	gossip_debug(GOSSIP_BUFMAP_DEBUG,
		     "%s: buffer_index:%d: iov_iter_count(iter):%lu:\n",
		     __func__, buffer_index, iov_iter_count(iter));
		     "%s: buffer_index:%d: size:%zu:\n",
		     __func__, buffer_index, size);

	from = &bufmap->desc_array[buffer_index];

	for (i = 0; iov_iter_count(iter); i++) {
		page = from->page_array[i];
		written = copy_page_to_iter(page, 0, PAGE_SIZE, iter);
		if ((written == 0) && (iov_iter_count(iter)))
			break;
	for (i = 0; size; i++) {
		struct page *page = from->page_array[i];
		size_t n = size;
		if (n > PAGE_SIZE)
			n = PAGE_SIZE;
		n = copy_page_to_iter(page, 0, n, iter);
		if (!n)
			return -EFAULT;
		size -= n;
	}

	return iov_iter_count(iter) ? -EFAULT : 0;
	return 0;
}
+2 −1
Original line number Diff line number Diff line
@@ -49,7 +49,8 @@ int pvfs_bufmap_copy_from_iovec(struct pvfs2_bufmap *bufmap,

int pvfs_bufmap_copy_to_iovec(struct pvfs2_bufmap *bufmap,
			      struct iov_iter *iter,
			      int buffer_index);
			      int buffer_index,
			      size_t size);

size_t pvfs_bufmap_copy_to_user_task_iovec(struct task_struct *tsk,
					   struct iovec *iovec,