<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"Myriad Pro";}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>We are using NFS with our RTEMS system. We are getting the following print out at times from the NFS subsystem:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>                NFS (proc 1) - RPC: Can't decode result<o:p></o:p></p><p class=MsoNormal>                RPCIO WARNING sockRcv(): transaction mismatch<o:p></o:p></p><p class=MsoNormal style='text-indent:.5in'>xact: xid  0x00336d76  -- got 0x00336376<o:p></o:p></p><p class=MsoNormal style='text-indent:.5in'>xact: addr 0xc0a8fe65  -- got 0xc0a8fe65<o:p></o:p></p><p class=MsoNormal style='text-indent:.5in'>xact: port 0x00000801  -- got 0x00000801<o:p></o:p></p><p class=MsoNormal style='text-indent:.5in'>NFS (proc 1) - RPC: Can't decode result<o:p></o:p></p><p class=MsoNormal style='text-indent:.5in'>NFS (proc 4) - RPC: Can't decode result<o:p></o:p></p><p class=MsoNormal style='text-indent:.5in'>NFS (proc 8) - RPC: Can't decode result<o:p></o:p></p><p class=MsoNormal style='text-indent:.5in'>NFS (proc 8) - RPC: Can't decode result<o:p></o:p></p><p class=MsoNormal style='text-indent:.5in'><o:p> </o:p></p><p class=MsoNormal>We are not sure why we get the RPC, Cant decode result, but this is not necessarily the bad behavior. When this happens we notice that the number of MBUFS available reduces and doesn’t come back. Over a period of 1-2 days eventually we run out of MBUFS and can no longer communicate with RTEMS. Looking in the code, it is clear this error is produced from here:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><u>rpcio.c<o:p></o:p></u></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>      <span style='color:#010001'>xdrmem_create</span>(&<span style='color:#010001'>reply_xdrs</span>, <span style='color:#010001'>xact</span>-><span style='color:#010001'>ibuf</span>-><span style='color:#010001'>buf</span>, <span style='color:#010001'>xact</span>-><span style='color:#010001'>ibufsize</span>, <span style='color:#010001'>XDR_DECODE</span>); <span style='color:red'>// !!!!! We think the buffer is created</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New";color:blue'><o:p> </o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>      <span style='color:#010001'>reply_msg</span>.<span style='color:#010001'>acpted_rply</span>.<span style='color:#010001'>ar_verf</span>          = <span style='color:#010001'>_null_auth</span>;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>      <span style='color:#010001'>reply_msg</span>.<span style='color:#010001'>acpted_rply</span>.<span style='color:#010001'>ar_results</span>.<span style='color:blue'>where</span> = <span style='color:#010001'>xact</span>-><span style='color:#010001'>pres</span>;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>      <span style='color:#010001'>reply_msg</span>.<span style='color:#010001'>acpted_rply</span>.<span style='color:#010001'>ar_results</span>.<span style='color:#010001'>proc</span>  = <span style='color:#010001'>xact</span>-><span style='color:#010001'>xres</span>;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>      <span style='color:blue'>if</span> (<span style='color:#010001'>xdr_replymsg</span>(&<span style='color:#010001'>reply_xdrs</span>, &<span style='color:#010001'>reply_msg</span>)) { <span style='color:red'>// !!!!!!! This reply message is not successful</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>            <span style='color:green'>/* OK */<o:p></o:p></span></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>            <span style='color:#010001'>_seterr_reply</span>(&<span style='color:#010001'>reply_msg</span>, &<span style='color:#010001'>xact</span>-><span style='color:#010001'>status</span>);<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>            <span style='color:blue'>if</span> (<span style='color:#010001'>RPC_SUCCESS</span> == <span style='color:#010001'>xact</span>-><span style='color:#010001'>status</span>.<span style='color:#010001'>re_status</span>) {<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>                  <span style='color:blue'>if</span> ( !<span style='color:#010001'>locked_validate</span>(<span style='color:#010001'>xact</span>-><span style='color:#010001'>server</span>,<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>                                                &<span style='color:#010001'>reply_msg</span>.<span style='color:#010001'>acpted_rply</span>.<span style='color:#010001'>ar_verf</span>) ) {<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>                        <span style='color:#010001'>xact</span>-><span style='color:#010001'>status</span>.<span style='color:#010001'>re_status</span> = <span style='color:#010001'>RPC_AUTHERROR</span>;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>                        <span style='color:#010001'>xact</span>-><span style='color:#010001'>status</span>.<span style='color:#010001'>re_why</span>    = <span style='color:#010001'>AUTH_INVALIDRESP</span>;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>                  }<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>                  <span style='color:blue'>if</span> (<span style='color:#010001'>reply_msg</span>.<span style='color:#010001'>acpted_rply</span>.<span style='color:#010001'>ar_verf</span>.<span style='color:#010001'>oa_base</span>) {<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>                        <span style='color:#010001'>reply_xdrs</span>.<span style='color:#010001'>x_op</span> = <span style='color:#010001'>XDR_FREE</span>;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>                        <span style='color:#010001'>xdr_opaque_auth</span>(&<span style='color:#010001'>reply_xdrs</span>, &<span style='color:#010001'>reply_msg</span>.<span style='color:#010001'>acpted_rply</span>.<span style='color:#010001'>ar_verf</span>);<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>                  }<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>                  <span style='color:#010001'>refresh</span> = 0;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>            } <span style='color:blue'>else</span> {<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>                  <span style='color:green'>/* should we try to refresh our credentials ? */<o:p></o:p></span></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>                  <span style='color:blue'>if</span> ( !<span style='color:#010001'>refresh</span> ) {<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>                        <span style='color:green'>/* had never tried before */<o:p></o:p></span></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>                        <span style='color:#010001'>refresh</span> = <span style='color:#010001'>RPCIOD_REFRESH</span>;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>                  }<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>            }<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>      } <span style='color:blue'>else</span> {<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>            <span style='color:#010001'>reply_xdrs</span>.<span style='color:#010001'>x_op</span>        = <span style='color:#010001'>XDR_FREE</span>;<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>            <span style='color:#010001'>xdr_replymsg</span>(&<span style='color:#010001'>reply_xdrs</span>, &<span style='color:#010001'>reply_msg</span>);<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>            <span style='color:#010001'>xact</span>-><span style='color:#010001'>status</span>.<span style='color:#010001'>re_status</span> = <span style='color:#010001'>RPC_CANTDECODERES</span>; <span style='color:red'>// !!!!!!!!! Here is where the error is made that results in the print out</span><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>      }<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>      <span style='color:#010001'>XDR_DESTROY</span>(&<span style='color:#010001'>reply_xdrs</span>);<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New"'>      <span style='color:#010001'>bufFree</span>(&<span style='color:#010001'>xact</span>-><span style='color:#010001'>ibuf</span>); <span style='color:red'>// !!!!!!!!!! I would have thought we free the mbuf here (ie. This eventually results in the “MFREE” macro</span><span style='color:#010001'><o:p></o:p></span></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New";color:#010001'><o:p> </o:p></span></p><p class=MsoNormal style='text-autospace:none'>But still, eventually, we run out of MBUFS and the system is inoperable. We are running an old version of RTEMS (4.9.2) but even compared to the newer version 4.11 we can see any significant changes in this or the NFS related files that would suggest a fix for this behavior. Is this well-known and is there a patch for it?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><b><span style='font-family:"Myriad Pro";color:#17365D'>Ben Dart<o:p></o:p></span></b></p><p class=MsoNormal><span style='font-family:"Myriad Pro";color:#17365D'><o:p> </o:p></span></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>