lkml.org 
[lkml]   [2002]   [Jun]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: PATCH/RFC: fix 2.5.20 ramdisk
On Tue, Jun 04, 2002 at 10:35:25AM +0200, Jens Axboe wrote:
> On Mon, Jun 03 2002, Russell King wrote:
> > 2.5.20 seems to be incapable of executing binaries in a ramdisk-based
> > root filesystem. The ramdisk in question is an ext2fs, with a 1K
> > block size loaded via the compressed ramdisk loader in do_mounts().
> >
> > It appears that, in the case of a 1K block sized filesystem, we attempt
> > to read two 512-byte sectors into a BIO vector. The first one is copied
> > into the first 512 bytes. The second sector, however, is copied over
> > the first 512 bytes. Obviously not what we really want.
>
> Looks good.

Ok, rev. 2, slightly cleaned up:

--- orig/drivers/block/rd.c Wed May 29 21:40:26 2002
+++ linux/drivers/block/rd.c Tue Jun 4 09:44:21 2002
@@ -144,6 +144,7 @@
{
struct address_space * mapping;
unsigned long index;
+ unsigned int vec_offset;
int offset, size, err;

err = 0;
@@ -152,6 +153,7 @@
index = sector >> (PAGE_CACHE_SHIFT - 9);
offset = (sector << 9) & ~PAGE_CACHE_MASK;
size = vec->bv_len;
+ vec_offset = vec->bv_offset;

do {
int count;
@@ -186,13 +188,14 @@
if (rw == READ) {
src = kmap(page);
src += offset;
- dst = kmap(vec->bv_page) + vec->bv_offset;
+ dst = kmap(vec->bv_page) + vec_offset;
} else {
dst = kmap(page);
dst += offset;
- src = kmap(vec->bv_page) + vec->bv_offset;
+ src = kmap(vec->bv_page) + vec_offset;
}
offset = 0;
+ vec_offset += count;

memcpy(dst, src, count);

--
Russell King (rmk@arm.linux.org.uk) The developer of ARM Linux
http://www.arm.linux.org.uk/personal/aboutme.html

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

\
 
 \ /
  Last update: 2005-03-22 13:26    [W:0.049 / U:1.440 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site