Networking
cancel
Showing results for 
Search instead for 
Did you mean: 

max nfs3 FSSTAT support values

Sam_Ii
Occasional Visitor

max nfs3 FSSTAT support values

I trying to use CDE dtpad on an isilon NFSv3 share.. it comes back with statvfs() eoverflow... A closer inspection on the packet trace. All ir does is an NFS FSSTAT call and reply and the HPUX decided to reply overflow.

 

When we set the limit on isilon to 1TB of quota it fails but when less than 1TB say 999G thats fine

 

 

output of working 999G FSSTAT response.

 

    Total bytes: 1072668082176   <---- 999GB response
    Free bytes: 130936963072
    Available free bytes: 130936963072
    Total file slots: 2095054848
    Free file slots: 255736256
    Available free file slots: 255736256
    invarsec: 0

 

failed FSSTAT response with 1TB limit

 

    Total bytes: 1099511627776    <-- 1TB
    Free bytes: 157780484096
    Available free bytes: 157780484096
    Total file slots: 2147483648
    Free file slots: 308165008
    Available free file slots: 308165008
    invarsec: 0

 

I don't think it's the total actual size response but more like number of file slot limit (max nr of files). Did we reach and

NFS client limit or kernel limit?

 

 

3 REPLIES
Dennis Handly
Acclaimed Contributor

Re: max nfs3 FSSTAT support values

>Did we reach an NFS client limit or kernel limit?

 

Depending on whether your application is 32 or 64 bit, it may be an application problem.

Taking your numbers:

(gdb) p /x 1099511627776 / 512
$5 = 0x80000000
(gdb) p /x 1072668082176 / 512
$6 = 0x7ce00000

 

So if the units are in 512 blocks, you are larger than a signed int.

struct __statvfs {
     unsigned long      f_bsize;       /* preferred file system block size */
     unsigned long      f_frsize;      /* Fundamental file system block size */
     _T_FSBLKCNT_T      f_blocks;      /* total blocks of fr_size on file system  */

 

Not sure if statvfs(2) in 64 bit mode would work?

Otherwise you could need to call statvfs_64(2).

Sam_Ii
Occasional Visitor

Re: max nfs3 FSSTAT support values

I also believe it's and statvfs() 32bit  limit

 

since RFC 1813 defined the limit as uint64

 

 

   size3
         typedef uint64 size3;
      struct FSSTAT3resok {
           post_op_attr obj_attributes;
           size3        tbytes;
           size3        fbytes;
           size3        abytes;
           size3        tfiles;
           size3        ffiles;
           size3        afiles;
           uint32       invarsec;
      };

 

is there a way we can use tusc to see that is inside the NFS client kernel passing content for the statvfs() beside a core? to valdate if we exceed a threshold which triggered teh EOVERFLOW response.

 

 

Dennis Handly
Acclaimed Contributor

Re: max nfs3 FSSTAT support values

>is there a way we can use tusc to see that is inside the NFS client

 

That's not going to help.  The kernel most likely gets a 64 bit value.  But your application dtpad? is truncating it to 32 bits.

But as to tusc, have you used -ea?