Re: LVM on md0: raid0_make_request bug: can't convert block acrosschunks or bigger than 64k

From: Karl Vogel
Date: Tue Oct 21 2003 - 11:41:57 EST


> > > ----------- Diffstat output ------------
> > > ./drivers/md/dm-table.c | 5 +++++
> > > 1 files changed, 5 insertions(+)
> > >
> > > diff ./drivers/md/dm-table.c~current~ ./drivers/md/dm-table.c
> > > --- ./drivers/md/dm-table.c~current~ 2003-10-21 10:05:29.000000000 +1000
> > > +++ ./drivers/md/dm-table.c 2003-10-21 10:06:27.000000000 +1000
> > > @@ -489,6 +489,11 @@ int dm_get_device(struct dm_target *ti,
> > > rs->max_sectors =
> > > min_not_zero(rs->max_sectors, q->max_sectors);
> > >
> > > + if (q->merge_bvec_fn)
> > > + rs->max_sectors =
> > > + min_not_zero(rs->max_sectors, PAGE_SIZE>>9);
> > > +
> > > +
> > > rs->max_phys_segments =
> > > min_not_zero(rs->max_phys_segments,
> > > q->max_phys_segments);
> >
> > This will probably work, as long as raid0 can split a one-page request that
> > spans a chunk boundary. I'll be interested to see if this solves Karl's
> > problem.
>
> Good news... it solves the problem with my setup. I was able to copy
> files off the logical volume (did an md5sum compare to make sure I got
> the complete files.)

Forgot to mention that it generates a compiler warning:

CC drivers/md/dm-table.o
drivers/md/dm-table.c: In function `dm_get_device':
drivers/md/dm-table.c:494: warning: comparison of distinct pointer types
lacks a cast

Using:
$ gcc -v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/3.3.1/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --enable-shared --enable-threads=posix
--disable-checking --with-system-zlib --enable-__cxa_atexit
--host=i386-redhat-linux
Thread model: posix
gcc version 3.3.1 20030930 (Red Hat Linux 3.3.1-6)


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/