diff mbox

nfs4: v4 mounts should not need rpcbind running

Message ID 1307110290-30672-1-git-send-email-steved@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Steve Dickson June 3, 2011, 2:11 p.m. UTC
When RPC services are created with svc_create() an
svc_unregister() is done to remove any stale registrations.

This unregister is not needed with the v4 callback
service and will cause the mount to hang if rpcbind
is not running.

This patch makes the nfs4 callback service a hide service
by setting the vs_hidden flag in the nfs4_callback_version4
structure

Signed-off-by: Steve Dickson <steved@redhat.com>
---
 fs/nfs/callback_xdr.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

Comments

Chuck Lever III June 3, 2011, 2:41 p.m. UTC | #1
Hey-

On Jun 3, 2011, at 10:11 AM, Steve Dickson wrote:

> When RPC services are created with svc_create() an
> svc_unregister() is done to remove any stale registrations.
> 
> This unregister is not needed with the v4 callback
> service and will cause the mount to hang if rpcbind
> is not running.

This should no longer be the case.  The kernel uses connected transports to contact rpcbind these days, and should be able to tell immediately that there is no rpcbind running.  If there is still a hang, something else is wrong.

> This patch makes the nfs4 callback service a hide service
> by setting the vs_hidden flag in the nfs4_callback_version4
> structure

One reason to continue to do this is to have some assurance that no-one else takes the same RPC program number.  Not a big deal.

> Signed-off-by: Steve Dickson <steved@redhat.com>
> ---
> fs/nfs/callback_xdr.c |    1 +
> 1 files changed, 1 insertions(+), 0 deletions(-)
> 
> diff --git a/fs/nfs/callback_xdr.c b/fs/nfs/callback_xdr.c
> index c6c86a7..7c8b800 100644
> --- a/fs/nfs/callback_xdr.c
> +++ b/fs/nfs/callback_xdr.c
> @@ -996,4 +996,5 @@ struct svc_version nfs4_callback_version4 = {
> 	.vs_proc = nfs4_callback_procedures1,
> 	.vs_xdrsize = NFS4_CALLBACK_XDRSIZE,
> 	.vs_dispatch = NULL,
> +	.vs_hidden = 1,
> };
Steve Dickson June 3, 2011, 3:13 p.m. UTC | #2
On 06/03/2011 10:41 AM, Chuck Lever wrote:
> Hey-
> 
> On Jun 3, 2011, at 10:11 AM, Steve Dickson wrote:
> 
>> When RPC services are created with svc_create() an
>> svc_unregister() is done to remove any stale registrations.
>>
>> This unregister is not needed with the v4 callback
>> service and will cause the mount to hang if rpcbind
>> is not running.
> 
> This should no longer be the case.  The kernel uses connected transports to contact rpcbind these days, and should be able to tell immediately that there is no rpcbind running.  If there is still a hang, something else is wrong.
Ok... The hang was just an theory... I didn't test it out... but I do know
for a fact that when a v4 mount is done, a PMAP_UNSET is set to rpcbind 
which obviously is not needed.  
> 
>> This patch makes the nfs4 callback service a hide service
>> by setting the vs_hidden flag in the nfs4_callback_version4
>> structure
> 
> One reason to continue to do this is to have some assurance that no-one else takes the same RPC program number.  Not a big deal.
Personally I think its a waste of cycles especially when a large
number of mounts are happening at once... Its completely overkill IMHO...

steved.

> 
>> Signed-off-by: Steve Dickson <steved@redhat.com>
>> ---
>> fs/nfs/callback_xdr.c |    1 +
>> 1 files changed, 1 insertions(+), 0 deletions(-)
>>
>> diff --git a/fs/nfs/callback_xdr.c b/fs/nfs/callback_xdr.c
>> index c6c86a7..7c8b800 100644
>> --- a/fs/nfs/callback_xdr.c
>> +++ b/fs/nfs/callback_xdr.c
>> @@ -996,4 +996,5 @@ struct svc_version nfs4_callback_version4 = {
>> 	.vs_proc = nfs4_callback_procedures1,
>> 	.vs_xdrsize = NFS4_CALLBACK_XDRSIZE,
>> 	.vs_dispatch = NULL,
>> +	.vs_hidden = 1,
>> };
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Chuck Lever III June 3, 2011, 3:27 p.m. UTC | #3
On Jun 3, 2011, at 11:13 AM, Steve Dickson wrote:

> On 06/03/2011 10:41 AM, Chuck Lever wrote:
>> Hey-
>> 
>> On Jun 3, 2011, at 10:11 AM, Steve Dickson wrote:
>> 
>>> This patch makes the nfs4 callback service a hide service
>>> by setting the vs_hidden flag in the nfs4_callback_version4
>>> structure
>> 
>> One reason to continue to do this is to have some assurance that no-one else takes the same RPC program number.  Not a big deal.
> Personally I think its a waste of cycles especially when a large
> number of mounts are happening at once... Its completely overkill IMHO...

Agreed, and I'm not objecting to this specific change.  The above was just a generic observation.

My overall concern, though, was that we might still be hanging at mount or umount time if rpcbind was absent.
diff mbox

Patch

diff --git a/fs/nfs/callback_xdr.c b/fs/nfs/callback_xdr.c
index c6c86a7..7c8b800 100644
--- a/fs/nfs/callback_xdr.c
+++ b/fs/nfs/callback_xdr.c
@@ -996,4 +996,5 @@  struct svc_version nfs4_callback_version4 = {
 	.vs_proc = nfs4_callback_procedures1,
 	.vs_xdrsize = NFS4_CALLBACK_XDRSIZE,
 	.vs_dispatch = NULL,
+	.vs_hidden = 1,
 };