Messages in this thread | | | Date | Tue, 09 Mar 2010 01:41:36 +0300 | From | Michael Tokarev <> | Subject | Re: aio: compat_ioctl issue? |
| |
Michael Tokarev wrote: > Jeff Moyer wrote: > [] >>>>> I just come across a situation (next in a long row :) >>>>> when on x86, 32bit userspace does not work with 64bit >>>>> kernel. This time this is about aio requests. >> [snip] [] >> Could you maybe print out the values that are passed to io_getevents? > > They were in my first email, here it goes again: > > io_submit: lio_opcode=7 reqprio=0 iov=0x9cd7018{0xf5599000,4096}, niov=1, offset=0 > io_getevents: expected 4096 got -22 (EINVAL) > > This is what gets passed to libaio -- strace here > does not decode the arguments unfortunately. [] > My *guess* is that it handles read/write correctly but > does not properly handle preadv/pwritev (opcode=7 is > IO_CMD_PREADV as far as I can see). That'll explain > my "testcase" with Oracle which does not use preadv.
Actually, looking at the code in fs/compat.c, I don't see where it converts iovecs. Yes it converts iocbs, but for readv/writev it also needs to convert iovecs. Oh well, that expects to be quite painful... :(
> Thanks! > > /mjt > -- > 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/
| |