[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