[lvm-devel] LVM2/lib/metadata lv_manip.c

jorge alberto garcia gonzalez jorge.garcia.gonzalez at gmail.com
Thu Aug 9 02:52:58 UTC 2007


hello,  i write a little patch that 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:

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

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!

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;

-- 
No vivas solo por que respiras, vive para cumplir tus sue~os
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/lvm-devel/attachments/20070809/6722d230/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: vgremove-force_option.diff
Type: text/x-patch
Size: 11367 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/lvm-devel/attachments/20070809/6722d230/attachment.bin>


More information about the lvm-devel mailing list