Subject: Re: UBC problems
To: Matthias Drochner <M.Drochner@fz-juelich.de>
From: Chuck Silvers <chuq@chuq.com>
List: tech-kern
Date: 01/15/2005 07:19:08
hi,
On Fri, Jan 14, 2005 at 10:59:59PM +0100, Matthias Drochner wrote:
>
> just two comments:
>
> -I can easily reproduce the problem with a simple patch to
> copyin() on i386, a patch which models the prefetch needed
> by architectures which don't like unaligned memory accesses.
> I'll append it. WARNING: it might cause data corruption.
> So I'd say this is not alpha specific; it is just a question
> of copyout() implementation. (btw, i386 might benefit from
> using an optimized memcpy() within copyin()/copyout())
alpha is the only platform I know of that can't access individual bytes.
I would say that any copyin() that reads from the kernel side that doesn't
have to is broken, so it's only an issue on alpha.
> -I now believe that the best way to deal with this would be to
> have UBC reads just return zero filled pages if the file is
> not backed with real data, and let upper layers (above the
> trap handler) check whether the read is legal. Just commenting
> out the range check in genfs_getpages() isn't enough,
> unfortunately. That's a pretty complex matter...
creating pages for offsets past EOF is to be avoided in general, since
it's pretty nonsensical. I checked in a different fix for this issue,
update uvm_bio.c.
thanks for investigating this.
-Chuck