Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 11 May 2003 21:04:23 -0700 (PDT)
From:      Julian Elischer <julian@elischer.org>
To:        Kirk McKusick <mckusick@beastie.mckusick.com>
Cc:        freebsd-current@freebsd.org
Subject:   Re: large ufs2 partitions and 'df' 
Message-ID:  <Pine.BSF.4.21.0305112102450.4662-100000@InterJet.elischer.org>
In-Reply-To: <200305112244.h4BMiFTh036221@beastie.mckusick.com>

next in thread | previous in thread | raw e-mail | index | archive | help


On Sun, 11 May 2003, Kirk McKusick wrote:

> > 
> > I think that switching to a new syscall with a fixed structure
> > and using the rules you mention above to populate the structure in an 
> > ostatfs call might be the best answer.
> > Old binaries probably only need to know that there is > X blocks free
> > and not necessarily the correct number.
> > New binaries can use the new syscall.
> 
> So right you are. It would be possible to get the space by nibbling
> a bit more space from MNAMELEN, but at some point we need to just bite
> the bullet and define a new structure. I am leaning towards believing
> that time is now. If we do define a new structure, I would like to
> clean up the existing one a bit. I would propose this:
> 
> #define	MFSNAMELEN	16	/* length of fs type name, including null */
> #define	MNAMELEN	80	/* size of on/from name bufs */
> struct statfs {
> 	u_int_32 f_bsize;		/* fundamental filesystem block size */
> 	u_int_32 f_iosize;		/* optimal transfer block size */
> 	int_64	 f_blocks;		/* total data blocks in filesystem */
> 	int_64	 f_bfree;		/* free blocks in fs */
> 	int_64	 f_bavail;		/* free blocks avail to non-superuser */
> 	int_64	 f_files;		/* total file nodes in filesystem */
> 	int_64	 f_ffree;		/* free file nodes in fs */
> 	u_int_64 f_syncwrites;		/* count of sync writes since mount */
> 	u_int_64 f_asyncwrites;		/* count of async writes since mount */
> 	u_int_64 f_syncreads;		/* count of sync reads since mount */
> 	u_int_64 f_asyncreads;		/* count of async reads since mount */
> 	u_int_64 f_spare[10];		/* unused spare */
> 	fsid_t	 f_fsid;		/* filesystem id */
> 	uid_t	 f_owner;		/* user that mounted the filesystem */
> 	u_int_32 f_type;		/* type of filesystem */
> 	u_int_32 f_flags;		/* copy of mount exported flags */
> 	char	 f_fstypename[MFSNAMELEN]; /* fs type name */
> 	char	 f_mntfromname[MNAMELEN];  /* mounted filesystem */
> 	char	 f_mntonname[MNAMELEN];	   /* directory on which mounted */
> };
> 
> It reorganizes things back into a rational order. It increases the
> sizes of everything that might ever want to be 64-bits to that size,
> and leaves plenty (10) of spares for future growth. Comments?

Before we go all gung hoon this, is this structure described in any 
standard? (posix?)

> 
> 	Kirk McKusick
> 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0305112102450.4662-100000>