Project

General

Profile

Actions

Bug #16387

closed

CLSET_NODELAYONERR not set if udp transport is used.

Added by Toomas Soome 3 months ago. Updated about 2 months ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
nfs - NFS server and client
Start date:
Due date:
% Done:

100%

Estimated time:
Difficulty:
Bite-size
Tags:
Gerrit CR:
External Bug:

Description

CLSET_NODELAYONERR is not implemented with CLTS and call clnt_control() with CLTS transport will result having:

NLM_ERR("Unable to set CLSET_NODELAYONERR\n");

I think, we need to implement proper response on CLSET_NODELAYONERR function in clnt_clts.c; since we do not have any delay in CLTS, we can respond TRUE and with this also avoid the error message. In case of CLGET_NODELAYONERR, we have option to either return FAIL (because we do not actually support this feature, or we can return the value TRUE because we do not have delays. I opted to return FAIL.

Actions #1

Updated by Toomas Soome 3 months ago

  • Description updated (diff)
Actions #2

Updated by Electric Monk 3 months ago

  • Gerrit CR set to 3363
Actions #3

Updated by Toomas Soome about 2 months ago

Testing done: set up NFS service in global and local zone, tested mounts with v2, v3, v4. No unexpected results.

Actions #4

Updated by Toomas Soome about 2 months ago

  • Status changed from In Progress to Pending RTI
Actions #5

Updated by Toomas Soome about 2 months ago

  • Description updated (diff)
Actions #6

Updated by Toomas Soome about 2 months ago

Testing done (after rework):

First I did confirm the problem:

# mount -o sec=sys,vers=2,proto=udp balrog.local:/export/test /mnt

and used sqllite3 to trigger use of locks (and log message) while accessing /mnt
Apr 26 10:52:07 openindiana klmmod: [ID 497209 kern.notice] NOTICE: Unable to set CLSET_NODELAYONERR
Apr 26 11:07:12 openindiana klmmod: [ID 497209 kern.notice] NOTICE: Unable to set CLSET_NODELAYONERR

Updated system to use patched rpcmod and with same mount run dtrace:

dtrace -n ':clnt_clts_kcontrol:entry /arg1 == 10003/ {}' &

And while accessing sqllite got output from dtrace:

CPU     ID                    FUNCTION:NAME
  0  54772         clnt_clts_kcontrol:entry 

So, we got clnt_clts_kcontrol() call with CLSET_NODELAYONERR function and no log entry.

Actions #7

Updated by Electric Monk about 2 months ago

  • Status changed from Pending RTI to Closed
  • % Done changed from 90 to 100

git commit a87f5a443d0dfc960a9aa1d5c5781c0afe353c41

commit  a87f5a443d0dfc960a9aa1d5c5781c0afe353c41
Author: Toomas Soome <tsoome@me.com>
Date:   2024-04-26T15:09:29.000Z

    16387 CLSET_NODELAYONERR not set if udp transport is used.
    Reviewed by: Dan McDonald <danmcd@mnx.io>
    Reviewed by: Gordon Ross <gordon.w.ross@gmail.com>
    Approved by: Patrick Mooney <pmooney@pfmooney.com>

Actions

Also available in: Atom PDF