Bug 549730 - rpcidmapd hung after message nfsdcb: id '-2' too big!
Summary: rpcidmapd hung after message nfsdcb: id '-2' too big!
Keywords:
Status: CLOSED DUPLICATE of bug 453804
Alias: None
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: nfs-utils
Version: 5.4
Hardware: x86_64
OS: Linux
low
high
Target Milestone: ---
: ---
Assignee: Steve Dickson
QA Contact: yanfu,wang
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2009-12-22 14:15 UTC by Klaus Steinberger
Modified: 2011-01-22 19:06 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2011-01-22 19:06:04 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Klaus Steinberger 2009-12-22 14:15:52 UTC
Description of problem:

We got hanging NFS4 mounts. The NFS mount points recovered after restarting rpcidmapd on the server (Running 5.4). We investigated that rpcidmapd always stopped after it spit out this message in the log:

 Dec 11 14:44:31 filer rpc.idmapd[1581]: nfsdcb: id '-2' too big!

Version-Release number of selected component (if applicable):

nfs-utils-1.0.9-42.el5
nfs-utils-lib-1.0.8-7.6.el5

How reproducible:
In very short time


Steps to Reproduce:
1. Install above mentioned nfs-utils version
2. Put the server under stress
3.
  
Actual results:
nfs4 stops responding


Expected results:
should run with no interruption

Additional info:

We could recover from this situation by reverting to older nfs-utils and nfs-utils-lib versions. (nfs-utils-1.0.9-40.el5 nfs-utils-lib-1.0.8-7.2.z2)

Comment 1 Steve Dickson 2010-09-17 13:05:03 UTC
Here is the code in question:
   
        im.im_conv = IDMAP_CONV_IDTONAME;
        if (getfield(&bp, buf1, sizeof(buf1)) == -1) {
            idmapd_warnx("nfsdcb: bad id in upcall\n");
            goto out;
        }
        tmp = strtoul(buf1, (char **)NULL, 10);
        im.im_id = (u_int32_t)tmp;
        if ((tmp == ULONG_MAX && errno == ERANGE)
                || (unsigned long)im.im_id != tmp) {
            idmapd_warnx("nfsdcb: id '%s' too big!\n", buf1);
            goto out;
        }

the '(unsigned long)im.im_id != tmp' is causing the failure
which does not look right... Shouldn't it be something like
'im.im_id != (unsigned int)tmp' or no comparison at all?

Comment 2 Jeff Layton 2010-09-17 13:24:45 UTC
This looks like a probable duplicate of bug 453804. Could you update nfs-utils-lib to a more recent version and let us know if it's reproducible?

Comment 3 Steve Dickson 2011-01-22 19:06:04 UTC

*** This bug has been marked as a duplicate of bug 453804 ***


Note You need to log in before you can comment on or make changes to this bug.