[linux-lvm] vgcfgrestore bug followup

Jan Niehusmann list039 at gondor.com
Mon Jan 8 00:40:15 UTC 2001


On Mon, Jan 08, 2001 at 01:26:32AM +0100, Holger Grothe wrote:
> > Index: pv_read_all_pv_of_vg.c
> > ===================================================================
> > RCS file: /data/cvs/LVM/tools/lib/pv_read_all_pv_of_vg.c,v
> > retrieving revision 1.3
> > diff -u -1 -b -p -r1.3 pv_read_all_pv_of_vg.c
> > --- pv_read_all_pv_of_vg.c	2000/11/20 02:47:20	1.3
> > +++ pv_read_all_pv_of_vg.c	2000/12/22 23:27:00
> > @@ -103,2 +103,3 @@ int pv_read_all_pv_of_vg ( char *vg_name
> >              pv_this_sav = pv_this;
> > +	    if(np<pv_tmp[p]->pv_number) np=pv_tmp[p]->pv_number;
> >              if ( ( pv_this = realloc ( pv_this,
> > @@ -111,5 +112,4 @@ int pv_read_all_pv_of_vg ( char *vg_name
> >              }
> > -            pv_this[np] = pv_tmp[p];
> > -            pv_this[np+1] = NULL;
> > -            np++;
> > +            pv_this[pv_tmp[p]->pv_number-1] = pv_tmp[p];
> > +            //pv_this[np+1] = NULL; // XXX???
>                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> IMHO the pv_this list has to be terminated by NULL (see next lines of 
> source). Otherwise you may get "seg faults" while running vgscan
> (see. Rik's mail). Replacing the marked line with 'pv_this[np] = NULL;' 
> worked for me.

Yes, that's why I marked this line with XXX ;-). 
I did fix the bug that hit me, but I didn't check if I may have introduced
new bugs.
You are probably right that pv_this[np]=NULL is needed. By the way, 
the realloc can be changed to (np+1)*sizeof(...) instead of (np+2)*sizeof(...).

Jan




More information about the linux-lvm mailing list