block/raw-posix: Linux compat-ioctl warning workaround
authorJohannes Stezenbach <js@sig21.net>
Wed, 29 Jun 2011 14:25:17 +0000 (16:25 +0200)
committerKevin Wolf <kwolf@redhat.com>
Tue, 5 Jul 2011 09:23:29 +0000 (11:23 +0200)
commitdc35e6b0765b6a7ac7f3a0f4afc4f5cac3830a60
tree4f2eb6addc2c333eec2469782c4d1a9f8e355db2
parentcbe16fc1b594572ec2cbbf5c2c3ee7a9012d60af
block/raw-posix: Linux compat-ioctl warning workaround

On Linux x86_64 host with 32bit userspace, running
qemu or even just "qemu-img create -f qcow2 some.img 1G"
causes a kernel warning:

ioctl32(qemu-img:5296): Unknown cmd fd(3) cmd(00005326){t:'S';sz:0} arg(7fffffff) on some.img
ioctl32(qemu-img:5296): Unknown cmd fd(3) cmd(801c0204){t:02;sz:28} arg(fff77350) on some.img

ioctl 00005326 is CDROM_DRIVE_STATUS,
ioctl 801c0204 is FDGETPRM.

The warning appears because the Linux compat-ioctl handler for these
ioctls only applies to block devices, while qemu also uses the ioctls on
plain files.  Work around by calling fstat() the ensure the ioctls are
only used on block devices.

Signed-off-by: Johannes Stezenbach <js@sig21.net>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block/raw-posix.c