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

Commit 8e63b6a8 authored by Trond Myklebust's avatar Trond Myklebust
Browse files

NFSv4.1: Move the RPC timestamp out of the slot.



Shave a few bytes off the slot table size by moving the RPC timestamp
into the sequence results.

Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent e8794440
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -419,7 +419,6 @@ static int nfs41_sequence_done(struct rpc_task *task, struct nfs4_sequence_res *
{
	struct nfs4_session *session;
	struct nfs4_slot *slot;
	unsigned long timestamp;
	struct nfs_client *clp;
	int ret = 1;

@@ -444,9 +443,8 @@ static int nfs41_sequence_done(struct rpc_task *task, struct nfs4_sequence_res *
	case 0:
		/* Update the slot's sequence and clientid lease timer */
		++slot->seq_nr;
		timestamp = slot->renewal_time;
		clp = session->clp;
		do_renew_lease(clp, timestamp);
		do_renew_lease(clp, res->sr_timestamp);
		/* Check sequence flags */
		if (res->sr_status_flags != 0)
			nfs4_schedule_lease_recovery(clp);
@@ -473,10 +471,11 @@ static int nfs41_sequence_done(struct rpc_task *task, struct nfs4_sequence_res *
		 * Could this slot have been previously retired?
		 * If so, then the server may be expecting seq_nr = 1!
		 */
		if (slot->seq_nr == 1)
			break;
		if (slot->seq_nr != 1) {
			slot->seq_nr = 1;
			goto retry_nowait;
		}
		break;
	case -NFS4ERR_SEQ_FALSE_RETRY:
		++slot->seq_nr;
		goto retry_nowait;
@@ -567,6 +566,7 @@ int nfs41_setup_sequence(struct nfs4_session *session,
			slot->slot_nr, slot->seq_nr);

	res->sr_slot = slot;
	res->sr_timestamp = jiffies;
	res->sr_status_flags = 0;
	/*
	 * sr_status is only set in decode_sequence, and so will remain
+1 −2
Original line number Diff line number Diff line
@@ -143,7 +143,6 @@ struct nfs4_slot *nfs4_alloc_slot(struct nfs4_slot_table *tbl)
	if (slotid > tbl->highest_used_slotid ||
			tbl->highest_used_slotid == NFS4_NO_SLOT)
		tbl->highest_used_slotid = slotid;
	ret->renewal_time = jiffies;
	ret->generation = tbl->generation;

out:
@@ -228,9 +227,9 @@ static bool nfs41_assign_slot(struct rpc_task *task, void *pslot)

	if (nfs4_session_draining(tbl->session) && !args->sa_privileged)
		return false;
	slot->renewal_time = jiffies;
	slot->generation = tbl->generation;
	args->sa_slot = slot;
	res->sr_timestamp = jiffies;
	res->sr_slot = slot;
	res->sr_status_flags = 0;
	res->sr_status = 1;
+0 −1
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ struct nfs4_slot {
	struct nfs4_slot_table	*table;
	struct nfs4_slot	*next;
	unsigned long		generation;
	unsigned long		renewal_time;
	u32			slot_nr;
	u32		 	seq_nr;
};
+1 −0
Original line number Diff line number Diff line
@@ -194,6 +194,7 @@ struct nfs4_sequence_args {

struct nfs4_sequence_res {
	struct nfs4_slot	*sr_slot;	/* slot used to send request */
	unsigned long		sr_timestamp;
	int			sr_status;	/* sequence operation status */
	u32			sr_status_flags;
	u32			sr_highest_slotid;