[linux-lvm] Re: pvcreate dumping core with 2.4.10-pre9

Ed Tomlinson tomlins at cam.org
Sun Sep 16 12:36:57 UTC 2001


On September 15, 2001 10:52 pm, Ed Tomlinson wrote:
> On September 15, 2001 10:07 pm, dwchin at umich.edu wrote:
> > Oh, a couple of details: I'm running RedHat 7.1 (except for the kernel
> > update as mentioned in previous message).  And gdb says that lvcreate is
> > getting a segmentation fault at lv_create_remove.c:42
> >
> > 42      inline int lv_create ( vg_t *vg, lv_t *lv, char *lv_name) {
>
> I suspect this _might_ have something to do with the mix/max changes in
> 2.4.10pre9. In 2.4.10pre Linus changed min/max to use three args - he had
> good reasons to do this.  It created lots of flack.  After days (weeks?) of
> debate a two arg version he accepted was found.  Meanwhile the rest of the
> kernel (and patches like LVM) had adpated to the three arg mix/max.
>
> The jist of the above it to look at the LVM patch generated for 2.4.10pre9
> and change and lines begining with "+" that contain "min(" or "max(" to
> "min_t(" or "max_t(" respectivily.
>
> Suspect then it will work - I am testing this here now.

And it works fine...  Here are the fragraments changed. 
 
+       if (old_lv->lv_stripes < 2) {   /* linear logical volume */
+               end = min_t(uint, old_lv->lv_current_le, new_lv->lv_current_le);
+               for (l = 0; l < end; l++) {

+               new_stripe_size = new_lv->lv_allocated_le / new_lv->lv_stripes;
+               end = min_t(uint, old_stripe_size, new_stripe_size);
+
+               for (i = source = dest = 0; i < new_lv->lv_stripes; i++) {

-       min_blksize = min(blksize_org, blksize_snap);
+       max_blksize = max_t(int, blksize_org, blksize_snap);
+       min_blksize = min_t(int, blksize_org, blksize_snap);
        max_sectors = KIO_MAX_SECTORS * (min_blksize>>9);

-               nr_sectors = min(chunk_size, max_sectors);
+               nr_sectors = min_t(int, chunk_size, max_sectors);
                chunk_size -= nr_sectors;

-       buckets = min(buckets, max_buckets);
+       buckets = min_t(unsigned long, buckets, max_buckets);
        while (buckets & (buckets-1))

Luck.

Ed Tomlinson




More information about the linux-lvm mailing list