All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tim Shimmin <tes@sgi.com>
To: David Chinner <dgc@sgi.com>
Cc: xfs-dev <xfs-dev@sgi.com>, xfs-oss <xfs@oss.sgi.com>,
	asg-qa <asg-qa@melbourne.sgi.com>
Subject: Re: Review: fix test 004 to account for reserved space
Date: Sat, 16 Jun 2007 14:10:53 +1000	[thread overview]
Message-ID: <467362CD.4020007@sgi.com> (raw)
In-Reply-To: <20070615062335.GO86004887@sgi.com>

Hi Dave,

Yes that looks not bad.

However, your last proposal, prompted from Nathan, was to adjust 
f_bavail differently
than bfree to account for how much was available in the reserved block 
space.

struct statfs {
  long    f_type;     /* type of filesystem (see below) */
  long    f_bsize;    /* optimal transfer block size */
  long    f_blocks;   /* total data blocks in file system */
  long    f_bfree;    /* free blocks in fs */                    <------ 
includes reserved
  long    f_bavail;   /* free blocks avail to non-superuser */   <------ 
doesn't include reserved
  long    f_files;    /* total file nodes in file system */
  long    f_ffree;    /* free file nodes in fs */
  fsid_t  f_fsid;     /* file system id */
  long    f_namelen;  /* maximum length of filenames */
  long    f_spare[6]; /* spare for later */
};

And looking at df code it uses bfree in calculation of space used...
the 3rd field of df output.

df code:
---------------------------------------------------------------
     total = fsu.fsu_blocks;
     available = fsu.fsu_bavail;
     negate_available = (fsu.fsu_bavail_top_bit_set
              & (available != UINTMAX_MAX));
     available_to_root = fsu.fsu_bfree;
   }

 used = UINTMAX_MAX;
 negate_used = false;
 if (total != UINTMAX_MAX && available_to_root != UINTMAX_MAX)
   {
     used = total - available_to_root;
     negate_used = (total < available_to_root);
   }

printf (" %*s %*s %*s ",
      width + col1_adjustment,
      df_readable (false, total,
               buf[0], input_units, output_units),
      width, df_readable (negate_used, used,
                  buf[1], input_units, output_units),
      width, df_readable (negate_available, available,
                  buf[2], input_units, output_units));
-----------------------------------------------------------------
example df output:
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda3             18864128   7476720  11387408  40% /
-------------------------------------------------------------------

And indeed we set "used" as a shell variable in test 004 from df but 
don't seem
to do anything with it.
I think we should check it to verify that we have set bfree correctly.

Cheers,
Tim.

David Chinner wrote:
> Ping?
>
> On Mon, Jun 04, 2007 at 04:33:28PM +1000, David Chinner wrote:
>   
>> With the changes to use some space by default in only in memory
>> as a reserved pool, df and statfs will now output a fre block
>> count that is slightly different to  what is held in the superblock.
>>
>> Update the qa test to account for this change.
>>
>> Cheers,
>>
>> Dave.
>> -- 
>> Dave Chinner
>> Principal Engineer
>> SGI Australian Software Group
>>
>> ---
>>  xfstests/004 |   35 +++++++++++++++++++++++++----------
>>  1 file changed, 25 insertions(+), 10 deletions(-)
>>
>> Index: xfs-cmds/xfstests/004
>> ===================================================================
>> --- xfs-cmds.orig/xfstests/004	2006-11-14 19:57:39.000000000 +1100
>> +++ xfs-cmds/xfstests/004	2007-05-04 16:38:03.957537306 +1000
>> @@ -67,21 +67,36 @@ xfs_db -r -c "freesp -s" $SCRATCH_DEV >$
>>  echo "xfs_db for $SCRATCH_DEV" >>$seq.full
>>  cat $tmp.xfs_db >>$seq.full
>>  
>> +eval `$XFS_IO_PROG -x -c resblks $SCRATCH_MNT 2>&1 \
>> +	| $AWK_PROG '/available/ { printf "resblks=%u\n", $5 }'`
>> +echo "resblks gave: resblks=$resblks" >>$seq.full
>> +
>>  # check the 'blocks' field from freesp command is OK
>>  # since 2.6.18, df does not report the 4 blocks per AG that cannot
>>  # be allocated, hence we check for that exact mismatch.
>> +# since ~2.6.22, reserved blocks are used by default and df does
>> +# not report them, hence check for an exact mismatch.
>>  perl -ne '
>> -	    BEGIN	{ $avail ='$avail' * 512;
>> -			  $answer="(no xfs_db free blocks line?)" }
>> -	    /free blocks (\d+)$/	|| next;
>> -	    $freesp = $1 * '$dbsize';
>> -	    if ($freesp == $avail)	{ $answer = "yes"; }
>> -	    else {
>> +	BEGIN	{ $avail ='$avail' * 512;
>> +		  $answer="(no xfs_db free blocks line?)" }
>> +	/free blocks (\d+)$/	|| next;
>> +	$freesp = $1 * '$dbsize';
>> +	if ($freesp == $avail) {
>> +		$answer = "yes";
>> +	} else {
>>  		$avail = $avail + (('$agcount' + 1) * '$dbsize' * 4);
>> -		if ($freesp == $avail)	{ $answer = "yes"; }
>> -		else			{ $answer = "no ($freesp != $avail)"; }
>> -	    }
>> -	    END	{ print "$answer\n" }
>> +		if ($freesp == $avail) {
>> +			$answer = "yes";
>> +		} else {
>> +			$avail = $avail + ('$resblks' * '$dbsize');
>> +			if ($freesp == $avail) {
>> +				$answer = "yes";
>> +			} else {
>> +				$answer = "no ($freesp != $avail)";
>> +			}
>> +		}
>> +	}
>> +	END	{ print "$answer\n" }
>>  	' <$tmp.xfs_db >$tmp.ans
>>  ans="`cat $tmp.ans`"
>>  echo "Checking blocks column same as df: $ans"
>>     
>
>   

  parent reply	other threads:[~2007-06-16  4:11 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-04  6:33 Review: fix test 004 to account for reserved space David Chinner
2007-06-15  6:23 ` David Chinner
2007-06-15  7:33   ` Timothy Shimmin
2007-06-16  4:10   ` Tim Shimmin [this message]
2007-06-16 19:55 ` Christoph Hellwig
2007-06-18 23:54   ` David Chinner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=467362CD.4020007@sgi.com \
    --to=tes@sgi.com \
    --cc=asg-qa@melbourne.sgi.com \
    --cc=dgc@sgi.com \
    --cc=xfs-dev@sgi.com \
    --cc=xfs@oss.sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.