Unverified Commit 36015782 authored by David Howells's avatar David Howells Committed by Christian Brauner
Browse files

netfs: Drop the error arg from netfs_read_subreq_terminated()



Drop the error argument from netfs_read_subreq_terminated() in favour of
passing the value in subreq->error.

Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Link: https://lore.kernel.org/r/20241216204124.3752367-9-dhowells@redhat.com


cc: Jeff Layton <jlayton@kernel.org>
cc: netfs@lists.linux.dev
cc: linux-fsdevel@vger.kernel.org
Signed-off-by: default avatarChristian Brauner <brauner@kernel.org>
parent 751e213f
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -87,7 +87,8 @@ static void v9fs_issue_read(struct netfs_io_subrequest *subreq)
		__set_bit(NETFS_SREQ_MADE_PROGRESS, &subreq->flags);
	}

	netfs_read_subreq_terminated(subreq, err, false);
	subreq->error = err;
	netfs_read_subreq_terminated(subreq, false);
}

/**
+10 −5
Original line number Diff line number Diff line
@@ -246,7 +246,8 @@ static void afs_fetch_data_notify(struct afs_operation *op)
		subreq->rreq->i_size = req->file_size;
		if (req->pos + req->actual_len >= req->file_size)
			__set_bit(NETFS_SREQ_HIT_EOF, &subreq->flags);
		netfs_read_subreq_terminated(subreq, error, false);
		subreq->error = error;
		netfs_read_subreq_terminated(subreq, false);
		req->subreq = NULL;
	} else if (req->done) {
		req->done(req);
@@ -301,8 +302,10 @@ int afs_fetch_data(struct afs_vnode *vnode, struct afs_read *req)

	op = afs_alloc_operation(req->key, vnode->volume);
	if (IS_ERR(op)) {
		if (req->subreq)
			netfs_read_subreq_terminated(req->subreq, PTR_ERR(op), false);
		if (req->subreq) {
			req->subreq->error = PTR_ERR(op);
			netfs_read_subreq_terminated(req->subreq, false);
		}
		return PTR_ERR(op);
	}

@@ -320,8 +323,10 @@ static void afs_read_worker(struct work_struct *work)
	struct afs_read *fsreq;

	fsreq = afs_alloc_read(GFP_NOFS);
	if (!fsreq)
		return netfs_read_subreq_terminated(subreq, -ENOMEM, false);
	if (!fsreq) {
		subreq->error = -ENOMEM;
		return netfs_read_subreq_terminated(subreq, false);
	}

	fsreq->subreq	= subreq;
	fsreq->pos	= subreq->start + subreq->transferred;
+9 −4
Original line number Diff line number Diff line
@@ -253,8 +253,9 @@ static void finish_netfs_read(struct ceph_osd_request *req)
		subreq->transferred = err;
		err = 0;
	}
	subreq->error = err;
	trace_netfs_sreq(subreq, netfs_sreq_trace_io_progress);
	netfs_read_subreq_terminated(subreq, err, false);
	netfs_read_subreq_terminated(subreq, false);
	iput(req->r_inode);
	ceph_dec_osd_stopping_blocker(fsc->mdsc);
}
@@ -314,7 +315,9 @@ static bool ceph_netfs_issue_op_inline(struct netfs_io_subrequest *subreq)

	ceph_mdsc_put_request(req);
out:
	netfs_read_subreq_terminated(subreq, err, false);
	subreq->error = err;
	trace_netfs_sreq(subreq, netfs_sreq_trace_io_progress);
	netfs_read_subreq_terminated(subreq, false);
	return true;
}

@@ -426,8 +429,10 @@ static void ceph_netfs_issue_read(struct netfs_io_subrequest *subreq)
	ceph_osdc_start_request(req->r_osdc, req);
out:
	ceph_osdc_put_request(req);
	if (err)
		netfs_read_subreq_terminated(subreq, err, false);
	if (err) {
		subreq->error = err;
		netfs_read_subreq_terminated(subreq, false);
	}
	doutc(cl, "%llx.%llx result %d\n", ceph_vinop(inode), err);
}

+8 −8
Original line number Diff line number Diff line
@@ -148,14 +148,13 @@ static void netfs_cache_read_terminated(void *priv, ssize_t transferred_or_error
{
	struct netfs_io_subrequest *subreq = priv;

	if (transferred_or_error < 0) {
		netfs_read_subreq_terminated(subreq, transferred_or_error, was_async);
		return;
	}

	if (transferred_or_error > 0)
	if (transferred_or_error > 0) {
		subreq->transferred += transferred_or_error;
	netfs_read_subreq_terminated(subreq, 0, was_async);
		subreq->error = 0;
	} else {
		subreq->error = transferred_or_error;
	}
	netfs_read_subreq_terminated(subreq, was_async);
}

/*
@@ -255,7 +254,8 @@ static void netfs_read_to_pagecache(struct netfs_io_request *rreq)
			if (slice < 0)
				goto prep_iter_failed;
			__set_bit(NETFS_SREQ_CLEAR_TAIL, &subreq->flags);
			netfs_read_subreq_terminated(subreq, 0, false);
			subreq->error = 0;
			netfs_read_subreq_terminated(subreq, false);
			goto done;
		}

+14 −1
Original line number Diff line number Diff line
@@ -191,7 +191,20 @@ struct netfs_io_subrequest *netfs_alloc_subrequest(struct netfs_io_request *rreq
	}

	memset(subreq, 0, kmem_cache_size(cache));

	switch (rreq->origin) {
	case NETFS_READAHEAD:
	case NETFS_READPAGE:
	case NETFS_READ_GAPS:
	case NETFS_READ_FOR_WRITE:
	case NETFS_DIO_READ:
		INIT_WORK(&subreq->work, netfs_read_subreq_termination_worker);
		break;
	default:
		INIT_WORK(&subreq->work, NULL);
		break;
	}

	INIT_LIST_HEAD(&subreq->rreq_link);
	refcount_set(&subreq->ref, 2);
	subreq->rreq = rreq;
Loading