Project

General

Profile

Actions

Bug #6156

open

Spurious "Unable to set CLSET_NODELAYONERR"

Added by Dan McDonald almost 6 years ago. Updated almost 6 years ago.

Status:
New
Priority:
Normal
Assignee:
Category:
nfs - NFS server and client
Start date:
2015-08-22
Due date:
% Done:

0%

Estimated time:
Difficulty:
Bite-size
Tags:
needs-triage
Gerrit CR:

Description

In spite of #4463's fix, I still occasionally see errors mentioned above. I have one theory, as extra-commented in refresh_nlm_rpc():

138        ret = clnt_tli_kcreate(&hostp->nh_knc, &hostp->nh_addr,
139            NLM_PROG, rpcp->nr_vers, 0, NLM_RPC_RETRIES,
140            CRED(), &rpcp->nr_handle);
141
142        /*
143         * Set the client's CLSET_NODELAYONERR option to true. The
144         * RPC clnt_call interface creates an artificial delay for
145         * certain call errors in order to prevent RPC consumers
146         * from getting into tight retry loops. Since this function is
147         * called by the NLM service routines we would like to avoid
148         * this artificial delay when possible. We do not retry if the
149         * NULL request fails so it is safe for us to turn this option
150         * on.
151         */

              /* XXX KEBE ASKS what if ret is not zero? */

152        if (clnt_control(rpcp->nr_handle, CLSET_NODELAYONERR,
153            (char *)&clset) == FALSE) {
154            NLM_ERR("Unable to set CLSET_NODELAYONERR\n");

Reading further, we should kernel panic if ret is not zero, bcause rpcp->nr_handle would still be NULL. So that in and of itself is a problem too.

Regardless, I'm still seeing this, so either I'm incredibly lucky about clnt_control()'s side-effects, or for some other reason. I'm running dtrace to catch one. Maybe just the return-check alone is worth a fix...


Related issues

Related to illumos gate - Bug #4463: NLM fails wrongly on clnt_control().ResolvedDan McDonald2014-01-13

Actions
Actions

Also available in: Atom PDF