[illumos-Developer] webrev for 1107

Vitaliy Gusev gusev.vitaliy at nexenta.com
Mon Jun 13 13:45:14 PDT 2011


>>
>> No, do_one doesn't call do_poll_cots_action. I as mentioned early,
>> call stack is:
>>
>>    poll_for_action
>>         do_poll_cots_action
>>              cots_listen_event
>
> Heh, your're right, I confused poll_for_actions with add_to_poll_list,
> which is called by do_one.
> But your point point opens several questions. First of all I need to
> explain why we need OK_TPI_TYPE
> instead of checking of nc_semantics on  NC_TPI_CLTS only.


I think it creates kernel thread on each connect for COTS - so we can do 
it only on connect, whereas for udp it can be started at once.


>
> Both nfsd and lockd calls do_one function and pass svc callback to it.
> In case of lockd svc callback
> is nlmsvc function which calls LM_SVC nfs syscall that opens in its
> turn makes kernel to register
> kRPC server handles for given protocols and devices. By some reason
...

> In case of nfsd do_one function calls nfssvc callback for CLTS only.
> nfssvc calls NFS_SVC nfssys
> that in its turn creates kRPC server handle. According to the code,
> nfs_tbind.c will create only CLTS
> kRPC server handles for nfsd. Is it right?



1. For udp it will be called at once from do_one()

2. For tcp it delays until incoming connection arrives. For nfsd see to


*** src/cmd/fs.d/nfs/nfsd/nfsd.c:
          int (*Mysvc)(int , struct netbuf, struct netconfig *) = nfssvc;

*** src/cmd/fs.d/nfs/lib/nfs_tbind.c:
cots_listen_event[1425]        ret = (*Mysvc)(new_fd, addrmask, nconf);






More information about the Developer mailing list