2001-09-25 16:49:28 +04:00
/*
* Copyright ( C ) 2001 Sistina Software
*
* This LVM library is free software ; you can redistribute it and / or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation ; either
* version 2 of the License , or ( at your option ) any later version .
*
* This LVM library 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
* Library General Public License for more details .
*
* You should have received a copy of the GNU Library General Public
* License along with this LVM library ; if not , write to the Free
* Software Foundation , Inc . , 59 Temple Place - Suite 330 , Boston ,
* MA 02111 - 1307 , USA
*
*/
# include "lvm_user.h"
static int _autobackup = 1 ;
int autobackup_set ( )
{
2001-10-02 21:09:05 +04:00
return _autobackup ;
2001-09-25 16:49:28 +04:00
}
int init_autobackup ( )
{
2001-10-02 21:09:05 +04:00
char * lvm_autobackup ;
2001-09-25 16:49:28 +04:00
2001-10-05 02:53:37 +04:00
if ( arg_count ( autobackup_ARG ) ) {
2001-10-02 21:09:05 +04:00
_autobackup = strcmp ( arg_str_value ( autobackup_ARG , " y " ) , " n " ) ;
2001-10-05 02:53:37 +04:00
return 0 ;
}
_autobackup = 1 ; /* default */
lvm_autobackup = getenv ( " LVM_AUTOBACKUP " ) ;
if ( ! lvm_autobackup )
return 0 ;
2001-09-25 16:49:28 +04:00
2001-10-05 02:53:37 +04:00
log_print ( " using environment variable LVM_AUTOBACKUP "
" to set option A " ) ;
if ( ! strcasecmp ( lvm_autobackup , " no " ) )
_autobackup = 0 ;
else if ( strcasecmp ( lvm_autobackup , " yes " ) ) {
log_error ( " environment variable LVM_AUTOBACKUP has "
" invalid value \" %s \" ! " , lvm_autobackup ) ;
return - 1 ;
2001-09-25 16:49:28 +04:00
}
2001-10-02 21:09:05 +04:00
return 0 ;
2001-09-25 16:49:28 +04:00
}
int do_autobackup ( char * vg_name , vg_t * vg )
{
2001-10-02 21:09:05 +04:00
int ret ;
2001-09-25 16:49:28 +04:00
2001-10-02 21:09:05 +04:00
log_verbose ( " Changing lvmtab " ) ;
if ( ( ret = vg_cfgbackup ( vg_name , LVMTAB_DIR , vg ) ) ) {
log_error ( " \" %s \" writing \" %s \" " , lvm_error ( ret ) , LVMTAB ) ;
return LVM_E_VG_CFGBACKUP ;
}
2001-09-25 16:49:28 +04:00
2001-10-02 21:09:05 +04:00
if ( ! autobackup_set ( ) ) {
log_print
( " WARNING: You don't have an automatic backup of \" %s \" " ,
vg_name ) ;
return 0 ;
}
2001-09-25 16:49:28 +04:00
2001-10-02 21:09:05 +04:00
log_print ( " Creating automatic backup of volume group \" %s \" " , vg_name ) ;
if ( ( ret = vg_cfgbackup ( vg_name , VG_BACKUP_DIR , vg ) ) ) {
log_error ( " \" %s \" writing VG backup of \" %s \" " , lvm_error ( ret ) ,
vg_name ) ;
return LVM_E_VG_CFGBACKUP ;
}
2001-09-25 16:49:28 +04:00
2001-10-02 21:09:05 +04:00
return 0 ;
2001-09-25 16:49:28 +04:00
}