All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Wysochanski <dwysocha@redhat.com>
To: lvm-devel@redhat.com
Subject: vgremove -f option add
Date: Thu, 23 Aug 2007 16:56:05 -0400	[thread overview]
Message-ID: <1187902565.4547.15.camel@linux-cxyg> (raw)
In-Reply-To: <0JMI00FL0XLWQOB0@mta.telcel.com>

On Thu, 2007-08-09 at 15:44 -0500, jorge alberto garcia gonzalez wrote:
> Yesterday I send this mail, but nobody has answer me: 
> 
>  
> 
>  
> 
> hello,  i write a little patch to add a force (or recursive ?) option
> to vgremove 
> i think  the semantic is better if you call vgremove -f <vg>  than 
> call lvremove <vg> and then vgremove <vg> 
> 
> Example:
> 
> 
> 
> (list lv?s)
> root at cobalto:/usr/local/src/LVM2/tools# lvm lvs
>   LV        VG     Attr   LSize   Origin Snap%  Move Log Copy% 
>   lvprueba1 prueba -wi-a- 128.00M                             
>   lvprueba2 prueba -wi-a- 128.00M                             
>   lvprueba3 prueba -wi-a- 128.00M                             
>   lvprueba4 prueba -wi-a- 128.00M                             
> 
> 
> 
> (delete vg prueba: here is the point )
> root at cobalto:/usr/local/src/LVM2/tools# ./lvm vgremove -f prueba 
>   Logical volume "lvprueba1" successfully removed
>   Logical volume "lvprueba2" successfully removed
>   Logical volume "lvprueba3" successfully removed
>   Logical volume "lvprueba4" successfully removed 
>   Volume group "prueba" successfully removed
> 
> 
> root at cobalto:/usr/local/src/LVM2/tools# ./lvm lvs 
> root at cobalto:/usr/local/src/LVM2/tools# 
> root at cobalto:/usr/local/src/LVM2/tools# ./lvm vgdisplay prueba 
>   Volume group "prueba" not found
> 
> 
> Sorry i dont know the procedure to submit a patch, this is my firt
> time ever a send a patch to any gnu project. 
> 

Thanks for the submission - you did fine.  In the future, just try to be
a little more mindful of the existing coding style.  Also try to avoid
additions of whitespaces, debug code, etc.

I did some cleanup work first and I've attached an updated patch against
the latest code.  Patch was tested against a simple cluster as well as
single node and seems to work fine.  Some sample output in a clustered
environment:

# lvs
  LV       VG         Attr   LSize  Origin Snap%  Move Log Copy% 
  LogVol00 VolGroup00 -wi-ao  5.84G                              
  LogVol01 VolGroup00 -wi-ao  1.03G                              
  lv0      vg0        -wi-a- 96.00M                              
# vgs
  VG         #PV #LV #SN Attr   VSize   VFree  
  VolGroup00   1   2   0 wz--n-   6.91G  32.00M
  vg0          5   1   0 wz--nc 240.00M 144.00M
# vgremove vg0
Do you really want to remove volume group "vg0" with active logical volumes? [y/n]: n
  Volume group "vg0" not removed
# vgremove -f vg0
  Error locking on node rhel4u5-node1: Volume is busy on another node
  Can't get exclusive access to volume "lv0"
# vgremove vg0
Do you really want to remove volume group "vg0" with active logical volumes? [y/n]: y
Do you really want to remove active logical volume "lv0"? [y/n]: y
  Error locking on node rhel4u5-node1: Volume is busy on another node
  Can't get exclusive access to volume "lv0"
# lvchange -an vg0/lv0
# vgremove vg0
Do you really want to remove volume group "vg0" with active logical volumes? [y/n]: y
  Logical volume "lv0" successfully removed
  Volume group "vg0" successfully removed




> Thanks!
> 
> Saludos
> -------------------------------------- 
> Index: commands.h
> ===================================================================
> RCS file: /cvs/lvm2/LVM2/tools/commands.h,v
> retrieving revision 1.98
> diff -u -r1.98 commands.h
> --- commands.h  1 Aug 2007 21:01:06 -0000       1.98
> +++ commands.h  9 Aug 2007 02:28:01 -0000
> @@ -806,6 +806,7 @@
>  xx(vgremove,
>     "Remove volume group(s)",
>     "vgremove\n"
> +   "\t[-f|--force]\n"
>     "\t[-d|--debug]\n" 
>     "\t[-h|--help]\n"
>     "\t[-t|--test]\n"
> @@ -813,7 +814,7 @@
>     "\t[--version]" "\n"
>     "\tVolumeGroupName [VolumeGroupName...]\n",
>  
> -   test_ARG) 
> +   force_ARG,test_ARG)
>  
>  xx(vgrename,
>     "Rename a volume group",
> @@ -827,7 +828,7 @@
>     "\tOldVolumeGroupPath NewVolumeGroupPath |\n"
>     "\tOldVolumeGroupName NewVolumeGroupName\n", 
>  
> -   autobackup_ARG, force_ARG, test_ARG)
> +   autobackup_ARG, test_ARG)
>  
>  xx(vgs,
>     "Display information about volume groups",
> Index: lvm.c
> 
> Index: vgremove.c
> =================================================================== 
> RCS file: /cvs/lvm2/LVM2/tools/vgremove.c,v
> retrieving revision 1.41
> diff -u -r1.41 vgremove.c
> --- vgremove.c  19 Jun 2007 04:36:12 -0000      1.41
> +++ vgremove.c  9 Aug 2007 02:28:04 -0000
> @@ -34,9 +34,13 @@ 
>         if (!vg_check_status(vg, EXPORTED_VG))
>                 return ECMD_FAILED;
>  
> +       /* 
> +        * If there is 1 or more lv print a error
> +        * */
>         if (vg->lv_count) {
>                 log_error("Volume group \"%s\" still contains %d " 
>                           "logical volume(s)", vg_name, vg->lv_count);
> +
>                 return ECMD_FAILED;
>         }
>  
> @@ -84,21 +88,39 @@
>  int vgremove(struct cmd_context *cmd, int argc, char **argv) 
>  {
>         int ret;
> -
> +    
> +
>         if (!argc) {
>                 log_error("Please enter one or more volume group
> paths");
>                 return EINVALID_CMD_LINE;
>         }
> -
> +    //printf("argv= %s \n", argv[0]);
> +    
> +       //printf("hostname = %s \n" , cmd->cmd_line);
> +
> +
> +
> +
>         if (!lock_vol(cmd, ORPHAN, LCK_VG_WRITE)) {
>                 log_error("Can't get lock for orphan PVs"); 
>                 return ECMD_FAILED;
>         }
> -
> +/* check  -f argument  */
> +       if( arg_count(cmd,force_ARG ) ) {
> +               ret=lvremove(cmd,  argc, argv);
> +               if( ret==1 ){
> +               ret = process_each_vg(cmd, argc, argv, 
> +                                                 
> +                                                 LCK_VG_WRITE |
> LCK_NONBLOCK,1,
> +                                                 NULL, &
> vgremove_single); 
> +               }
> +
> +       }
> +       else{
>         ret = process_each_vg(cmd, argc, argv,
>                               LCK_VG_WRITE | LCK_NONBLOCK, 1, 
>                               NULL, &vgremove_single); 
> -
> +       }
>         unlock_vg(cmd, ORPHAN);
>  
>         return ret; 
> 
> 
> 
> -- 

> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: vgremove-f-current.patch
Type: text/x-patch
Size: 3359 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/lvm-devel/attachments/20070823/f9769665/attachment.bin>

  reply	other threads:[~2007-08-23 20:56 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-08-09 20:44 vgremove -f option add jorge alberto garcia gonzalez
2007-08-23 20:56 ` Dave Wysochanski [this message]
2007-08-24 17:01   ` Dave Wysochanski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1187902565.4547.15.camel@linux-cxyg \
    --to=dwysocha@redhat.com \
    --cc=lvm-devel@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.