Commit e33c4963 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull nfsd fixes from Chuck Lever:

 - Revert some backchannel fixes that went into v6.9-rc

* tag 'nfsd-6.9-5' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux:
  Revert "NFSD: Convert the callback workqueue to use delayed_work"
  Revert "NFSD: Reschedule CB operations when backchannel rpc_clnt is shut down"
parents f9e02329 8ddb7142
Loading
Loading
Loading
Loading
+5 −21
Original line number Diff line number Diff line
@@ -983,15 +983,7 @@ static struct workqueue_struct *callback_wq;
static bool nfsd4_queue_cb(struct nfsd4_callback *cb)
{
	trace_nfsd_cb_queue(cb->cb_clp, cb);
	return queue_delayed_work(callback_wq, &cb->cb_work, 0);
}

static void nfsd4_queue_cb_delayed(struct nfsd4_callback *cb,
				   unsigned long msecs)
{
	trace_nfsd_cb_queue(cb->cb_clp, cb);
	queue_delayed_work(callback_wq, &cb->cb_work,
			   msecs_to_jiffies(msecs));
	return queue_work(callback_wq, &cb->cb_work);
}

static void nfsd41_cb_inflight_begin(struct nfs4_client *clp)
@@ -1490,7 +1482,7 @@ static void
nfsd4_run_cb_work(struct work_struct *work)
{
	struct nfsd4_callback *cb =
		container_of(work, struct nfsd4_callback, cb_work.work);
		container_of(work, struct nfsd4_callback, cb_work);
	struct nfs4_client *clp = cb->cb_clp;
	struct rpc_clnt *clnt;
	int flags;
@@ -1502,16 +1494,8 @@ nfsd4_run_cb_work(struct work_struct *work)

	clnt = clp->cl_cb_client;
	if (!clnt) {
		if (test_bit(NFSD4_CLIENT_CB_KILL, &clp->cl_flags))
		/* Callback channel broken, or client killed; give up: */
		nfsd41_destroy_cb(cb);
		else {
			/*
			 * XXX: Ideally, we could wait for the client to
			 *	reconnect, but I haven't figured out how
			 *	to do that yet.
			 */
			nfsd4_queue_cb_delayed(cb, 25);
		}
		return;
	}

@@ -1544,7 +1528,7 @@ void nfsd4_init_cb(struct nfsd4_callback *cb, struct nfs4_client *clp,
	cb->cb_msg.rpc_argp = cb;
	cb->cb_msg.rpc_resp = cb;
	cb->cb_ops = ops;
	INIT_DELAYED_WORK(&cb->cb_work, nfsd4_run_cb_work);
	INIT_WORK(&cb->cb_work, nfsd4_run_cb_work);
	cb->cb_status = 0;
	cb->cb_need_restart = false;
	cb->cb_holds_slot = false;
+1 −1
Original line number Diff line number Diff line
@@ -68,7 +68,7 @@ struct nfsd4_callback {
	struct nfs4_client *cb_clp;
	struct rpc_message cb_msg;
	const struct nfsd4_callback_ops *cb_ops;
	struct delayed_work cb_work;
	struct work_struct cb_work;
	int cb_seq_status;
	int cb_status;
	bool cb_need_restart;