Messages in this thread | | | Date | Fri, 06 Jul 2007 09:30:43 -0700 | From | "H. Peter Anvin" <> | Subject | Re: Too verbose compat_ioctl messages? |
| |
Geert Uytterhoeven wrote: > > Fuse-san discovered that running the umount that's part of busybox on a PS3 > with a recent kernel causes an error message to be printed on the console: > > | ioctl32(busybox:1340): Unknown cmd fd(3) cmd(00004c01){t:'L';sz:0} arg(00000000) on /dev/sda1 > > On older kernels (e.g. 2.6.16), this doesn't happen. > > It can easily be reproduced by installing busybox and running > > | busybox umount /mountpoint > > on a mounted filesystem (except when using the loop device). > > Apparently Busybox uses the LOOP_CLR_FD ioctl when unmounting a file system, > which is supported by the loop device only. > On other block device types, this ioctl is not supported: > - With a 64-bit application, the block layer returns ENOTTY (Inappropriate > ioctl for device), while the SCSI layer returns EINVAL (Invalid argument) > - With a 32-bit application, the compat_ioctl code returns EINVAL (Invalid > argument) and prints an error on the console (for the first 50 > occurrencies, cfr. fs/compat_ioctl.c:compat_sys_ioctl()) > > As I understand, compat_ioctl_error() is used to inform the user about ioctl > values that are not yet handled by the compat_ioctl layer. However, LOOP_CLR_FD > doesn't need to be handled (no data to convert between 32-bit and 64-bit), and > it's perfectly valid for a block device to not implement it. > So it's confusing to print this error message. > > Is there anything we can do about this? >
For one thing, it looks like we're returning the wrong thing (EINVAL rather than ENOTTY) across the board. This was unfortunately a common misunderstanding with non-tty-related ioctls in the early days of Linux.
-hpa - 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/
| |