xfs compat_ioctl?

Torsten Kaiser just.for.lkml at googlemail.com
Mon Aug 31 13:14:58 CDT 2009


On Mon, Aug 31, 2009 at 2:30 PM, Christoph Hellwig<hch at infradead.org> wrote:
> On Mon, Aug 31, 2009 at 11:02:51AM +0400, Michael Tokarev wrote:
>> Hello!
>>
>> I tried to resize an xfs filesystem on 64bit 2.6.30 kernel
>> using 32bit userland, and that does not work, in dmesg I see:
>>
>> ioctl32(xfs_growfs:24426): Unknown cmd fd(3) cmd(400c586e){t:'X';sz:12} arg(ffa56df4) on /mnt
>> ioctl32(xfs_growfs:24427): Unknown cmd fd(3) cmd(400c586e){t:'X';sz:12} arg(ff991254) on /mnt
>>
>> so apparently there's no compat_ioctl layer for these ioctls.
>>
>> Are there any plans to add these? :)
>
> Are you sure you're testing 2.6.30?  The copat ioctls were added in
> 2.6.28.

On a slightly related note: I also have a system with a 32bit userland
and a 64bit kernel.
After switching to the 64bit kernel, xfs_fsr was no longer working,
but that was caused by the then still missing compat ioctls.

Today I retried it, but it still fails:
XFS_IOC_SWAPEXT failed: ino=<number>: Invalid argument

Looking at the compat code SWAPEXT looks somewhat suspicious:

fs/xfs/linux-2.6/xfs_ioctl32.h defines XFS_IOC_SWAPEXT_32, but I can't
find a single place where this is used.
And in the big switch of xfs_compat_ioctl() the value XFS_IOC_SWAPEXT
is surrounded by contants that all end in 32.

I don't have any experience with the linux ioctl code, I only read
fs/xfs/linux-2.6/xfs_ioctl32.c, but for my untrained eye it looks like
there is a _32 missing.

Or am I misreading this completely?

Torsten




More information about the xfs mailing list