Commit 6a0e3999 authored by David Howells's avatar David Howells
Browse files

afs: Make struct afs_read::remain 64-bit



Make struct afs_read::remain 64-bit so that it can handle huge transfers if
we ever request them or the server decides to give us a bit extra data (the
other fields there are already 64-bit).

Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Tested-by: default avatarMarc Dionne <marc.dionne@auristor.com>
parent 29f06985
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -321,7 +321,7 @@ static int afs_deliver_fs_fetch_data(struct afs_call *call)
	void *buffer;
	int ret;

	_enter("{%u,%zu/%u;%u/%llu}",
	_enter("{%u,%zu/%u;%llu/%llu}",
	       call->unmarshall, call->offset, call->count,
	       req->remain, req->actual_len);

@@ -379,7 +379,7 @@ static int afs_deliver_fs_fetch_data(struct afs_call *call)

		/* extract the returned data */
	case 3:
		_debug("extract data %u/%llu %zu/%u",
		_debug("extract data %llu/%llu %zu/%u",
		       req->remain, req->actual_len, call->offset, call->count);

		buffer = kmap(req->pages[req->index]);
@@ -405,9 +405,9 @@ static int afs_deliver_fs_fetch_data(struct afs_call *call)
		/* Discard any excess data the server gave us */
	begin_discard:
	case 4:
		size = min_t(size_t, sizeof(afs_discard_buffer), req->remain);
		size = min_t(loff_t, sizeof(afs_discard_buffer), req->remain);
		call->count = size;
		_debug("extract discard %u/%llu %zu/%u",
		_debug("extract discard %llu/%llu %zu/%u",
		       req->remain, req->actual_len, call->offset, call->count);

		call->offset = 0;
+1 −1
Original line number Diff line number Diff line
@@ -133,8 +133,8 @@ struct afs_read {
	loff_t			pos;		/* Where to start reading */
	loff_t			len;		/* How much we're asking for */
	loff_t			actual_len;	/* How much we're actually getting */
	loff_t			remain;		/* Amount remaining */
	atomic_t		usage;
	unsigned int		remain;		/* Amount remaining */
	unsigned int		index;		/* Which page we're reading into */
	unsigned int		nr_pages;
	void (*page_done)(struct afs_call *, struct afs_read *);