Date: Wed, 24 Aug 2011 16:09:24 -0700 From: mdf@FreeBSD.org To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: Re: svn commit: r225154 - in projects/ino64/sys/ufs: ffs ufs Message-ID: <CAMBSHm8H8mzAvBSNmi4_wVYqxJNrxT3hGiJH9WL3u4Hr6UmdSg@mail.gmail.com> In-Reply-To: <201108242214.p7OMEuMP072758@svn.freebsd.org> References: <201108242214.p7OMEuMP072758@svn.freebsd.org>
index | next in thread | previous in thread | raw e-mail
On Wed, Aug 24, 2011 at 3:14 PM, Matthew D Fleming <mdf@freebsd.org> wrote: > Author: mdf > Date: Wed Aug 24 22:14:55 2011 > New Revision: 225154 > URL: http://svn.freebsd.org/changeset/base/225154 > > Log: > Use fixed-width types in on-disk structures. This takes care of all the > ino_t references I could find that were on-disk. > > GSoC r223157. > Code by Gleb Kurtsou. Note that I've explicitly left all the XXXfid structs alone; when ino_t is changed to 64-bit they will use 64-bit members for inode number. The only in-tree one that may be a problem is ReiserFS which will have a 32 byte FID after compiler padding is applied. This can be reduced to 24 bytes by reordering the members. In theory, IIRC, even 32 bits is an okay FID, however I have seen a note at $WORK that NFSv2 has 32 byte file handles and BSD is using 8 bytes for the fsid. If anyone knows anything more, please let me know. For the moment I think my plan is to re-order the members of various implementations to keep them smaller, and leave it as an ino_t in the struct definition. Thanks, matthew > Modified: > projects/ino64/sys/ufs/ffs/fs.h > projects/ino64/sys/ufs/ufs/dinode.h > > Modified: projects/ino64/sys/ufs/ffs/fs.h > ============================================================================== > --- projects/ino64/sys/ufs/ffs/fs.h Wed Aug 24 22:07:38 2011 (r225153) > +++ projects/ino64/sys/ufs/ffs/fs.h Wed Aug 24 22:14:55 2011 (r225154) > @@ -338,7 +338,7 @@ struct fs { > ufs2_daddr_t fs_csaddr; /* blk addr of cyl grp summary area */ > int64_t fs_pendingblocks; /* (u) blocks being freed */ > u_int32_t fs_pendinginodes; /* (u) inodes being freed */ > - ino_t fs_snapinum[FSMAXSNAP];/* list of snapshot inode numbers */ > + u_int32_t fs_snapinum[FSMAXSNAP];/* list of snapshot inode numbers */ > u_int32_t fs_avgfilesize; /* expected average file size */ > u_int32_t fs_avgfpdir; /* expected # of files per directory */ > int32_t fs_save_cgsize; /* save real cg size to use fs_bsize */ > @@ -695,8 +695,8 @@ struct jsegrec { > */ > struct jrefrec { > uint32_t jr_op; > - ino_t jr_ino; > - ino_t jr_parent; > + uint32_t jr_ino; > + uint32_t jr_parent; > uint16_t jr_nlink; > uint16_t jr_mode; > off_t jr_diroff; > @@ -709,8 +709,8 @@ struct jrefrec { > */ > struct jmvrec { > uint32_t jm_op; > - ino_t jm_ino; > - ino_t jm_parent; > + uint32_t jm_ino; > + uint32_t jm_parent; > uint16_t jm_unused; > off_t jm_oldoff; > off_t jm_newoff; > > Modified: projects/ino64/sys/ufs/ufs/dinode.h > ============================================================================== > --- projects/ino64/sys/ufs/ufs/dinode.h Wed Aug 24 22:07:38 2011 (r225153) > +++ projects/ino64/sys/ufs/ufs/dinode.h Wed Aug 24 22:14:55 2011 (r225154) > @@ -146,7 +146,7 @@ struct ufs2_dinode { > ufs2_daddr_t di_db[NDADDR]; /* 112: Direct disk blocks. */ > ufs2_daddr_t di_ib[NIADDR]; /* 208: Indirect disk blocks. */ > u_int64_t di_modrev; /* 232: i_modrev for NFSv4 */ > - ino_t di_freelink; /* 240: SUJ: Next unlinked inode. */ > + u_int32_t di_freelink; /* 240: SUJ: Next unlinked inode. */ > uint32_t di_spare[3]; /* 244: Reserved; currently unused */ > }; > > @@ -168,7 +168,7 @@ struct ufs2_dinode { > struct ufs1_dinode { > u_int16_t di_mode; /* 0: IFMT, permissions; see below. */ > int16_t di_nlink; /* 2: File link count. */ > - ino_t di_freelink; /* 4: SUJ: Next unlinked inode. */ > + u_int32_t di_freelink; /* 4: SUJ: Next unlinked inode. */ > u_int64_t di_size; /* 8: File byte count. */ > int32_t di_atime; /* 16: Last access time. */ > int32_t di_atimensec; /* 20: Last access time. */ >help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAMBSHm8H8mzAvBSNmi4_wVYqxJNrxT3hGiJH9WL3u4Hr6UmdSg>
