[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <49506E5B.5090604@shaw.ca>
Date: Mon, 22 Dec 2008 22:51:39 -0600
From: Robert Hancock <hancockr@...w.ca>
To: linux-kernel@...r.kernel.org
Cc: Jens Axboe <axboe@...nel.dk>
Subject: Re: Checking a USB drive's capacity
Alan Stern wrote:
> Jens:
>
> As you may know, there are plenty of USB mass-storage devices that
> respond incorrectly to READ CAPACITY: They report the total number of
> blocks instead of the highest block number. As a result, the kernel
> thinks the drive has one more sector than it really does.
>
> So far we have dealt with this problem by means of a blacklist, but
> this gets more and more unsatisfactory all the time. We haven't been
> able to find any other way to cope, since a few devices are so badly
> behaved that they crash hard when you try to access the nonexistent
> "last" sector, requiring a replug or power cycle.
>
> My new idea is to keep in the blacklist only those devices which do
> crash -- a relatively small number. Everything else we should be able
> to detect safely at runtime, by testing if it's possible to read the
> last sector.
>
> The question is, how and where? The logical place for testing the
> capacity is near the end of sd_read_capacity(). However this code runs
> before any media accesses have occurred; the drive might not even be
> spun up yet. Not to mention that it seems strange to read the last
> sector before reading the first!
It seems to me that the safest solution would be to mark USB storage
devices as unsafe for last-sector partition table probing, like some
kind of CAPACITY_DUBIOUS flag, causing it to be skipped on these
devices, at least by default. After all, it would seem quite unusual to
see anything other than a DOS-style partition table on a USB storage
device (or else no partition table at all).
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists