Date: Thu, 6 Nov 2003 17:45:28 +1100 From: Tim Robbins <tjr@freebsd.org> To: Kirk McKusick <mckusick@McKusick.COM> Cc: Peter Wemm <peter@freebsd.org> Subject: Re: >0x7fffffff blocksize filesystem reporting Message-ID: <20031106064528.GA1440@wombat.robbins.dropbear.id.au> In-Reply-To: <200311060504.hA654feN034044@beastie.mckusick.com> References: <200311060504.hA654feN034044@beastie.mckusick.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Nov 05, 2003 at 09:04:41PM -0800, Kirk McKusick wrote: > + /* > + * Convert a new format statfs structure to an old format statfs structure. > + */ > + static void > + cvtstatfs(td, nsp, osp) > + struct thread *td; > + struct statfs *nsp; > + struct ostatfs *osp; > + { > + > + bzero(osp, sizeof(*osp)); > + osp->f_bsize = nsp->f_bsize; > + osp->f_iosize = nsp->f_iosize; > + osp->f_blocks = nsp->f_blocks; > + osp->f_bfree = nsp->f_bfree; > + osp->f_bavail = nsp->f_bavail; > + osp->f_files = nsp->f_files; > + osp->f_ffree = nsp->f_ffree; > + osp->f_owner = nsp->f_owner; > + osp->f_type = nsp->f_type; > + osp->f_flags = nsp->f_flags; > + osp->f_syncwrites = nsp->f_syncwrites; > + osp->f_asyncwrites = nsp->f_asyncwrites; > + osp->f_syncreads = nsp->f_syncreads; > + osp->f_asyncreads = nsp->f_asyncreads; It may be better to return LONG_MAX for some of these members than to truncate the value. Alternatively, the block size could be adjusted to ensure that f_blocks fits in a "long" even though f_blocks * f_bsize may overflow it, but this is messy and can't help if f_files or f_{sync,async}{reads,writes} are too big. > + bcopy(nsp->f_fstypename, osp->f_fstypename, MFSNAMELEN); > + bcopy(nsp->f_mntonname, osp->f_mntonname, MNAMELEN); > + bcopy(nsp->f_mntfromname, osp->f_mntfromname, MNAMELEN); On architectures where longs are not 32 bits (amd64), OMNAMELEN != MNAMELEN, so this may do the wrong thing. Tim
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20031106064528.GA1440>