RE: [PATCH] nfs: support 64-bit root inode number in NFS FSID

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -----Original Message-----
> From: Yong, Fan [mailto:fan.yong@xxxxxxxxx]
> Sent: Thursday, May 23, 2013 9:30 PM
> To: Myklebust, Trond; Jim Rees
> Cc: Peng Tao; Dilger, Andreas; J. Bruce Fields; linux-nfs@xxxxxxxxxxxxxxx;
> Steve Dickson
> Subject: RE: [PATCH] nfs: support 64-bit root inode number in NFS FSID
> 
> For the rare unfortunate cases of "sizeof(unsigned long) < 4" or
> "sizeof(unsigned long long) < 8", current nfs-utils will cross-boundary
> memory copy. So need more work to make it stably runnable on kinds of
> platform...

unsigned long long is guaranteed by C99 to be >= 64 bits. IOW: it could be 128 bits depending on the compiler.


> --
> Cheers,
> Nasf
> 
> -----Original Message-----
> From: Myklebust, Trond [mailto:Trond.Myklebust@xxxxxxxxxx]
> Sent: Thursday, May 23, 2013 10:22 PM
> To: Jim Rees
> Cc: Yong, Fan; Peng Tao; Dilger, Andreas; J. Bruce Fields; linux-
> nfs@xxxxxxxxxxxxxxx; Steve Dickson
> Subject: RE: [PATCH] nfs: support 64-bit root inode number in NFS FSID
> 
> > -----Original Message-----
> > From: Jim Rees [mailto:rees@xxxxxxxxx]
> > Sent: Thursday, May 23, 2013 10:20 AM
> > To: Myklebust, Trond
> > Cc: Yong, Fan; Peng Tao; Dilger, Andreas; J. Bruce Fields; linux-
> > nfs@xxxxxxxxxxxxxxx; Steve Dickson
> > Subject: Re: [PATCH] nfs: support 64-bit root inode number in NFS FSID
> >
> > Myklebust, Trond wrote:
> >
> >   On Thu, 2013-05-23 at 12:59 +0000, Yong, Fan wrote:
> >   > Just make it match the "inode64" in nfs-utils parse_fsid(), which
> > is defined as "unsigned long long", and the parsed_fsid:: inode is copied
> from "inode64"
> > as following:
> >   >
> >   > static int parse_fsid(int fsidtype, int fsidlen, char *fsid,
> >   >                 struct parsed_fsid *parsed)
> >   > {
> >   >         unsigned int dev;
> >   >         unsigned long long inode64;
> >   > ...
> >   >         case FSID_UUID16_INUM: /* 8 byte inode number and 16 byte uuid
> > */
> >   >                 if (fsidlen != 24)
> >   >                         return -1;
> >   >                 memcpy(&inode64, fsid, 8);
> >   >                 parsed->inode = inode64;
> >   >                 parsed->uuidlen = 16;
> >   >                 parsed->fhuuid = fsid+8;
> >   >                 break;
> >   >         }
> >   >
> >   > --
> >   > Cheers,
> >   > Nasf
> >
> >   Eeeeeeeewww! This is _exactly_ why we should be using properly
> >   dimensioned types. Feel free to tell me how the value of 'inode64' is
> >   well defined on systems where sizeof(unsigned long long) != 8...
> >
> > Is there any reason not to use ino_t?
> 
> Yes. It's not guaranteed to be 64-bit either.
> 
> Trond
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux