[linux-lvm] lvcreate segfaults

AJ Lewis lewis at sistina.com
Wed Sep 5 20:37:03 UTC 2001


On Wed, Sep 05, 2001 at 01:32:34PM -0500, John Marquart wrote:
> Good afternoon,
> 	I am running LVM 1.0.1rc2 on  2.4.8 kernel ontop of a IBM
> Serverraid 4Mx RAID5 filesystem.  I am trying to create a new lv using
> "lvcreate -n foo -L 4M rootvg" - however that command insists on giving me
> a segfault.  

Here is a patch that should fix this problem.  It has already been applied
to the CVS.  just save this to a file and apply it to the 1.0.1-rc2 source
with the -p0 flag after cd'ing to the 1.0.1-rc2 directory.

Index: tools/lib/liblvm.h
===================================================================
RCS file: /var/cvs/LVM/tools/lib/liblvm.h,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -b -B -r1.26 -r1.27
--- tools/lib/liblvm.h	2001/08/29 13:13:25	1.26
+++ tools/lib/liblvm.h	2001/09/03 08:14:05	1.27
@@ -214,7 +214,7 @@
 int  vg_create_dir_and_group ( vg_t *);
 int  vg_create_dir_and_group_and_nodes ( vg_t *, int);
 void vg_deactivate ( char *);
-inline int vg_extend ( char *, pv_t *, vg_t *);
+int vg_extend ( char *, pv_t *, vg_t *);
 int  vg_free ( vg_t *, int);
 char *vg_name_of_lv ( char *);
 int  vg_remove ( char *);
@@ -222,7 +222,7 @@
 int  vg_read ( char *, vg_t **);
 int  vg_read_from_pv ( char *, vg_t **);
 int  vg_read_with_pv_and_lv ( char *, vg_t **);
-inline int vg_reduce ( char *, pv_t *, vg_t *);
+int vg_reduce ( char *, pv_t *, vg_t *);
 int  vg_remove_dir_and_group_and_nodes ( char *);
 int  vg_set_extendable ( char*);
 void vg_setup_pointers_for_snapshots ( vg_t*);
@@ -317,10 +317,10 @@
 lv_t      *lv_copy_from_disk ( lv_disk_t *);
 lv_disk_t *lv_copy_to_disk ( lv_t *);
 int    lv_count_pe ( pv_t *, int);
-inline int lv_create ( vg_t *, lv_t *, char *);
+int lv_create ( vg_t *, lv_t *, char *);
 int    lv_create_name ( char *, char *, int);
 int    lv_create_node ( lv_t *);
-inline int lv_extend ( vg_t *, lv_t *, char *);
+int lv_extend ( vg_t *, lv_t *, char *);
 int    lv_get_index_by_kdev_t ( vg_t *, kdev_t);
 int    lv_get_index_by_minor ( vg_t *, int);
 int    lv_get_index_by_name ( vg_t *, char *);
@@ -335,9 +335,9 @@
 int    lv_read_COW_table ( vg_t * vg, lv_t * lv);
 int    lv_read_with_pe ( char *, char *, lv_t **);
 int    lv_read_all_lv ( char *, lv_t ***, int);
-inline int lv_reduce ( vg_t *, lv_t *, char *);
+int lv_reduce ( vg_t *, lv_t *, char *);
 int    lv_release ( vg_t *, char *);
-inline int lv_remove ( vg_t *, lv_t *, char *);
+int lv_remove ( vg_t *, lv_t *, char *);
 int    lv_rename ( char *, lv_t *);
 int    lv_setup_for_create ( char *, vg_t **, char *, int *,
                              uint, uint, uint, uint, uint, uint, char **);
Index: tools/lib/lv_create_remove.c
===================================================================
RCS file: /var/cvs/LVM/tools/lib/lv_create_remove.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -B -r1.3 -r1.4
--- tools/lib/lv_create_remove.c	2001/04/24 14:29:21	1.3
+++ tools/lib/lv_create_remove.c	2001/09/03 08:14:05	1.4
@@ -39,12 +39,12 @@
 int lv_create_remove ( vg_t *, lv_t *, char *, int);
 
 
-inline int lv_create ( vg_t *vg, lv_t *lv, char *lv_name) {
+int lv_create ( vg_t *vg, lv_t *lv, char *lv_name) {
    return lv_create_remove ( vg, lv, lv_name, LV_CREATE);
 }
 
 
-inline int lv_remove ( vg_t *vg, lv_t *lv, char *lv_name) {
+int lv_remove ( vg_t *vg, lv_t *lv, char *lv_name) {
    return lv_create_remove ( vg, lv, lv_name, LV_REMOVE);
 }
 
Index: tools/lib/lv_extend_reduce.c
===================================================================
RCS file: /var/cvs/LVM/tools/lib/lv_extend_reduce.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -B -r1.3 -r1.4
--- tools/lib/lv_extend_reduce.c	2001/04/24 14:29:21	1.3
+++ tools/lib/lv_extend_reduce.c	2001/09/03 08:14:05	1.4
@@ -36,15 +36,15 @@
 #include <liblvm.h>
 
 /* internal function */
-inline int lv_extend_reduce ( vg_t *, lv_t *, char *, int);
+int lv_extend_reduce ( vg_t *, lv_t *, char *, int);
 
 
-inline int lv_extend ( vg_t *vg, lv_t *lv, char *lv_name) {
+int lv_extend ( vg_t *vg, lv_t *lv, char *lv_name) {
    return lv_extend_reduce ( vg, lv, lv_name, LV_EXTEND);
 }
 
 
-inline int lv_reduce ( vg_t *vg, lv_t *lv, char *lv_name) {
+int lv_reduce ( vg_t *vg, lv_t *lv, char *lv_name) {
    return lv_extend_reduce ( vg, lv, lv_name, LV_REDUCE);
 }
 
Index: tools/lib/system_id.c
===================================================================
RCS file: /var/cvs/LVM/tools/lib/system_id.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -B -r1.3 -r1.4
--- tools/lib/system_id.c	2001/04/24 14:29:21	1.3
+++ tools/lib/system_id.c	2001/09/03 08:14:05	1.4
@@ -36,7 +36,7 @@
 #include <liblvm.h>
 #include <sys/utsname.h>
 
-inline int system_id_set ( char *system_id) {
+int system_id_set ( char *system_id) {
    int ret = 0;
    struct utsname uts;
 
@@ -52,7 +52,7 @@
 }
 
 
-inline int system_id_set_exported ( char *system_id) {
+int system_id_set_exported ( char *system_id) {
    int ret = 0;
    struct utsname uts;
 
@@ -69,7 +69,7 @@
 }
 
 
-inline int system_id_set_imported ( char *system_id) {
+int system_id_set_imported ( char *system_id) {
    int ret = 0;
 
    debug_enter ( "system_id_set_imported -- CALLED\n");
@@ -84,7 +84,7 @@
 }
 
 
-inline int system_id_check_exported ( char *system_id) {
+int system_id_check_exported ( char *system_id) {
    int ret = UNDEF;
 
    debug_enter ( "system_id_check_exported -- CALLED\n");
@@ -101,7 +101,7 @@
 }
 
 
-inline int system_id_check_imported ( char *system_id) {
+int system_id_check_imported ( char *system_id) {
    int ret = UNDEF;
 
    debug_enter ( "system_id_check_imported -- CALLED\n");
Index: tools/lib/vg_extend_reduce.c
===================================================================
RCS file: /var/cvs/LVM/tools/lib/vg_extend_reduce.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -B -r1.3 -r1.4
--- tools/lib/vg_extend_reduce.c	2001/04/24 14:29:21	1.3
+++ tools/lib/vg_extend_reduce.c	2001/09/03 08:14:05	1.4
@@ -39,12 +39,12 @@
 int vg_extend_reduce ( char *, pv_t *, vg_t *, int);
 
 
-inline int vg_extend ( char *vg_name, pv_t *pv, vg_t *vg) {
+int vg_extend ( char *vg_name, pv_t *pv, vg_t *vg) {
    return vg_extend_reduce ( vg_name, pv, vg, VG_EXTEND);
 }
 
 
-inline int vg_reduce ( char *vg_name, pv_t *pv, vg_t *vg) {
+int vg_reduce ( char *vg_name, pv_t *pv, vg_t *vg) {
    return vg_extend_reduce ( vg_name, pv, vg, VG_REDUCE);
 }
 

Regards,
-- 
AJ Lewis
Sistina Software Inc.                  Voice:  612-638-0500
1313 5th St SE, Suite 111              Fax:    612-638-0500
Minneapolis, MN 55414                  E-Mail: lewis at sistina.com
http://www.sistina.com

Current GPG fingerprint = 60F3 160D C0D5 2C4B 751B  4FF9 6F67 E9BC 44CD DE95

-----Begin Obligatory Humorous Quote----------------------------------------
File not found. Should I fake it? (Y/N)
-----End Obligatory Humorous Quote------------------------------------------
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 232 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/linux-lvm/attachments/20010905/d7e0b07e/attachment.sig>


More information about the linux-lvm mailing list