[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