2001-09-25 12:49:28 +00:00
/*
2004-03-30 19:35:44 +00:00
* Copyright ( C ) 2001 - 2004 Sistina Software , Inc . All rights reserved .
* Copyright ( C ) 2004 Red Hat , Inc . All rights reserved .
2001-09-25 12:49:28 +00:00
*
2004-03-30 19:35:44 +00:00
* This file is part of LVM2 .
2001-09-25 12:49:28 +00:00
*
2004-03-30 19:35:44 +00:00
* This copyrighted material is made available to anyone wishing to use ,
* modify , copy , or redistribute it subject to the terms and conditions
* of the GNU General Public License v .2 .
2001-09-25 12:49:28 +00:00
*
* You should have received a copy of the GNU General Public License
2004-03-30 19:35:44 +00:00
* along with this program ; if not , write to the Free Software Foundation ,
* Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
2001-09-25 12:49:28 +00:00
*/
# include "tools.h"
2002-12-19 23:25:55 +00:00
static int _pvdisplay_single ( struct cmd_context * cmd , struct volume_group * vg ,
struct physical_volume * pv , void * handle )
2001-09-25 12:49:28 +00:00
{
2002-02-11 21:00:35 +00:00
uint64_t size ;
2001-09-25 12:49:28 +00:00
2001-10-25 14:04:18 +00:00
const char * pv_name = dev_name ( pv - > dev ) ;
2001-09-25 12:49:28 +00:00
2001-10-18 16:55:19 +00:00
if ( ! * pv - > vg_name )
size = pv - > size ;
2001-10-25 14:04:18 +00:00
else
2002-04-24 18:20:51 +00:00
size = ( pv - > pe_count - pv - > pe_alloc_count ) * pv - > pe_size ;
2001-09-25 12:49:28 +00:00
2002-02-11 21:00:35 +00:00
if ( arg_count ( cmd , short_ARG ) ) {
2002-12-12 20:55:49 +00:00
log_print ( " Device \" %s \" has a capacity of %s " , pv_name ,
2004-06-07 15:22:43 +00:00
display_size ( cmd , size , SIZE_SHORT ) ) ;
2003-10-21 22:06:07 +00:00
return ECMD_PROCESSED ;
2001-09-25 12:49:28 +00:00
}
2001-10-25 14:04:18 +00:00
if ( pv - > status & EXPORTED_VG )
2002-02-11 21:00:35 +00:00
log_print ( " Physical volume \" %s \" of volume group \" %s \" "
" is exported " , pv_name , pv - > vg_name ) ;
2001-09-25 12:49:28 +00:00
2002-12-12 20:55:49 +00:00
if ( ! pv - > vg_name )
2002-02-11 21:00:35 +00:00
log_print ( " \" %s \" is a new physical volume of \" %s \" " ,
2004-06-07 15:22:43 +00:00
pv_name , display_size ( cmd , size , SIZE_SHORT ) ) ;
2001-09-25 12:49:28 +00:00
2002-02-11 21:00:35 +00:00
if ( arg_count ( cmd , colon_ARG ) ) {
2001-10-18 16:55:19 +00:00
pvdisplay_colons ( pv ) ;
2003-10-21 22:06:07 +00:00
return ECMD_PROCESSED ;
2001-09-25 12:49:28 +00:00
}
2002-12-12 20:55:49 +00:00
pvdisplay_full ( cmd , pv , handle ) ;
2001-09-25 12:49:28 +00:00
2002-02-11 21:00:35 +00:00
if ( ! arg_count ( cmd , maps_ARG ) )
2003-10-21 22:06:07 +00:00
return ECMD_PROCESSED ;
2001-09-25 12:49:28 +00:00
2004-05-05 18:39:30 +00:00
return ECMD_PROCESSED ;
2002-11-18 14:04:08 +00:00
}
int pvdisplay ( struct cmd_context * cmd , int argc , char * * argv )
{
2002-12-12 20:55:49 +00:00
if ( arg_count ( cmd , columns_ARG ) ) {
if ( arg_count ( cmd , colon_ARG ) | | arg_count ( cmd , maps_ARG ) | |
arg_count ( cmd , short_ARG ) ) {
log_error ( " Incompatible options selected " ) ;
return EINVALID_CMD_LINE ;
}
return pvs ( cmd , argc , argv ) ;
} else if ( arg_count ( cmd , aligned_ARG ) | |
arg_count ( cmd , noheadings_ARG ) | |
arg_count ( cmd , options_ARG ) | |
arg_count ( cmd , separator_ARG ) | |
arg_count ( cmd , sort_ARG ) | | arg_count ( cmd , unbuffered_ARG ) ) {
log_error ( " Incompatible options selected " ) ;
return EINVALID_CMD_LINE ;
}
2002-11-18 14:04:08 +00:00
if ( arg_count ( cmd , colon_ARG ) & & arg_count ( cmd , maps_ARG ) ) {
log_error ( " Option -v not allowed with option -c " ) ;
return EINVALID_CMD_LINE ;
}
2003-10-21 22:06:07 +00:00
return process_each_pv ( cmd , argc , argv , NULL , NULL , _pvdisplay_single ) ;
2001-09-25 12:49:28 +00:00
}