deleted file mode 100755
@@ -1,171 +0,0 @@
-#!/usr/bin/perl -w
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (c) 2003-2004 Silicon Graphics, Inc. All Rights Reserved.
-#
-use strict;
-use IO::File;
-use Getopt::Std;
-#
-#
-# Modify a filesystem's superblock and AGF metadata structures
-# so that only a subset of the allocation groups will be used.
-# Intended use is in testing large virtual devices (eg. loop)
-# with extremely large filesystems, where we want to ensure
-# high allocation groups are used as much as possible (where
-# the block addresses are large).
-#
-
-my %opt;
-getopts('cf:l:qr:v', \%opt);
-
-die "Usage: $0 [-f AG] [-l AG] [-r bytes] [-cqv] device\n" unless (@ARGV == 1);
-my $device = shift @ARGV;
-die "$device: no such file\n" unless (-e $device);
-
-my $clearall = defined($opt{'c'}) ? 1 : 0;
-my $retain = defined($opt{'r'}) ? $opt{'r'} : -1;
-my $quiet = defined($opt{'q'}) ? 1 : 0;
-my $verbose = defined($opt{'v'}) ? 1 : 0;
-my $nagfirst = defined($opt{'f'}) ? $opt{'f'} : 0;
-my $naglast = defined($opt{'l'}) ? $opt{'l'} : 0;
-
-#
-# "clearall" means clear everything barring the final AG.
-# "retain" means clearall and retain a specified amount in the
-# second-from-last AG as well (value is the number of bytes).
-# [NB: retain with a value of zero is now the same as clearall].
-#
-if ($retain >= 0) {
- $clearall = 1;
-}
-
-sub xfs_db {
- my $xfsdb = 'xfs_db -x';
- my %hash;
-
- foreach (@_) {
- $xfsdb .= ' -c ' . $_;
- }
- print $xfsdb, ' ', $device, "\n" if ($verbose);
-
- die unless open(DB, "$xfsdb $device 2>/dev/null |");
- while (<DB>) {
- if (/^(\S+) = (.*)$/) {
- print if ($verbose);
- $hash{$1} = $2;
- }
- }
- return %hash;
-}
-
-
-#
-# Stage 1: Get control information from the superblock
-#
-
-my @sbprint = ( '"print fdblocks"', '"print agcount"', '"print blocksize"' );
-my @agffree = ( '"print freeblks"' );
-
-my %sb = xfs_db 'sb', @sbprint;
-print "=== Initially ", $sb{'fdblocks'}, " blocks free across ",
- $sb{'agcount'}, " AGs\n" unless $quiet;
-if ($clearall && ($nagfirst || $naglast)) {
- print STDERR " o Clearall/retain specified with first/last AG\n";
- exit(1);
-}
-if ($nagfirst >= $sb{'agcount'}) {
- print STDERR " o First AG number is too large\n";
- exit(1);
-}
-if ($naglast >= $sb{'agcount'}) {
- print STDERR " o Last AG number is too large\n";
- exit(1);
-}
-if ($naglast - $nagfirst < 0) {
- print STDERR " o No AGs to clear\n";
- exit(1);
-}
-if ($clearall) {
- $naglast = $sb{'agcount'} - 2;
- if ($retain > 0) {
- my %check;
-
- $naglast--;
- $retain /= $sb{'blocksize'}; # convert to fsblocks
- %check = xfs_db "'agf $naglast'", @agffree;
- if ($check{'freeblks'} < $retain) {
- print STDERR " o Insufficient space to retain\n";
- exit(1);
- }
- }
-}
-
-
-#
-# Stage 2: Wipe out all completely masked allocation groups.
-#
-
-my @agfprint = ( '"print freeblks"', '"print flcount"' );
-my @agfcommands = ( '"write freeblks 0"',
- '"write longest 0"', '"write flcount 0"',
- '"write bnolevel 1"', '"write cntlevel 1"',
- '"write flfirst 0"', '"write fllast 0"' );
-my @bnoprint = ( '"addr bnoroot"', '"print numrecs"' );
-my @bnocommands = ( '"addr bnoroot"', '"write numrecs 0"',
- '"write leftsib -1"', '"write rightsib -1"' );
-my @cntprint = ( '"addr cntroot"', '"print numrecs"' );
-my @cntcommands = ( '"addr cntroot"', '"write numrecs 0"',
- '"write leftsib -1"', '"write rightsib -1"' );
-
-print "=== Wiping ", $naglast - $nagfirst + 1,
- " AGs starting from AG #", $nagfirst, "\n" unless $quiet;
-
-my $ag = $nagfirst;
-while ($ag <= $naglast) {
- print " o AG#", $ag, " AGF fields\n" unless $quiet;
-
- my %agf = xfs_db "'agf $ag'", @agfprint;
- xfs_db "'agf $ag'", @agfcommands;
-
- my $blockcnt = $agf{'freeblks'} + $agf{'flcount'};
- $sb{'fdblocks'} -= $blockcnt;
- print " cleared ", $blockcnt, " blocks from AG#", $ag, "\n"
- unless $quiet;
-
- my %btree = xfs_db "'agf $ag'", @bnoprint;
- xfs_db "'agf $ag'", @bnocommands, "'agf $ag'", @cntcommands;
- print " cleared ", $btree{'numrecs'}, " BNO/CNT btree recs in AG#",
- $ag, "\n" unless $quiet;
-
- $ag++;
-}
-
-
-#
-# Stage 3: Wipe out any partially masked allocation group.
-#
-
-if ($retain > 0) {
- print " o AG#", $ag, " AGF fields (partial)\n" unless $quiet;
-
- my %ragf = xfs_db "'agf $ag'", '"print freeblks"',
- '"addr bnoroot"', '"print recs[1].startblock"';
- my $maskblks = $ragf{'freeblks'} - $retain;
- my $newstart = $ragf{'recs[1].startblock'} + $maskblks;
- xfs_db "'agf $ag'",
- "'write freeblks $retain'", "'write longest $retain'",
- "'agf $ag'", '"addr bnoroot"',
- "'write recs[1].startblock $newstart'",
- "'write recs[1].blockcount $retain'",
- "'agf $ag'", '"addr cntroot"',
- "'write recs[1].startblock $newstart'",
- "'write recs[1].blockcount $retain'";
-
- $sb{'fdblocks'} -= $maskblks;
- print " cleared ", $maskblks, " blocks from AG#", $ag, "\n"
- unless $quiet;
-}
-
-print "=== Updating final freespace count, ", $sb{'fdblocks'}, " blocks\n"
- unless $quiet;
-xfs_db "'sb 0'", "'write fdblocks $sb{'fdblocks'}'"
deleted file mode 100755
@@ -1,178 +0,0 @@
-#!/usr/bin/perl -w
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved.
-#
-# use db to try to traverse the entire filesystem starting at the root
-#
-my $device;
-my $rootino;
-my $agcount;
-my $versionnum;
-my $dir_version;
-my @dir_inodes;
-my @bmap_blocks;
-my @block_inodes;
-my $mode;
-
-sub db($)
-{
- my ($args)=@_;
- my ($ret);
-
- $ret=`xfs_db -r $args $device 2> /dev/null`;
- die "ERROR executing xfs_db -r $args $device" if ($?);
-
- return $ret;
-}
-
-sub fmt($)
-{
- my ($text)=@_;
- my $c=0;
- print " ";
- foreach (split("\n",$text)) {
- s/^core\.//;
-
- if ($c+length($_) >= 70) {
- $c=0;
- print ",\n ";
- }
- if ($c) {
- print ", ";
- $c+=2;
- }
- print "$_";
- $c+=length($_)+2;
- }
- print "\n";
-}
-
-sub inode($)
-{
- my ($num)=@_;
- my ($t);
-
- @dir_inodes=();
-
- $t=db("-c \"inode $num\" -c \"print\"");
- print " *** Inode $num\n";
- fmt($t);
-
- ($mode)= $t=~ /^core.mode = (\d+)$/m;
-
- if ($t=~ /a\.bmx/m) {
- bmap("inode $num","attr");
- foreach (@bmap_blocks) {
- attr_block($_);
- }
- }
- if (eval "$mode & 040000") {
- if ( $t=~ /sfdir/m) {
- while ($t=~ /inumber(?:\.i[48])? = (\d+)$/mg) {
- push(@dir_inodes,$1);
- }
- }
- if ( $t=~ /u\.bmx/m) {
- bmap("inode $num","dir");
- foreach (@bmap_blocks) {
- dir_block($_);
- push(@dir_inodes,@block_inodes);
- }
- }
- } else {
- bmap("inode $num","file") if ( $t=~ /u\.bmx/m);
- }
-}
-
-sub bmap($$)
-{
- my ($cmd,$type)=@_;
- my ($t);
-
- @bmap_blocks=();
-
- $flag=($type eq "attr")?"-a":"";
-
- $t=db("-c \"$cmd\" -c \"bmap $flag\"");
- print " *** bmap $type $cmd\n";
- fmt($t);
-
- if ($type eq "dir" || $type eq "attr") {
- while ($t=~ /startblock (\d+) \(.+\) count (\d+)/mg) {
- for ($b=$1;$b<$1+$2;$b++) {
- push(@bmap_blocks,$b);
- }
- }
- }
-}
-
-sub dir_block($)
-{
- my ($num)=@_;
- my ($t);
-
- @block_inodes=();
-
- $type=($dir_version==2)?"dir2":"dir";
-
- $t=db("-c \"fsblock $num\" -c \"type $type\" -c \"print\"");
- print " *** $type block $num\n";
- # need to drop . and ..
- ($self)= $t=~ /\[(\d+)\].name = \"\.\"/m;
- ($parent)= $t=~ /\[(\d+)\].name = \"\.\.\"/m;
- fmt($t);
-
-
- while ($t=~ /\[(\d+)\].inumber = (\d+)/mg) {
- next if (defined $self && $1 == $self);
- next if (defined $parent && $1 == $parent);
- push(@block_inodes, $2);
- }
-}
-
-sub attr_block($)
-{
- my ($num)=@_;
- my ($t);
-
- $t=db("-c \"fsblock $num\" -c \"type attr\" -c \"print\"");
- print " *** attr block $num\n";
-
- fmt($t);
-}
-
-sub sb($)
-{
- my ($num)=@_;
- my ($t);
-
- $t=db("-c \"sb $num\" -c \"print\"");
- print " *** SB $num\n";
- fmt($t);
-
- ($rootino)= $t=~ /^rootino = (\d+)$/m;
- ($agcount)= $t=~ /^agcount = (\d+)$/m;
- ($versionnum)= $t=~ /^versionnum = (0x[\da-f]+)$/m;
- $dir_version = (eval "$versionnum & 0x2000")?2:1;
-}
-
-die "Usage: $0 <XFS device>\n" unless (@ARGV == 1);
-
-$device=shift @ARGV;
-die "can't read $device\n" unless (-r $device);
-die "$device is not a block device\n" unless (-b _);
-
-chomp($HOST = `hostname -s`);
-
-print "*** db-walk host $HOST device $device\n";
-
-sb(0);
-for ($ag=1;$ag<$agcount;$ag++) {
- sb($ag);
-}
-
-@inodes=($rootino);
-while ($_ = shift @inodes) {
- inode($_);
- push(@inodes,@dir_inodes);
-}
deleted file mode 100755
@@ -1,85 +0,0 @@
-#!/usr/bin/perl -w
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved.
-#
-# traverse the entire filesystem dumping info.
-#
-use MD5;
-use Getopt::Std;
-
-my %opt;
-
-sub scan($)
-{
- my ($file)=@_;
- my ($md5)=new MD5;
- my (@stat);
-
- unless (@stat=lstat("$file")) {
- printf("%-" . ($opt{v}?65:32) . "s $file\n", "!!! could not lstat");
- return;
- }
-
- $stat[0]=$stat[8]=""; # wipe the device and access time
- $md5->reset;
- $md5->add(join(" ",@stat));
-
- print join(" ",@stat), "\n";
-
- if ($opt{v}) {
- print $md5->hexdigest . " ";
- $md5->reset;
- }
-
- if (-l "$file") {
- if (!defined($link = readlink $file)) {
- printf("%-32s $file\n", "!!! could not readlink");
- return;
- }
- $md5->add($link);
- } elsif (-f "$file") {
- if (!open(FILE, "$file")) {
- printf("%-32s $file\n", "!!! could not read");
- return;
- }
- $md5->addfile(FILE);
- close (FILE);
- }
- print $md5->hexdigest . " $file\n";
-}
-
-getopts('vs', \%opt);
-
-die "Usage: $0 <dir>\n" unless (@ARGV == 1);
-
-$dir=shift @ARGV;
-die "can't read $dir\n" unless (-r $dir);
-die "$dir is not a directory\n" unless (-d _);
-
-chomp($HOST = `hostname -s`);
-
-print "*** fs-walk host $HOST dir $dir\n";
-
-@todo=$dir;
-while ($dir = shift @todo) {
- scan($dir);
- unless (opendir(DIR,$dir)) {
- printf("%-" . ($opt{v}?65:32) . "s $dir\n", "!!! could not opendir");
- next;
- }
- unless (@all=readdir(DIR)) {
- printf("%-" . ($opt{v}?65:32) . "s $dir\n", "!!! could not readdir");
- next;
- }
- closedir(DIR);
- @dirs=grep(-d "$dir/$_" && !-l "$dir/$_", @all);
- foreach (@all) {
- next if /^\.\.?$/;
- scan("$dir/$_");
- }
-
- foreach (grep(!/^\.\.?$/, @dirs)) {
- push (@todo,"$dir/$_");
- }
-}
-
deleted file mode 100755
@@ -1,101 +0,0 @@
-#!/usr/sbin/perl
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (c) 2001 Silicon Graphics, Inc. All Rights Reserved.
-#
-sub setup()
-{
- $PATH="$PATH:/usr/local/bin/ptools:/sbin:/usr/sbin";
- $DISPLAY="clouds:0";
-
- if ("$HOST" eq "bruce") {
- $TOOLS="/home/dxm/isms/slinx-xfs/cmd/xfs/tools";
- $SCRATCH_DEV="/dev/sdf1";
- $SCRATCH_MNT="/mnt/xfs3";
- $MKFS="/sbin/mkfs -t xfs -f";
- $SUDO="/home/dxm/su -c";
- $MOUNT="/bin/mount -t xfs";
- $UMOUNT="/bin/umount";
- $MKFS_EXTRA="-f";
- } elsif ("$HOST" eq "whack") {
- $TOOLS="/hosts/snort/build1/people/dxm/isms/slinx-xfs/cmd/xfs/tools";
- $SCRATCH_DEV="/dev/dsk/20000080e5114459/lun2s0/c2p1";
- $SCRATCH_MNT="/lun2";
- $MKFS="/sbin/mkfs";
- $SUDO="su root -c";
- $MOUNT="/sbin/mount -t xfs";
- $UMOUNT="/sbin/umount";
- $MKFS_EXTRA="";
- } else {
- die "unconfigured host \"$HOST\"\n"
- }
-}
-
-sub run_no_check(@)
-{
- system(@_);
-}
-
-sub run(@)
-{
- system(@_) == 0
- || die "ERROR \"" . join(" ",@_) . "\" returned error\n";
-}
-
-sub run_expect_fail(@)
-{
- system(@_) == 0
- && die "ERROR \"" . join(" ",@_) . "\" returned non-error\n";
-}
-
-sub umount_no_check()
-{
- run_no_check("umount $SCRATCH_DEV");
-}
-
-sub umount()
-{
- run("umount $SCRATCH_DEV");
-}
-
-sub mount($)
-{
- my ($ops)=@_;
- run("mount -t xfs $ops $SCRATCH_DEV $SCRATCH_MNT");
-}
-
-chomp($HOST=`hostname -s`);
-
-die "usage: $ARGV0 <operation> [parameters]\n" unless (scalar(@ARGV));
-print "*** $HOST: Interop started\n";
-print " *** ", join(" ", @ARGV), "\n";
-
-setup();
-
-$op=shift(@ARGV);
-
-umount_no_check();
-
-if ($op eq "init") {
-
- run("mkfs -t xfs $MKFS_EXTRA $SCRATCH_DEV");
-
-} elsif ($op eq "test") {
-
- run("xfs_repair -n $SCRATCH_DEV");
-
-} elsif ($op eq "easy") {
-
- mount("");
- system("mount");
- mkdir("$SCRATCH_MNT/fish",0777);
-
-} elsif ($op eq "check") {
-
- mount("-o ro");
- system("cd $SCRATCH_MNT ; $TOOLS/fs-walk .");
-
-} else {
- die "unknown operation \"$op\"\n";
-}
-
-umount_no_check();