Thread (17 messages) flat view 17 messages, 10 authors, 2018-12-30

Re: [Qemu-devel] d_off field in struct dirent and 32-on-64 emulation

From: Andy Lutomirski <luto@kernel.org>
Date: 2018-12-29 16:49:35
Also in: linux-api, linux-fsdevel, lkml, qemu-devel

On Dec 28, 2018, at 6:54 PM, Matthew Wilcox [off-list ref] wrote:
quoted
On Sat, Dec 29, 2018 at 12:12:27AM +0000, Peter Maydell wrote:
On Fri, 28 Dec 2018 at 23:16, Andreas Dilger [off-list ref] wrot
quoted
On Dec 28, 2018, at 4:18 AM, Peter Maydell [off-list ref] wrote:
quoted
The problem is that there is no 32-bit API in some cases
(unless I have misunderstood the kernel code) -- not all
host architectures implement compat syscalls or allow them
to be called from 64-bit processes or implement all the older
syscall variants that had smaller offets. If there was a guaranteed
"this syscall always exists and always gives me 32-bit offsets"
we could use it.
The "32bitapi" mount option would use 32-bit hash for seekdir
and telldir, regardless of what kernel API was used.  That would
just set the FMODE_32BITHASH flag in the file->f_mode for all files.
A mount option wouldn't be much use to QEMU -- we can't tell
our users how to mount their filesystems, which they're
often doing lots of other things with besides running QEMU.
(Otherwise we could just tell them "don't use ext4", which
would also solve the problem :-)) We need something we can
use at the individual-syscall level.
Could you use a prctl to set whether you were running in 32 or 64 bit
mode?  Or do you change which kind of task you're emulating too often
to make this a good idea?

How would this work?  We already have the separate
COMPAT_DEFINE_SYSCALL entries *and* in_compat_syscall(). Now we’d have
a third degree of freedom.

Either the arches people care about should add reasonable ways to
issue 32-bit syscalls from 64-bit mode or there should be an explicit
way to ask for the 32-bit directory offsets.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help