Date: Thu, 5 Jul 2001 10:49:17 -0500 From: Dan Nelson <dnelson@emsphone.com> To: Bill Moran <wmoran@iowna.com> Cc: Dale Hagglund <rdh@best.com>, freebsd-questions@freebsd.org Subject: Re: SCSI bad block remapping Message-ID: <20010705104917.A6471@dan.emsphone.com> In-Reply-To: <3B4482DC.C3CF1B6C@iowna.com> References: <3B327713.46173EC5@iowna.com> <863d8curun.fsf@ponoka.battleriver.com> <20010704205514.A13653@dan.emsphone.com> <86pubfubp7.fsf@ponoka.battleriver.com> <3B4482DC.C3CF1B6C@iowna.com>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
In the last episode (Jul 05), Bill Moran said:
> Dale Hagglund wrote:
> > Since this piqued my interest, I tracked down the horse's mouth.
> > According to the the SCSI-3 Block Commands specification, when a
> > REASSIGN BLOCKS command is issued the data contained in blocks
> > being remapped may be modified. Also, the command can fail because
> > it needs to remap a larger region than the one specified. However,
> > from the documentation of AWRE and ARRE, it appears that blocks are
> > reassigned automatically only if the drive firmware can recover the
> > data.
> >
> > It looks like the upshot is that you can, as you suggested, turn on
> > automatic sector remapping without fear of silent data loss.
>
> This is good to know. Thank you for taking the time to look into the
> specs for us, Dan. Now that I know that it is safe to turn on sector
(Dale?)
> remapping, I still don't know _how_ to do it. I'm also still curious
> about what's going on with a drive that crashes because of bad
> sectors one day, and then (once reformatted) runs with no problems
> for over a week (and still running ...)
A couple years ago, I wrote a script to check the WCE bit of SCSI
drives. Here's the same script modified a bit to check ARRE and AWRE,
plus the original for good measure :)
--
Dan Nelson
dnelson@emsphone.com
[-- Attachment #2 --]
#! /bin/sh
echo Checking SCSI drives for auto reallocation:
numbad=0
# get a list of direct-access devices known to the system
units=$(camcontrol devlist | sed -n -e "/,da[0-9]*/s/.*,da\(.*\))/\1/p")
for i in $units
do
result="$(camcontrol modepage da$i -m 1 -P 3 2> /dev/null | grep '^A.RE .*: 0' )"
if [ "$result" != "" ] ; then
camcontrol devlist | grep ",da${i})"
echo "$result"
echo
numbad=$(($numbad + 1))
fi
done
if [ $numbad -gt 0 ] ; then
s=
[ $numbad -ne 1 ] && s=s
echo "\
$numbad device$s with ARRE or AWRE unset. To reset, run
\"camcontrol modepage <device> -e -P 3 -m 1\"
where <device> is the disk (i.e. da0), and set AWRE and ARRE to 1."
else
echo "All drives are OK"
fi
[-- Attachment #3 --]
Date: Wed, 14 Oct 1998 23:19:26 -0500
From: Dan Nelson <dnelson@emsphone.com>
To: Julian Elischer <julian@whistle.com>,
"Justin T. Gibbs" <gibbs@plutotech.com>
Cc: Terry Lambert <tlambert@primenet.com>, Don.Lewis@tsc.tdk.com,
freebsd-fs@FreeBSD.ORG, freebsd-scsi@FreeBSD.ORG
Subject: Re: filesystem safety and SCSI disk write caching
Message-ID: <19981014231925.A18446@emsphone.com>
References: <199810140518.XAA15040@pluto.plutotech.com> <Pine.BSF.3.95.981014105142.2872Q-100000@current1.whistle.com>
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary=HlL+5n6rz5pIUxbD
X-Mailer: Mutt 0.94.3i
In-Reply-To: <Pine.BSF.3.95.981014105142.2872Q-100000@current1.whistle.com>; from "Julian Elischer" on Wed Oct 14 11:08:05 GMT 1998
X-OS: FreeBSD 2.2.7-STABLE
X-Keywords:
X-UID: 1962
--HlL+5n6rz5pIUxbD
Content-Type: text/plain; charset=us-ascii
In the last episode (Oct 14), Julian Elischer said:
> Hey everybody..
> look, we're in violent agreement here but haven't noticed it....
>
> 7/ to allow for this to be achieved easily, there should be an easy
> way to ensure that the write cache is turned off. Possibly as simple
> as a good example in camctl.8 .
I humbly submit the following script, to be added to /etc/security, or
periodic/weekly, /etc/rc, or wherever. It's dependant on the exact
output of "camcontrol inquiry" and "camcontrol modepage", but does the
job.
-Dan Nelson
dnelson@emsphone.com
--HlL+5n6rz5pIUxbD
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=cachecheck
#! /bin/sh
echo Checking SCSI drives for write-cache:
numbad=0
# get a list of direct-access devices known to the system
units=$(camcontrol devlist | sed -n -e "/,da[0-9]*/s/.*,da\(.*\))/\1/p")
for i in $units
do
result=$(camcontrol modepage -m 8 -P 3 -u $i 2> /dev/null | grep WCE)
if [ "$result" = "WCE: 1 " ] ; then
camcontrol devlist | grep ",da${i})"
numbad=$(($numbad + 1))
fi
done
if [ $numbad -gt 0 ] ; then
s=
[ $numbad -ne 1 ] && s=s
echo "
$numbad device$s with WCE set. To reset, run
\"camcontrol modepage -e -P 3 -m 8 -u <unit>\"
where <unit> is the disk number (i.e. da0 is unit #0), and set WCE to 0."
fi
echo
--HlL+5n6rz5pIUxbD--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010705104917.A6471>
