2002-01-15 18:17:57 +00:00
/*
2008-01-30 14:00:02 +00:00
* Copyright ( C ) 2001 - 2004 Sistina Software , Inc . All rights reserved .
2009-05-13 13:02:52 +00:00
* Copyright ( C ) 2004 - 2009 Red Hat , Inc . All rights reserved .
2002-01-15 18:17:57 +00:00
*
2004-03-30 19:35:44 +00:00
* This file is part of LVM2 .
*
* This copyrighted material is made available to anyone wishing to use ,
* modify , copy , or redistribute it subject to the terms and conditions
2007-08-20 20:55:30 +00:00
* of the GNU Lesser General Public License v .2 .1 .
2004-03-30 19:35:44 +00:00
*
2007-08-20 20:55:30 +00:00
* You should have received a copy of the GNU Lesser General Public License
2004-03-30 19:35:44 +00:00
* along with this program ; if not , write to the Free Software Foundation ,
2016-01-21 11:49:46 +01:00
* Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA
2002-01-15 18:17:57 +00:00
*/
# include "tools.h"
2002-02-11 20:50:53 +00:00
int vgcfgrestore ( struct cmd_context * cmd , int argc , char * * argv )
2002-01-15 18:17:57 +00:00
{
2011-02-18 14:47:28 +00:00
const char * vg_name = NULL ;
2003-01-17 21:02:04 +00:00
2007-06-08 22:38:48 +00:00
if ( argc = = 1 ) {
vg_name = skip_dev_dir ( cmd , argv [ 0 ] , NULL ) ;
if ( ! validate_name ( vg_name ) ) {
log_error ( " Volume group name \" %s \" is invalid " , vg_name ) ;
2014-05-21 23:11:15 +02:00
return EINVALID_CMD_LINE ;
2007-06-08 22:38:48 +00:00
}
} else if ( ! ( arg_count ( cmd , list_ARG ) & & arg_count ( cmd , file_ARG ) ) ) {
2009-07-15 20:02:46 +00:00
log_error ( " Please specify a *single* volume group to restore. " ) ;
2014-05-21 23:11:15 +02:00
return EINVALID_CMD_LINE ;
2002-01-15 18:17:57 +00:00
}
2002-02-11 11:43:17 +00:00
/*
* FIXME : overloading the - l arg for now to display a
* list of archive files for a particular vg
*/
2002-02-11 21:00:35 +00:00
if ( arg_count ( cmd , list_ARG ) ) {
2007-06-08 22:38:48 +00:00
if ( ! ( arg_count ( cmd , file_ARG ) ?
2009-09-14 22:47:49 +00:00
archive_display_file ( cmd ,
arg_str_value ( cmd , file_ARG , " " ) ) :
2013-07-01 11:27:22 +02:00
archive_display ( cmd , vg_name ) ) )
return_ECMD_FAILED ;
2003-10-21 22:06:07 +00:00
return ECMD_PROCESSED ;
2002-02-11 11:43:17 +00:00
}
2012-02-23 13:11:07 +00:00
lvmcache_seed_infos_from_lvmetad ( cmd ) ;
2013-03-17 21:29:58 +01:00
if ( ! lock_vol ( cmd , vg_name , LCK_VG_WRITE , NULL ) ) {
2003-01-17 21:02:04 +00:00
log_error ( " Unable to lock volume group %s " , vg_name ) ;
2002-11-18 14:04:08 +00:00
return ECMD_FAILED ;
}
2013-03-17 21:29:58 +01:00
if ( ! lock_vol ( cmd , VG_ORPHANS , LCK_VG_WRITE , NULL ) ) {
2009-07-10 20:10:18 +00:00
log_error ( " Unable to lock orphans " ) ;
2009-08-13 17:16:38 +00:00
unlock_vg ( cmd , vg_name ) ;
2009-07-10 20:10:18 +00:00
return ECMD_FAILED ;
}
2009-10-16 17:41:49 +00:00
cmd - > handles_unknown_segments = 1 ;
2002-02-11 21:00:35 +00:00
if ( ! ( arg_count ( cmd , file_ARG ) ?
2003-01-17 21:02:04 +00:00
backup_restore_from_file ( cmd , vg_name ,
2012-11-26 23:45:35 +01:00
arg_str_value ( cmd , file_ARG , " " ) ,
arg_count ( cmd , force_long_ARG ) ) :
backup_restore ( cmd , vg_name , arg_count ( cmd , force_long_ARG ) ) ) ) {
2007-11-02 20:40:05 +00:00
unlock_vg ( cmd , VG_ORPHANS ) ;
2009-08-13 17:16:38 +00:00
unlock_vg ( cmd , vg_name ) ;
2009-07-15 20:02:46 +00:00
log_error ( " Restore failed. " ) ;
2002-01-15 18:17:57 +00:00
return ECMD_FAILED ;
}
config: add silent mode
Accept -q as the short form of --quiet.
Suppress non-essential standard output if -q is given twice.
Treat log/silent in lvm.conf as equivalent to -qq.
Review all log_print messages and change some to
log_print_unless_silent.
When silent, the following commands still produce output:
dumpconfig, lvdisplay, lvmdiskscan, lvs, pvck, pvdisplay,
pvs, version, vgcfgrestore -l, vgdisplay, vgs.
[Needs checking.]
Non-essential messages are shifted from log level 4 to log level 5
for syslog and lvm2_log_fn purposes.
2012-08-25 20:35:48 +01:00
log_print_unless_silent ( " Restored volume group %s " , vg_name ) ;
2003-01-17 21:02:04 +00:00
2007-11-02 20:40:05 +00:00
unlock_vg ( cmd , VG_ORPHANS ) ;
2009-07-10 20:10:18 +00:00
unlock_vg ( cmd , vg_name ) ;
2003-10-21 22:06:07 +00:00
return ECMD_PROCESSED ;
2002-01-15 18:17:57 +00:00
}