--- rpms/e-smith-backup/sme10/e-smith-backup-2.6.0-bz9127-add_lock_feature.patch 2017/04/26 16:33:46 1.1 +++ rpms/e-smith-backup/sme10/e-smith-backup-2.6.0-bz9127-add_lock_feature.patch 2017/07/18 14:37:14 1.2 @@ -177,3 +177,70 @@ diff -Nur e-smith-backup-2.6.0/root/usr/ $console->message_page ( title => gettext('Backup complete'), +diff -Nur e-smith-backup-2.6.0/root/sbin/e-smith/do_backupwk e-smith-backup-2.6.0/root/sbin/e-smith/do_backupwk +--- e-smith-backup-2.6.0/root/sbin/e-smith/do_backupwk 2013-02-13 16:21:37.000000000 +0100 ++++ e-smith-backup-2.6.0/root/sbin/e-smith/do_backupwk 2017-04-12 13:54:15.000000000 +0200 +@@ -21,14 +21,27 @@ + use strict; + use esmith::ConfigDB; + use esmith::BackupHistoryDB; ++use esmith::Backup; ++#use esmith::lockfile; ++ ++# lock file.. see bug 9127 ++my $backup_lock; + + $ENV{PATH} = "/sbin/e-smith:/sbin:/bin:/usr/bin"; + + my $conf = esmith::ConfigDB->open || die("Could not open config db\n"); ++ ++# set lock.. if not, exit ++unless (SetLock()) { ++ die "Error: failed to create lock file.. is a backup already running?"; ++} ++ + my $backup = $conf->get('backupwk'); + my $status = $backup->prop('status') || 'disabled'; + my $program = $backup->prop('Program') || 'dar'; + ++ ++ + unless ($status eq 'enabled') + { + print "Backup is disabled\n"; +@@ -61,6 +74,8 @@ + $now = time(); + $backup_rec->set_prop('EndEpochTime', "$now"); + $backup_rec->set_prop('Result', "$status"); ++# remove lock ++RemoveLock(); + exit 0; + + sub bad_exit +@@ -71,5 +86,26 @@ + warn("Backup terminated: $phase failed - status: $status\n"); + $backup_rec->set_prop('EndEpochTime', "$now"); + $backup_rec->set_prop('Result', "$phase:$status"); ++ # remove lock ++ RemoveLock(); + return $status / 256; + } ++ ++# subs to set and remove lock on backup ++ ++sub SetLock ++{ ++ print "Setting backup lock file\n"; ++ $backup_lock = esmith::Backup::set_lock; ++ return $backup_lock; ++} ++ ++sub RemoveLock ++{ ++ if (defined($backup_lock)) ++ { ++ print "Removing backup lock file\n"; ++ esmith::Backup::remove_lock($backup_lock); ++ $backup_lock = undef; ++ } ++}