]> git.baikalelectronics.ru Git - kernel.git/commit
libata: retry FS IOs even if it has failed with AC_ERR_INVALID
authorTejun Heo <tj@kernel.org>
Thu, 14 Jan 2010 07:18:09 +0000 (16:18 +0900)
committerJeff Garzik <jgarzik@redhat.com>
Wed, 20 Jan 2010 19:25:11 +0000 (14:25 -0500)
commit099dca2d4d032b6d80518e0f7734fbecc5784003
tree8631f9b96e6e2d9e846012a62e165ce35e681290
parentd77bea9f5f4d67b6fecff7632c82426137c276d6
libata: retry FS IOs even if it has failed with AC_ERR_INVALID

libata currently doesn't retry if a command fails with AC_ERR_INVALID
assuming that retrying won't get it any further even if retried.
However, a failure may be classified as invalid through hardware
glitch (incorrect reading of the error register or firmware bug) and
there isn't whole lot to gain by not retrying as actually invalid
commands will be failed immediately.  Also, commands serving FS IOs
are extremely unlikely to be invalid.  Retry FS IOs even if it's
marked invalid.

Transient and incorrect invalid failure was seen while debugging
firmware related issue on Samsung n130 on bko#14314.

  http://bugzilla.kernel.org/show_bug.cgi?id=14314

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Johannes Stezenbach <js@sig21.net>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/ata/libata-eh.c