fix problems with includes now that our previous linux/acl.h has gone away.
[xfstests-dev.git] / src / fill2fs
index 6fbc89e7e4a84ce0f8ab83157c2d8600ac7df4e7..fafde01fde72b36aae252cb71443ea138b93eab8 100755 (executable)
@@ -107,15 +107,15 @@ sub fsinfo {
     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
@@ -182,6 +182,7 @@ GetOptions("bytes=f" => \$bytes,
           "percent=f" => \$percentage,
           "seed=i" => \$seed,
           "stddev=i" => \$stddev,
+          "sync=i" => \$sync_bytes,
           "verbose!" => \$verbose);
 
 
@@ -203,6 +204,7 @@ Options:
   --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;
@@ -277,6 +279,7 @@ $total = 0;
 $files = 0;
 $dirs = 0;
 $d = 0;
+$sync_cnt = 1;
 
 #
 # fill filesystem
@@ -311,7 +314,7 @@ while ($total < $bytes) {
       }
       last;
     }
-    $_ = `sum $n`;
+    $_ = `sum -r $n`;
     ($sum) = split(/ +/);
     $name = "$n.$sum.data";
     $cmd = "mv $n $name";      # perl rename failed earlier than using mv
@@ -331,6 +334,11 @@ while ($total < $bytes) {
     }
     $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)) {