Re: xfs compat_ioctl?

From: Torsten Kaiser
Date: Mon Aug 31 2009 - 14:15:11 EST


On Mon, Aug 31, 2009 at 2:30 PM, Christoph Hellwig<hch@xxxxxxxxxxxxx> 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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/