Thread (13 messages) flat view 13 messages, 5 authors, 2014-02-10

Re: [PATCH 1/2] mm/vmalloc: export is_vmalloc_or_module_addr

From: Dave Kleikamp <hidden>
Date: 2014-02-10 14:41:41
Also in: lkml

On 02/10/2014 06:10 AM, Mel Gorman wrote:
On Sat, Feb 08, 2014 at 11:45:53AM -0800, Linus Torvalds wrote:
quoted
On Sat, Feb 8, 2014 at 11:12 AM, Richard Yao [off-list ref] wrote:
quoted
9p-virtio needs is_vmalloc_or_module_addr exported before a patch can be
merged to prevent the virtio zero-copy routines from triggering a
hypervisor page fault when loading kernel modules:

https://groups.google.com/forum/#!topic/linux.kernel/eRR7AyLE29Y

Without this export, the kernel build breaks with that patch applied and
CONFIG_NET_9P_VIRTIO=m. With this export in place, all is well.
I absolutely *detest* this patch.

Not so much because is_vmalloc_or_module_addr() should never be used,
but because the particular use in question is pure and utter garbage.

There are valid reasons to use "is_vmalloc_or_module_addr()", but
those are along the lines of drivers/char/mem.c, which says "return
-ENXIO for this crap".

And btw, that horrid crap called "kmap_to_page()" needs to die too.
When is it *ever* valid to use a kmap'ed page for IO? Here's a clue:
never.

<SNIP>

Those *disgusting* get_kernel_page[s]() functions came with a
commentary about "The initial user is expected to be NFS.." and that
is still the *only* user. The fact that *everybody* else has been able
to avoid that crap should tell us something.
kmap_to_page, get_kernel_page and the NFS user for it are already scheduled
for death. Dave Kleikamp has been working on a series "Issue O_DIRECT aio
using bio_vec" that replaces what NFS currently does with something far
more sane. The series does not remove the helpers on top, probably because
of the 9P use of it, but if that was changed then the helpers would finally
die. I'm not sure why Dave's series never got merged so added him to the
cc to find out.
The patchset I submitted was too ugly to live. Linus and Al Viro both
had numerous issues with the implementation, but not the overall concept.

Al has the same idea for a io-vector container that can hold either an
iovec or a kernel vector and is starting to work on his own
implementation. Once he settles on the particulars of new
aio_write/aio_read methods, I should be able to get the rest of my
patchset to fall into line with it.

http://www.spinics.net/lists/linux-fsdevel/msg71938.html

Shaggy
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help