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

From: Peter Maydell
Date: Fri Dec 28 2018 - 19:12:58 EST

On Fri, 28 Dec 2018 at 23:16, Andreas Dilger <adilger@xxxxxxxxx> wrot
> On Dec 28, 2018, at 4:18 AM, Peter Maydell <peter.maydell@xxxxxxxxxx> wrote:
> > 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.

-- PMM