Re: large ufs2 partitions and 'df'

From: Julian Elischer <julian_at_elischer.org>
Date: Sun, 11 May 2003 15:11:59 -0700 (PDT)
On Sun, 11 May 2003, Kirk McKusick wrote:

> I think that we should use merge the two spares at the start of the
> structure into a 64-bit f_bfree field. Rename the existing f_bfree
> to f_old_bfree and set it to the same value as f_bfree if it will fit,
> otherwise the largest number that will fit (ox7fffffff). Similarly,
> take the two spare longs at the end and merge them into a 64-bit
> b_avail field. Rename f_bavail to f_old_bavail and set as with
> f_old_bfree. Those are the only two fields that need to grow, and
> this will provide binary compatibility for existing applications.
> Seem reasonable?

It would be a good idea except that there is only one spare long
at the start of the structure.. its name is f_spare2 but it is only
one long in length.

I think that swithing 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.



> 
> 	Kirk McKusick
> 
> =-=-=-=-=
> 
> Date: Wed, 7 May 2003 15:44:45 -0700 (PDT)
> From: Julian Elischer <julian_at_elischer.org>
> To: Kirk McKusick <mckusick_at_mckusick.com>
> cc: freebsd-current_at_freebsd.org
> Subject: large ufs2 partitions and 'df'
> X-ASK-Info: Whitelist match
> 
> Kirk, with the advent of UFS2 filesystems > 2TB 
> what do you think we need to do about the statfs structure in mount.h?
> 
> struct statfs {
> 	long    f_spare2;         /* placeholder */
> 	long    f_bsize;          /* fundamental filesystem block size */
> 	long    f_iosize;         /* optimal transfer block size */  
> 	long    f_blocks;         /* total data blocks in filesystem */
> 	long    f_bfree;          /* free blocks in fs */
> [...]
> 
> note:
> biggie# df
> Filesystem  1K-blocks       Used      Avail Capacity  Mounted on
> /dev/da1s1a      128990    72192      46480    61%    /
> devfs                 1        1          0   100%    /dev
> /dev/da1s1f      257998      254     237106     0%    /tmp
> [...]
> procfs                4        4          0   100%    /proc
> /dev/da2p1  -2125157230 71722434 1924502828     4%    /junk
> biggie# dumpfs /dev/da2p1 |more
> magic   19540119 (UFS2) time    Tue May  6 17:48:43 2003
> superblock location     65536   id      [ 3eb83524 bb0b0d56 ]
> ncg     11906   size    1120146927      blocks  1084905033
> bsize   16384   shift   14      mask    0xffffc000
> fsize   2048    shift   11      mask    0xfffff800
> frag    8       shift   3       fsbtodb 2
> minfree 8%      optim   time    symlinklen 120
> maxbsize 16384  maxbpg  2048    maxcontig 8     contigsumsize 8
> nbfree  131130475       ndir    1       nifree  280410108       nffree
> 16
> bpg     11761   fpg     94088   ipg     23552
> nindir  2048    inopb   64      maxfilesize     140806241583103
> sbsize  2048    cgsize  16384   csaddr  3000    cssize  192512
> sblkno  40      cblkno  48      iblkno  56      dblkno  3000
> cgrotor 2188    fmod    0       ronly   0       clean   0
> flags   none
> fsmnt   /junk
> volname         swuid   0
> 
> 
> In this case it is purely a printing error in sf I think, as the number
> of free frags is 2^30.
> but that will probably overflow on the next version of this box.
> (at least become -ve)
> 
> Should we define a new entrypoint for fstat() and what should the old
> entrypoint return for partitions that are > 2^32 frags in size?
> 
> 
> 
> _______________________________________________
> freebsd-current_at_freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"
> 
Received on Sun May 11 2003 - 13:12:03 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:07 UTC