die("Error: $progname: can't read device: \"$dev\"\n") if (! -r $dev);
$_=`xfs_db -r -c sb -c p $dev`;
# multiline matching ^$ refers to individual lines...
- /^dblocks = (\d+)$/m; $fsblocks=$1;
- /^blocksize = (\d+)$/m; $fsblocksize=$1;
- /^agblocks = (\d+)$/m; $agblocks=$1;
- /^agcount = (\d+)$/m; $agcount=$1;
- /^imax_pct = (\d+)$/m; $imax_pct=$1;
- /^logblocks = (\d+)$/m; $logblocks=$1;
- /^logstart = (\d+)$/m; $logstart=$1;
+ ($fsblocks) = /^dblocks = (\d+)$/m;
+ ($fsblocksize) = /^blocksize = (\d+)$/m;
+ ($agblocks) = /^agblocks = (\d+)$/m;
+ ($agcount) = /^agcount = (\d+)$/m;
+ ($imax_pct) = /^imax_pct = (\d+)$/m;
+ ($logblocks) = /^logblocks = (\d+)$/m;
+ ($logstart) = /^logstart = (\d+)$/m;
$internal = $logstart > 0 ? " (internal)" : "";
-
+
$verbose && print STDERR <<"EOF"
Filesystem information:
type=$type; device=$dev
"percent=f" => \$percentage,
"seed=i" => \$seed,
"stddev=i" => \$stddev,
+ "sync=i" => \$sync_bytes,
"verbose!" => \$verbose);
--percent=num percentage of filesystem to fill
--seed=num seed for random number generator
--stddev set file size standard deviation
+ --sync=num sync every num bytes written
--verbose verbose output
EOF
exit(1) unless defined $help;
$files = 0;
$dirs = 0;
$d = 0;
+$sync_cnt = 1;
#
# fill filesystem
}
last;
}
- $_ = `sum $n`;
+ $_ = `sum -r $n`;
($sum) = split(/ +/);
$name = "$n.$sum.data";
$cmd = "mv $n $name"; # perl rename failed earlier than using mv
}
$total += $size;
$files++;
+
+ if (defined $sync_bytes && int($total / $sync_bytes) > $sync_cnt) {
+ $sync_cnt++;
+ system("sync");
+ }
}
# note that if d==0 create directories more frequently than files
elsif (($d == 0 && $r >= 0.5) || ($d > 0 && $r >= 2.4 && $r < 2.7)) {