From: "Norman Diamond" <ndiamond@wta.att.ne.jp>
To: "Hans Reiser" <reiser@namesys.com>,
"Wes Janzen" <superchkn@sbcglobal.net>,
"Rogier Wolff" <R.E.Wolff@BitWizard.nl>,
"John Bradford" <john@grabjohn.com>,
<linux-kernel@vger.kernel.org>, <nikita@namesys.com>,
"Pavel Machek" <pavel@ucw.cz>,
"Justin Cormack" <justin@street-vision.com>,
"Russell King" <rmk+lkml@arm.linux.org.uk>,
"Vitaly Fertman" <vitaly@namesys.com>,
"Krzysztof Halasa" <khc@pm.waw.pl>
Subject: Re: Blockbusting news, results are in
Date: Sun, 19 Oct 2003 11:16:42 +0900 [thread overview]
Message-ID: <1c6401c395e7$16630d00$3eee4ca5@DIAMONDLX60> (raw)
In order of importance instead of chronology:
In the presence of friends who are disk drive engineers at Toshiba, I tried
to read the file containing the bad block, we listened to the disk drive do
auto-retries, we watched Linux record the I/O failure in the system log, we
saw the "cp" program report an I/O error, and we observed that the drive did
not reallocate the bad block during reads.
Next, I tried to write the bad block. The following command is not the
first one that I tried but it was the first one to actually try writing the
bad block:
dd if=/dev/zero of=/dev/hda bs=512 seek=19021881 count=1
We listened to the disk drive do auto-retries, we watched Linux record the
I/O failure in the system log, we saw the "dd" command report an I/O error,
and we observed that the drive did not reallocate the bad block during
writes. (The bad block number is 19021882.)
After a few other experiments, I used smartctl to direct the drive to do a
long self-test. When it completed, we observed that the drive had
self-diagnosed a read failure on the same bad sector number as always, and
we observed that the drive did not reallocate the bad block during long
self-tests.
Does anyone need more?
A partial solution could be to stop using Toshiba drives, but I don't think
this will be a complete answer. Toshiba is not the only maker whose disk
drives get bad blocks. We do not know if Toshiba is the only maker whose
firmware refuses to reallocate bad blocks when permanent errors are
detected, because the makers aren't saying.
File systems must maintain lists of bad blocks and prevent ordinary file
operations from ever using those sector numbers.
Someone pointed out that this technique will not work for swap partitions.
I agree. The "mkswap" command needs to test every sector in the swap
partition and warn the user if the partition will be unusable.
Now for the less important stuff.
After many hours of "find"ing and "cp"ing files to /dev/null, the bad block
was detected to be in file
/usr/share/locale/es/LC_MESSAGES/bfd.mo
So indeed, this file had been written once and was not intended to be
written again, and could easily be restored from a source of good data. But
I was really startled by this, because I don't use Spanish locales. The
only locales I use are Japanese and English. So why did this file even get
read, even while I was doing kernel compiles and stuff like that? After
all, the reason the bad block was getting logged in the system log was that
the file was getting read.
I "mv"ed the file to file /badblockhere and used rpm with --replacepkgs to
reinstall binutils from SuSE's 8.2 distribution. Then copied the new
correct file /usr/share/locale/es/LC_MESSAGES/bfd.mo to file /goodfilehere.
This preparation made it easy to do experiments with my Toshiba friends when
they visited.
My first attempt to write the bad block (after the read experiments) was:
dd if=/goodfilehere of=/badblockhere
But this did not even try to write to the bad block. The drive did not try
to do any auto-retries, there were no errors in the system log, and the dd
command output a success message. Next, a repeat of a read attempt that
used to fail:
cp /badblockhere /dev/null
succeeded. So I guess that the when the dd command is told to output to an
ordinary file, it does not overwrite its output file, it creates a new file
and then renames it to replace the old file. (Too bad it couldn't do the
same when I ran this command:
dd if=/dev/zero of=/dev/hda bs=512 seek=19021881 count=1
and write a new disk drive to replace the old one ^u^)
And now that block is in free space somewhere, waiting for Linux and the
Reiser filesystem to allocate it when creating or expanding some future
file.
The bad block can still be detected. This fails as always:
dd if=/dev/hda of=/dev/null bs=512 skip=19021881 count=1
(The bad block number is 19021882.)
By the way, Toshiba's US subsidiary has indications on their web site that
they provide warranty service on their products, but that they have reduced
the warranty period from three years to one year. This was a smart move by
Toshiba's US subsidiary. If their disk drives start to develop bad blocks
after two years, then customers don't discover how bad Toshiba's firmware is
until two years have passed, and now they can't even make claims to get
firmware fixed.
Toshiba's head office is even smarter. In Japanese they refuse entirely to
provide warranty service to end users. Customers have to send defective
disk drives back up through the sales channel. Well, lucky customers who
bought the disk drive as part of a notebook computer probably get one year's
warranty from the vendor of the notebook computer, so if they're lucky
enough to learn about Toshiba's firmware within a year then they can send
their entire computer back for some length of time to get warranty service.
But anyone who went to Akihabara and bought the drive by itself from a parts
store, the store probably offers one week or one month to replace a failing
drive if it was dead on arrival. In these cases a customer who learns about
Toshiba's firmware after two weeks or five weeks gets screwed.
My disk drive was made at Toshiba's factory in Gifu prefecture on September
13, 2001. Since that time the factory has closed and this model has been
discontinued.
But Toshiba isn't the only maker who isn't saying how bad their firmware is.
We need those bad block lists. They are as necessary as they ever were.
next reply other threads:[~2003-10-19 2:18 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-10-19 2:16 Norman Diamond [this message]
2003-10-19 4:15 ` Larry McVoy
2003-10-19 5:00 ` Paul
2003-10-19 8:19 ` Andre Hedrick
2003-10-19 8:08 ` Hans Reiser
2003-10-19 8:35 ` William Lee Irwin III
2003-10-19 20:01 ` Pavel Machek
2003-10-19 20:11 ` William Lee Irwin III
2003-10-20 7:24 ` John Bradford
2003-10-19 22:49 ` jw schultz
2003-10-20 7:22 ` John Bradford
2003-10-20 8:22 ` jw schultz
2003-10-20 7:27 ` Hans Reiser
2003-10-20 8:08 ` jw schultz
2003-10-19 19:49 ` Pavel Machek
2003-10-20 7:22 ` Hans Reiser
2003-10-21 10:31 ` Eric W. Biederman
2003-10-21 8:43 ` Jan-Benedict Glaw
2003-10-19 7:37 Mudama, Eric
2003-10-19 8:09 ` Norman Diamond
2003-10-19 8:24 ` Hans Reiser
2003-10-19 11:43 ` Ralf Baechle
2003-10-19 15:55 ` Krzysztof Halasa
2003-10-19 8:13 ` Rogier Wolff
2003-10-19 8:17 ` Hans Reiser
2003-10-19 8:41 ` Rogier Wolff
2003-10-20 15:56 ` Thayne Harbaugh
2003-10-19 8:21 ` Andre Hedrick
2003-10-19 8:27 ` Hans Reiser
2003-10-19 9:01 ` Erik Andersen
2003-10-19 14:10 ` Andre Hedrick
2003-10-19 18:16 ` Hans Reiser
2003-10-19 19:44 ` Andre Hedrick
2003-10-20 7:21 ` Hans Reiser
2003-10-19 14:42 ` Valdis.Kletnieks
2003-10-19 10:47 ` Ingo Oeser
2003-10-19 17:36 Mudama, Eric
2003-10-19 17:39 Mudama, Eric
2003-10-19 17:51 Mudama, Eric
2003-10-20 6:22 ` Rogier Wolff
2003-10-20 14:08 Mudama, Eric
2003-10-20 14:42 ` John Bradford
2003-10-20 15:55 Mudama, Eric
2003-10-20 17:32 ` Hans Reiser
2003-10-21 15:18 Norman Diamond
2003-10-21 19:31 ` Chuck Campbell
2003-10-21 20:05 ` Richard B. Johnson
2003-10-21 20:21 ` Valdis.Kletnieks
2003-10-21 20:31 ` Richard B. Johnson
2003-10-21 21:53 ` Theodore Ts'o
2003-10-22 2:32 ` Valdis.Kletnieks
2003-10-23 17:28 ` Theodore Ts'o
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='1c6401c395e7$16630d00$3eee4ca5@DIAMONDLX60' \
--to=ndiamond@wta.att.ne.jp \
--cc=R.E.Wolff@BitWizard.nl \
--cc=john@grabjohn.com \
--cc=justin@street-vision.com \
--cc=khc@pm.waw.pl \
--cc=linux-kernel@vger.kernel.org \
--cc=nikita@namesys.com \
--cc=pavel@ucw.cz \
--cc=reiser@namesys.com \
--cc=rmk+lkml@arm.linux.org.uk \
--cc=superchkn@sbcglobal.net \
--cc=vitaly@namesys.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome