#!/usr/bin/perl
#
# genprepundo.pl
#
# Initialize undo file for Clustered Genezzo
#
#
use strict;
use warnings;
use Getopt::Long;
use Carp;
use Genezzo::Contrib::Clustered::PrepUndo;
use Pod::Usage;
=head1 NAME
genprepundo.pl - Prepare undo file for Clustered Genezzo
=head1 SYNOPSIS
B<genprepundo.pl> [options]
Options:
-help brief help message
-man full documentation
-gnz_home supply a directory for the gnz_home
-undo_filename name of the undo file
-number_of_processes
-undo_blocks_per_process
=head1 OPTIONS
=over 8
=item B<-help>
Print a brief help message and exits.
=item B<-man>
Prints the manual page and exits.
=item B<-gnz_home>
Supply the location for the gnz_home installation. If
specified, it overrides the GNZ_HOME environment variable.
=item B<-undo_filename>
Supply the name of the undo file. If not specified, it
defaults to undo.und for file system devices. It must
be specified for raw devices.
=item B<-number_of_processes>
Specify the maximum number of processes supported by undo.
If not specified defaults to 256.
=item B<-undo_blocks_per_process>
Specify the number of blocks (which list fileno-blockno pairs)
for a process. If not specified defaults to 220.
=back
=head1 DESCRIPTION
Creates or re-initializes undo file under GNZ_HOME. By default
file is named undo.und. File header contains basic information about
all other files in Genezzo installation. genprepundo.pl must
be run whenever a new file is added to the Genezzo installation.
Undo file format is documented in Clustered.pm.
=head1 AUTHOR
Eric Rollins, rollins@acm.org
=head1 COPYRIGHT AND LICENSE
Copyright (c) 2005 Eric Rollins. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Address bug reports and comments to rollins@acm.org
=cut
BEGIN {
my $man = 0;
my $help = 0;
my $init = 0;
my $shutdown = 0;
my $gnz_home = '';
my $undo_filename = '';
my $number_of_processes = 256;
my $undo_blocks_per_process = 220;
GetOptions(
'help|?' => \$help, man => \$man,
'gnz_home=s' => \$gnz_home,
'undo_filename=s' => \$undo_filename,
'number_of_processes=i' => \$number_of_processes,
'undo_blocks_per_process=i' => \$undo_blocks_per_process)
or pod2usage(2);
my $glob_id = "Genezzo Version $Genezzo::GenDBI::VERSION - $Genezzo::GenDBI::RELSTATUS $Genezzo::GenDBI::RELDATE\n\n";
pod2usage(-msg => $glob_id, -exitstatus => 1) if $help;
pod2usage(-msg => $glob_id, -exitstatus => 0, -verbose => 2) if $man;
print "beginning initialization...\n";
Genezzo::Contrib::Clustered::PrepUndo::prepareUndo(
gnz_home => $gnz_home,
undo_filename => $undo_filename,
number_of_processes => $number_of_processes,
undo_blocks_per_process => $undo_blocks_per_process);
}