floppy: bail out in open() if drive is not responding to block0 read
authorJiri Kosina <jkosina@suse.cz>
Fri, 10 Jan 2014 01:08:13 +0000 (02:08 +0100)
committerJiri Kosina <jkosina@suse.cz>
Fri, 17 Jan 2014 10:12:06 +0000 (11:12 +0100)
commit7b7b68bba5ef23734c35ffb0d8d82079ed604d33
treed6ce0b6d4b7b4cecf42efa3a227b0d6ed29e12b7
parent8586ea96b4f919a9b38929040bc9ce57c9998fc4
floppy: bail out in open() if drive is not responding to block0 read

In case reading of block 0 during open() fails, it is not the right thing
to let open() succeed.

Fix this by introducing FD_OPEN_SHOULD_FAIL_BIT flag, and setting it in
case the bio callback encounters an error while trying to read block 0.

As a bonus, this works around certain broken userspace (blkid), which is
not able to properly handle read()s returning IO errors. Hence be nice to
those, and bail out during open() already; if block 0 is not readable,
read()s are not going to provide any meaningful data anyway.

Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/block/floppy.c
include/uapi/linux/fd.h