[packages/amanda] - added STABLE-MOUNTPOINT option for lvm snapshots
baggins
baggins at pld-linux.org
Wed Aug 28 19:34:36 CEST 2013
commit 3275a137df52a40ef292fc5be7f2d07966328e65
Author: Jan Rękorajski <baggins at pld-linux.org>
Date: Wed Aug 28 19:13:27 2013 +0200
- added STABLE-MOUNTPOINT option for lvm snapshots
amlvm-snapshot.pl | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
---
diff --git a/amlvm-snapshot.pl b/amlvm-snapshot.pl
index 2ee2128..afca14f 100644
--- a/amlvm-snapshot.pl
+++ b/amlvm-snapshot.pl
@@ -25,6 +25,7 @@
# LVREMOVE-PATH
# VGDISPLAY-PATH
#
+# STABLE-MOUNTPOINT
# SUDO
#
use lib '@@PERL_VENDORARCH@@';
@@ -42,14 +43,16 @@ use Amanda::Constants;
use Config;
use File::Temp qw(tempdir);
+use File::Path qw(make_path);
use IPC::Open3;
use Symbol;
+use Digest::MD5 qw(md5_hex);
sub new {
my $class = shift;
my ($execute_where, $config, $host, $disk, $device, $level, $index,
$message, $collection, $record, $snapsize, $lvcreate, $lvdisplay,
- $lvremove, $vgdisplay, $blkid, $sudo) = @_;
+ $lvremove, $vgdisplay, $blkid, $stablemount, $sudo) = @_;
my $self = $class->SUPER::new($execute_where, $config);
$self->{execute_where} = $execute_where;
@@ -71,6 +74,7 @@ sub new {
$self->{vgdisplay} = $vgdisplay;
$self->{blkid} = $blkid;
+ $self->{stablemount} = $stablemount;
$self->{sudo} = $sudo;
$self->{volume_group} = undef;
@@ -202,7 +206,12 @@ sub mount_snapshot {
}
# create a temporary mount point and mount the snapshot volume
- $self->{directory} = tempdir(CLEANUP => 0);
+ if ($self->{stablemount}) {
+ $self->{directory} = File::Spec->tmpdir . "/" . md5_hex($self->{disk});
+ make_path($self->{directory});
+ } else {
+ $self->{directory} = tempdir(CLEANUP => 0);
+ }
my $snapshot_device = $self->get_snap_device(0);
$self->execute(1,
"mount -o ", join(",", @options),
@@ -454,7 +463,7 @@ package main;
sub usage {
print <<EOF;
-Usage: amlvm-snapshot <command> --execute-where=client --config=<config> --host=<host> --disk=<disk> --device=<device> --level=<level> --index=<yes|no> --message=<text> --collection=<no> --record=<yes|no> --snapshot-size=<lvm snapshot size> --lvcreate-path=<path> --lvdisplay-path=<path> --lvremove-path=<path> --vgdisplay-path=<path> --blkid-path=<path> --sudo=<0|1>.
+Usage: amlvm-snapshot <command> --execute-where=client --config=<config> --host=<host> --disk=<disk> --device=<device> --level=<level> --index=<yes|no> --message=<text> --collection=<no> --record=<yes|no> --snapshot-size=<lvm snapshot size> --lvcreate-path=<path> --lvdisplay-path=<path> --lvremove-path=<path> --vgdisplay-path=<path> --blkid-path=<path> --stable-mountpoint=<0|1> --sudo=<0|1>.
EOF
exit(1);
}
@@ -476,6 +485,7 @@ my $opt_lvdisplay;
my $opt_lvremove;
my $opt_vgdisplay;
my $opt_blkid;
+my $opt_stablemount;
my $opt_sudo;
Getopt::Long::Configure(qw{bundling});
@@ -496,6 +506,7 @@ GetOptions(
'lvremove-path=s' => \$opt_lvremove,
'vgdisplay-path=s' => \$opt_vgdisplay,
'blkid=s' => \$opt_blkid,
+ 'stable-mountpoint=s' => \$opt_stablemount,
'sudo=s' => \$opt_sudo,
) or usage();
@@ -505,7 +516,7 @@ $ENV{'PATH'} = "/sbin:/usr/sbin:$ENV{'PATH'}:/usr/local/sbin";
my $script = Amanda::Script::Amlvm_snapshot->new($opt_execute_where,
$opt_config, $opt_host, $opt_disk, $opt_device, \@opt_level, $opt_index,
$opt_message, $opt_collection, $opt_record, $opt_snapsize, $opt_lvcreate,
- $opt_lvdisplay, $opt_lvremove, $opt_vgdisplay, $opt_blkid, $opt_sudo);
+ $opt_lvdisplay, $opt_lvremove, $opt_vgdisplay, $opt_blkid, $opt_stablemount, $opt_sudo);
$script->do($ARGV[0]);
# vim: set et sts=4 sw=4 :
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/amanda.git/commitdiff/67942b4cceb9a19f7fce5a737780c72295098c10
More information about the pld-cvs-commit
mailing list